2016-08-27 6 views
0

5行目にインデントエラーが含まれていないのはなぜですか?コンパイル時に解析エラーが発生することが予想されました。私は、5行目+が考慮すべきそこにはブロックがありませんので、それはコンパイル4.なぜこの誤ったインデントがhaskellではありませんか?

module Learn where 

x = 10 
    * 5 
+ y -- why isn't this incorrect indentation 

myResult = x * 5 

y = 10 

答えて

4

ラインに*の下に整列されなければならないことを期待しました。

where,let,do,case ofの後にのみインデントが起こります。 これらのキーワードは物事のブロックを開始し、行が前のエントリを継続するか、新しいエントリを開始するか、またはブロックを終了するかを理解することが重要です。

case f 5 of 
    A -> foo 
     32   -- continues the previous entry 
    B -> 12  -- starts a new entry 
+ bar 43   -- ends the case 

=後、私たちは、エントリにブロックを分割する必要はありません。唯一つの式があります。したがって、indentation rulesは適用されません。

1

xの定義がすべてxの先頭にあるため、これがコンパイルされます。 xの右側にインデントされている限り、各行の開始位置は重要ではありません。

関連する問題