個人的に Haskell で難しいのはモナドや型などの概念よりも、型クラス宣言や制約などの文法です(制約ってどこに書けて、どこに書けないのかいまいちよくわからない)。「高階関数」の意味が分からないといっても検索すれば済むわけです。でも例えば、
f . g
の意味(関数の合成)が分からない場合、調べようがないわけです。文法(と演算子)は検索できない(あるいはチョー検索しにくい)!!
で、P143で
procChar . ord
と関数の合成がでてくるけど、関数の合成の説明はこの後の章のP154でされていてこれってどうなのよ的な。
あと、第5章で説明されるモナドクラスの定義(P119)は
class Monad m where return :: a -> m a (>>=) :: m a -> (a -> m b) -> m b
なんだけど。モナドクラスのインスタンスは型ではなくて型構築子なのね。つまり、型クラス宣言の構文は「型構築子クラス宣言」としても使えるわけだけど、それが本のどこを読んでもせちゅめいされていないってどうなのよ的な。この〈高階の〉型クラス宣言は、本当はやさしくない『やさしい Haskell 入門』においてさえも(5 型クラスと多重定義で)説明されているのだから、やっぱり説明が必要なところなんじゃないかと。
最近のコメント