Haskell indentation rulesによれば、 ""の式の一部であるコードは、その式の先頭よりさらにインデントされるべきである。 "。しかし、私は上記の規則に違反しているようだこれは、次の例を見つけ、任意のエラーや警告なしでコンパイル:if-then-elseに対するHaskell字下げ規則の違反
someFunction :: Bool -> Int -> Int -> Int
someFunction condition a b = if condition
then a - b
else a + b
ここで私は機能someFunction
を定義しています、その本体はif-then-else
ブロックです。字下げ規則によれば、then
ブロックは、最初の行の同じ式の一部であるため、前の行よりもインデントされている必要があります。しかし私の例では、2番目の行then
は最初の行と同じ列から始まり、この例はコンパイルされます。
ここで何が起こっているのかわかりません。私はGHCバージョン8.0.1で作業しています。
命令的なコードでは、私は 'condと\ nfoo \ nelse \ nbar'スタイルの美しさにしか耐えることができません。ありがとうございました。 – luqui