昔書いたコードを眺めていて、当時は違和感はなかったのだけれど、今見ると「あれ?」(@_@;) と思うものがあった。例えば、Python で「与えられた数が 10 未満であるかどうかを調べる関数」が次のように記述されていたとする。
def lessthan10(x): if (x < 10): return True else: return False
上記は次にように書けば 2 行で済む。
def lessthan10(x): return x < 10
ブール型を返す関数をチェックしてブール型を返すというパターンの関数において、他にも同じように冗長に書いているものがいくつかあった。以前は前者の書き方の方が見たときにパッと理解しやすく、後者はシンプルだけれど感覚的に何となく好きになれなかった。
上記をまとめると、
It is alway possible to replace the pattern if (E) {return true;} else {return false;} by the pattern return E;
ところで、なぜ冗長だと気にかかるようになったかと考えてみると、Haskell で同じ関数を書くとするならセクションを使って、
lessthan10 = (< 10)
面倒なので次のようには書かないし、
lessthan10 x = if x < 10 then True else False
ましてや次のようにも書かない。
lessthan10 x = case x < 10 of True -> True otherwise -> False lessthan10 x = case x of x | x < 10 -> True otherwise -> False
嗜好が変わってきたのかなぁ~。言語が思考を規定すると言ったら大袈裟か。。 ^^; やっぱ習慣の引力?
0コメント:
コメントを投稿