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日)。

audiobook.jp
AbemaTV 無料体験
葬送のフリーレン Prime Video
EMEET 1
U-NEXT
アフィリエイトのアクセストレード
サウンドハウス
JETBOY
健康サポート特集
【usus ウズウズ】
それがだいじWi-Fi
ハイスピードプラン
ベルリッツ
EaseUS
5G CONNECT
TikTok Shop 【リピート用プログラム】
ネットオークションの相場、統計、価格比較といえばオークファン
損保との違い
薬屋の独り言
Amazonギフトカード
earthcar(アースカー)