周知のとおり, Haskell はいわゆるインデントでブロックを表す, オフサイドルールを採用した言語である. しかしながら, どこでどの程度インデントすればよいのかについては, みんななんとなく雰囲気で書いているようである. じつはこれについては Haskell 2010 で厳格に定義されており, Layout と呼ばれている. Layout は, 簡単にいえば特定の箇所に {, }, ; などを自動的に挿入する仕組みで, 字句解析のあと, 構文解析のまえに処理される. 2.7 Layout から引用すると, module AStack( Stack, push, pop, top, size ) where data Stack a = Empty | MkStack a (Stack a) push :: a -> Stack a -> Stack a push x s = MkSt