初めてのHaskellコード

人のコード眺めて、読みやすいように名前変換するだけじゃ物足りなくなって、もっとすっきり書けるかなと思った関数を書き直してみました。
longestInはリストのリストの中から一番長いリストを取り出す関数。

import List

longestIn lists = last (sortBy cmp lists)
 where
    cmp x y = compare (length x) (length y)

maximum使って一行で書けないところが口惜しい。lists==[]のとき、nilを返したいが、Haskellnilはない?Nothingか?
等号がある分、若干読みやすくても、やはりLISPと一緒で、関数-引数という前置表現はプログラムとしては読みにくいですね。関数と引数の名前に気を使う。
やっぱりSOV型のプログラミング言語を創出せねば。

追記:
Factorオブジェクト指向にすると、関数型SOV言語になるのか。気持ち悪かった逆ポーランド法が美しく見えて来た。でも括弧がないとますます名前に気を使いそう。前置記法は、カリー化と相まってオブジェクト指向は相性が良さそうにも見えたし。
結局、構文順序問わず、自然言語が素晴らしいのか、それとも、頭が自然言語に染まっているだけなのか。うーん。