ありがとう、
error: parse error on input `::'
union' :: Set a -> Set a -> Set a
は、このような愚かな過ちのための私を許しますが任意の助けいただければ幸いです比較して、 '::'の構文解析エラーを引き起こす何かを見つけるかもしれません。
import Data.List
data Set a = Set [a]
union' :: Eq a => Set a -> Set a -> Set a
union' (Set xs) (Set []) = Set xs
union' (Set []) (Set ys) = Set ys
union' (Set (x:xs)) (Set ys)
| not $ x `elem` ys = cons (Set [x]) (union' (Set xs) (Set ys))
| otherwise = union' (Set xs) (Set ys)
cons (Set xs) (Set ys) = Set (xs ++ ys)
instance Show a => Show (Set a) where
show (Set xs) = show xs
次私は、ソースコードを修正するために始めたとき、私がぶつかったものです:
あなたはガードの前に「=」置く必要はありません「|」
ガード '|'のスペースが均等にインデントされている必要があります。
2番目のガード式に '='がありません。
代わりに労働組合の組合と呼ばれる
すべてのパターンマッチングのための設定 『」あなたはつもりです
は、あなたのデータ型のコンストラクタを必要とします』。 (またはSetコンストラクタをアンパックするためのラッパー関数と、2つのリストを渡すヘルパー関数)このようにして、あなた自身の短所を作る必要はないかもしれません。 :)
また、unionの結果を表示するためのSetのshowインスタンス。
最終的にコンパイラを信頼すれば、最終的にはすべてうまくいくはずです!がんばろう!
完全なエラーメッセージは何ですか? – melpomene
あなたの型宣言は 'union''(union prime)という関数のためのものですが、あなたの関数は' union'と呼ばれます - それは関連していないかもしれませんが、とにかくそれをクリーンアップしたいかもしれません。 –
['notElem'](http://hackage.haskell.org/package/base-4.10.0.0/docs/Prelude.html#v:notElem)は、btwです。 – melpomene