Haskell - 文法 - ブロックとレイアウト
- 1. 概要
- 2. ブロック
- 3. レイアウト
1. 概要
複数の実行文を書くには、「{」~「}」で囲んで、「;」で区切る、「C言語」のようなタイプと、ネストによって区切る「Python」のようなタイプの両方が使えるようです。
「C言語」のようなタイプを「ブロック」、「Python」のようなタイプを「レイアウト」というようです。
2. ブロック
ブロックの例を、参考サイトのように書くと。
main = do { putStr "Hello"; putStrLn " World!" }
てな感じになりますが、末尾の実行文だけは、「;」をつけないってのがなじめませんな。
「{」~「}」で囲んでいるので、カラム位置は気にしないでいいわけで。
main = do { putStr "Hello";
putStrLn " World!" }
さらに、「do」の後に続くものを 1行で書くならば、「{」~「}」もいらないそうで。
main = do putStr "Hello"; putStrLn " World!"
と書くこともできるのだそうな。
上記 3 ソースは、すべて支障なく、コンパイルできて、実行結果も同一でした。
「do」のようなもの(?)に「where」「let」「of」があるそうで・・・覚えられるかしら・・・。
3. レイアウト
前項のような複数の実行文を改行しつつ、同一のネストで書くのが、レイアウトだそうで。
main = do putStr "Hello"
putStrLn " World!"
ここ不思議というかなんというか、「do」の後の実行文のネストが同一であればいいそうで。
main = do
putStr "Hello"
putStrLn " World!"
と書くこともできる。
さらに、「引数」(?)も改行してネストさせられるそうで・・・。
main = do
putStr
"Hello"
putStrLn
" World!"
と書くことも可能。
これまた、上記 3 ソースは、すべて支障なく、コンパイルできて、実行結果も同一(前項とも同一)でした。
注意すべきは、これ全て空白は、半角スペースで、タブで飛ばしてはいけない。
タブで文字数を合わせれば、いけるのかどうかは、まだやってみていません(2020年7月28日)。
|
|