この節ではアトム(atom)について学びます。 アトムとは、Erlangにおける不変定数です。
簡単に言うのなら、「識別のために用いる記号」のようなものであると言えるでしょう。
アトムは小文字英語から始まり、英数字が続きます。
実際に確認してみましょう。
1> apple.
apple
2> hello_world.
hello_world
アトムはただの記号ですから、それ自体に意味はありません。
様々なものと組み合わせて使う必要があります。
当然のことながら、アトムを変数に代入することも可能です。
3> Atom = atom.
atom
4> Atom = apple.
** exception error: no match of right hand side value apple
5> Atom = atom.
atom
Erlangにおいて、アトム true とアトム false は特別な意味を持ち、 この2つは論理型として働きます。
論理型は、真(true)と偽(false)の2種類の値だけを扱う型です。これはおもに条件演算で利用されます。
他の言語における true と false の感覚で利用しても大丈夫です。
アトムは大域的に有効です。
分散プログラミングを行う際に、あるノードにappleというアトムがあるとすると、
それは別のノードにあるappleというアトムと同一のものだということです。
これは、どのノードの「10」も扱いは同じであることと同じです。
また、小文字以外の文字から始まるアトムは「 ' 」で囲んであげることによってアトムとして扱われます。
6> Apple.
* 1: variable 'Apple' is unbound
7> 'Apple'.
'Apple'
先頭が大文字から始まる場合は、何もつけないとそれは変数として扱われてしまいます。
今回は束縛されていない変数「Apple」を評価しようとしたためエラーが発生しています。
それに対して、引用符「 ' 」で囲んであげたAppleはアトムとして扱われているのでエラーは発生していませんね。
1> is_atom(apple).
true
2> is_atom("hello").
false
> is_boolean(false).
true
> is_boolean(apple).
false
3> atom_to_list(hello).
"hello"
> list_to_atom("apple").
apple