2012年8月30日木曜日

Haskellで三項演算子のような物を定義する

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

こう書きたい


if-then-elseはなんだか嫌だなぁと。でもガードじゃなくてワンライナーで書きたいなぁと。
出来るのかもしれないが、知らないので。教えて・・・。

>[x>5?1:2 | x <- [1..10]]
>[2,2,2,2,2,1,1,1,1,1]

無理だ


そもそも":"はリストを生成する為の演算子なので上のような書き方はシンタックスエラーで死ぬ。
"1:2"は"1:2:[]"と書け!と怒られる。
なので諦める。":"は諦める。

似非三項演算子


結果こうなった。
x ? (a, b) = if x then a else b
if-thenで返す値とelseで返す値をペアで取る事にした。
使う時はこう
>[(x>5)?(1,2) | x <- [1..10]]
>[2,2,2,2,2,1,1,1,1,1]

やったぜ!

0 件のコメント:

コメントを投稿