私は過去に Haskell に手を出していましたが、最近また真剣に取り組んでおり、現実世界の Haskell を読んでいます。彼らが輝かせた例のいくつかは、私にはまだ理解できていません。これでそのような:
myLength [] = 0
myLength (x:xs) = 1 + myLength (xs)
これがどのように機能するのかわかりません。実際に 1 も追加されるのは何ですか? 再帰は、追加できるものをどのように返しますか? 理解できません。
そして、ここにこれがあります:
splitLines [] = []
splitLines cs =
let (pre, suf) = break isLineTerminator cs
in pre : case suf of
('\r':'\n':rest) -> splitLines rest
('\r':rest) -> splitLines rest
('\n':rest) -> splitLines rest
_ -> []
isLineTerminator c = c == '\r' || c == '\n'
これはどのように機能しますか、実際にプレも取り付けられているのは何ですか? case 式の結果がどのように pre に連結できるのかわかりません。これらの関数の評価を詳しく説明してくれる人が必要なだけかもしれません。私は何か非常に重要なものを見逃しているに違いありません。
前もって感謝します!
編集:わかっています、それはコピーと貼り付けの失敗でした。ごめん。
編集 2: 私の混乱は、これらの関数が実際に /returning しているものにあったようです。答えてくれてありがとう、ついにクリックしました!それは有り難いです!