Haskell - 文法 - 変数

クラウディア 
1. 概要
2. 変数名
3. 数値型
4. 文字列型
5. Unicode は使わない方がいい

1. 概要

 猿真似でやっているとすぐに行き詰ってくるなぁと思いつつ。  変数の話です。  型があるのかないのかもまだ分かっていませんが、型宣言は特に必要なく、変数に値の定義をしてやれば、勝手に型が付くようです。

2. 変数名

 変数名は、 ・英字の小文字(a~z)か ・「_」(アンダースコア)  で始まって、以降の文字は ・大文字小文字問わず英数字(A~Z、a~z、0~9) ・「_」(アンダースコア) ・「'」(シングルコーテーション) ・Unicode  が許されるそうで、シングルコーテーションや Unicode が許されるのが特異ですな。

3. 数値型

 暗黙で数値型
a = 1
b = 2

main = do 
    print a
    print b



 コンパイル・リンクして、実行すると、こんななります。
sh: /home/hogehoge/lang/haskell/var/var01: not found

4. 文字列型

 暗黙で文字列型
a = "Hello"
b = " World!" 

main = do putStr   a
          putStrLn b
 コンパイル・リンクして、実行すると、こんななります。
sh: /home/hogehoge/lang/haskell/var/var02: not found

5. Unicode は使わない方がいい

 変数名に「Unicode」が使えるんかなと試してみたら。  これは、コンパイルが通って、前項と同じ結果が得られたのですが・・・。
aこれは = "Hello"
bこれも = " World!" 

main = do putStr   aこれは
          putStrLn bこれも

 これをコンパイルすると
aこれは? = "Hello"
bこれも? = " World!" 

main = do putStr   aこれは?
          putStrLn bこれも?

 下記のようにコンパイルエラーになっちゃいました。

$ ghc --make var04.hs
[1 of 1] Compiling Main             ( var04.hs, var04.o )

var04.hs:1:7: error: parse error on input ‘=’
  |
1 | aこれは? = "Hello"
  |       ^
 ファイルを「BOM」つきにしてもだめ。  正確に言えば、「Unicode」でなく、「UTF-8」なんだけど、「Unicode」で保存するともっとはちゃめちゃにだめ・・・。  結論、やはり、今んとこ変数名は、英数字とアンダースコアくらいにしておくことが無難ですな。
earthcar(アースカー)
神戸養蜂場