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
あんまり括弧は使わない。 「$」が使えるところではできるだけ「$」を使う。
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" ではわざわざ変えてたけど、同じほうが便利だよねえ。
気がついたら順次追加――
Related Pages: CodingStyle HaskellPages
system revision 1.162