HaskellCodingStyle

2004-01-12 18:58:31 +0900 (1785d); rev 3

勝手に Haskell のコーディングスタイルを決めよう

スペース

演算子や「=」のまわりには空白を入れる。

const = 1 + 3 * 5 :: Int

インデント

Haskell は基本的にはインデントでブロックを決める言語なので 選択肢は狭い……かと思いきや意外といろいろあるようだ。 巷にころがっているコード例を見ても、 Python あたりに比べるとバリエーションが多い。

わりとよく見るインデント形式

func = anyFunc arg arg $ otherFunc arg
                                   arg
                                   arg

この方式はやたらとインデントが深くなる。 where が使えるからあまり問題にならない?

if

func = if anyFunc arg arg arg then 0
          else expr1
               expr2
               expr3

then が長いと下に来ることも多い。

case

case cond of
  Just _ -> ....
  Nothing -> ....

「->」は揃えることもあれば揃えないこともある。

そういや case〜○○ って sh みたいだな。 → HaskellAndSh

括弧と「$」

あんまり括弧は使わない。 「$」が使えるところではできるだけ「$」を使う。

where

module Main where

と後ろに書くか

func x y = someFunc a b
           where a = otherF x
                 b = otherF y

と真下に書くか、場合によって適当に使いわける。

型名とコンストラクタ名

data MyType = MyType String Int Int

みたいに、型名とコンストラクタ名は同じにする。 "Haskell: The Craft of Functional Programming" ではわざわざ変えてたけど、同じほうが便利だよねえ。

その他

気がついたら順次追加――


system revision 1.162