gksato
よかった。しばらく勉強を進めると、代数的データ型/algebraic data type/
data
というのに出会うと思うので、そうしたらもっと良く理解できると思います。data
というのに出会うと思うので、そうしたらもっと良く理解できると思います。data List a = [] | (:) a (List a)
:
はただのコンストラクタdata MyList a = Nil | Cons a (MyList a)
instance
の行の後の v
などの定義は慣習上インデントしたほうが読みやすいです。{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE UndecidableInstances #-} -------------------- class C a where f :: a -> a f x = x instance C Int v = f (3 :: Int) -------------------- class C' a where f' :: a -> a f' x = x instance Num a => C' a v' = f' 3
v
や v'
はメソッドだと思ってました。v' :: Num p => p v' = f' 3
v'
に型注釈を入れる方法が確実でおすすめです。NoMonomophismRestriction
という言語拡張を有効にする、というてもありますが。:
とは何のことですか。