引数の順序

2006年6月16日
1 分

cf. 結城浩のHaskell日記 - type宣言 とりとめもない話なんだけど。 エントリのなかに isPrefixOf という関数がでてくる。

xs `isPrefixOf` ys

は文字列 xs が ys のプレフィックスである時に True を返すんだけど,この xs と ys の順序について。 上のように中置形式で書くという前提なら,「xs が ys のプレフィックスのとき True」というのは素直に納得できる。 じゃあ,普通に関数名を前に置いて書いたらどうか。

isPrefixOf xs ys

これって見た目には,どちらかというと「ys が xs のプレフィックスのとき True」,つまり中置き形式のときとは逆じゃないかな。さらに,部分適用してこんな関数を考えてみるとなおさらそんな気がする。

isPrefixOfXS = isPrefixOf "is it prefix of xs?"

いや,こんな関数はあまり有用には思えないからいい例じゃないんだけど。 前置も中置もどちらもおなじ,というのを合わせて考えると,引数の順序もなんだか悩ましいなぁ,と。