Concurrent Clean : 遅延評価が便利な点
trivialながら、こういう書き方ができるのは、Cleanが遅延評価だからですね。
f str | size str < 2 = Nothing | isDigit c = Just $ digitToInt c = Nothing where c = str.[1]
つまり、最初の条件が偽なら、cは評価されないのでエラーにならない。だから、cを条件付けを気にせずに宣言できる、ということです。
trivialながら、こういう書き方ができるのは、Cleanが遅延評価だからですね。
f str | size str < 2 = Nothing | isDigit c = Just $ digitToInt c = Nothing where c = str.[1]
つまり、最初の条件が偽なら、cは評価されないのでエラーにならない。だから、cを条件付けを気にせずに宣言できる、ということです。