関数型プログラミング言語Haskell Part6
■ このスレッドは過去ログ倉庫に格納されています
0560デフォルトの名無しさん
2007/01/23(火) 19:35:24もっと単純な例を挙げる。
foo :: Int -> String -> Bool
という関数があるとする。これはもちろん二引数関数。
括弧を補って丁寧に書くと、この型は次のようになる。(納得できないならカリー化を復習すべし)
foo :: Int -> (String -> Bool)
ここで(String -> Bool)の部分を別名に置き換えても意味は変わらない。
type StringProp = String -> Bool
foo :: Int -> StringProp
こう書くとfooはいかにも一引数関数だけど、型は最初のfooと変わらない。
よって、実装を書く際は引数を二つ使える。例えば、
foo :: Int -> StringProp
foo n s = length s < n
ついでだが、
>関数定義に存在していないのが理解できません。
「update :: Assoc a b -> a -> b -> Assoc a b」みたいなのは型シグネチャといって、
ふつう定義とはいわないと思う。
■ このスレッドは過去ログ倉庫に格納されています