次へ 前へ 目次へ 佐々木将人の個人ページへ

5 Lispにおけるデータ型

 Lispにもデータ型はありますし,データ型を判別する関数もあります。しかし,データ型があると言っても,これはErlangにデータ型があるというのとは全く別の意味です。型のある言語として最もポピュラーなのはC言語だと思われますが,C言語の場合には,変数のデータ型をあらかじめ宣言しておく必要があり,その宣言と異なるデータ型のデータをその変数に代入しようとすると,コンパイラが途中でエラーを出し,プログラムの実行の前に修正をすることが可能になるわけです。Erlangではデータ型のチェックはプログラム実行時に行うので,Cとは異なりプログラムの実行前に修正することはできませんが,それでもデータ型のチェックをして,一致しなければエラーを出すわけです。
 ところがLispの変数には,そのような制限がありません。変数は宣言せずとも使用できますし,最初に使用した時には値が設定(Lispでは「束縛」と言います。英語ではbindです。)されているとは限りません。そして変数にはどんなデータ型を入れても許されるのです。

 古典的なLispでは,データ型は「リスト」と「アトム」だけでした。リストというのは既に説明したとおり,Lispの基本となるデータ型です。アトムというのは ( と ) ではくるまれていない文字や数字の一連の並びです。(Erlangのアトムより範囲は広いです。)アトムは数値を示す数値アトムと数値を示さない文字アトムとがあります。現代のLispではこの他にも何種類かデータ型を持つものもありますが,「リスト」と「アトム」,「数値アトム」と「文字アトム」は,どのLispでも持っているデータ型となります。

(2023.6.9. 初版)

次へ 前へ 目次へ 佐々木将人の個人ページへ