Concurrent Clean : 遅延評価が便利な点

trivialながら、こういう書き方ができるのは、Cleanが遅延評価だからですね。

f str
    | size str < 2 = Nothing
    | isDigit c    = Just $ digitToInt c
                   = Nothing
  where
    c = str.[1]

つまり、最初の条件が偽なら、cは評価されないのでエラーにならない。だから、cを条件付けを気にせずに宣言できる、ということです。