Concurrent Clean : for-notation : ガード
ガードを使った構文で
| n <= 0 = return []
という感じのと
| n > 0 r <- next return [x:r]
というものの2通りの書き方を考えているのだけれど、どうしたものか。
2つ目のが必須なのは分かっていて、1つ目の1行で書くという書き方をサポートするかどうかということなのだけれど。
| n <= 0 return []
でもいいかなぁ。
あと、似たようなところで、caseとかどうするかな。
-
-
- -
-
ただ、1つ目のは、
| let f = (<=) in f n 0 = return []
みたいな書き方もできるんだよな。この辺ちゃんとやろうとすると結構面倒。
-
-
- -
-
逆に2つ目は、2行に渡るような条件が書けない。まあ、それは、
b = n <= 0 && n > 10 | b return []
とか書けるけど。
| ( n <= 0 && n > 10 ) return []
みたいに括弧をつけるということにしてもいいけど、そこまですることでもない気がする。
-
-
- -
-
結局、1つ目の書き方をあきらめた。