まずはコメントのコードを解析してみる

duplicate (x:xs) = x `elem` xs || duplicate xs
duplicate _ = False
  • '`'(バッククォート) → 2引数関数を、引数の間に書ける。V(S,C)みたいな関数を、SVCと表記できるということか。
  • elem → elem a [a]で、第2引数のリストに第1引数の要素が存在するかどうかをチェックする。
  • || → これは普通のorですね。
  • _ → ワイルドカード

なるほど。