- 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」で保存するともっとはちゃめちゃにだめ・・・。
結論、やはり、今んとこ変数名は、英数字とアンダースコアくらいにしておくことが無難ですな。
|
|