LISP-データ型
LISPでは、変数は入力されませんが、データオブジェクトは入力されます。
LISPデータ型は次のように分類できます。
Scalar types −たとえば、数字の種類、文字、記号など。
Data structures −たとえば、リスト、ベクトル、ビットベクトル、および文字列。
明示的に宣言していない限り、どの変数もその値として任意のLISPオブジェクトを取ることができます。
LISP変数のデータ型を指定する必要はありませんが、特定のループ拡張、メソッド宣言、および後の章で説明するその他の状況で役立ちます。
データ型は階層に配置されます。データ型はLISPオブジェクトのセットであり、多くのオブジェクトがそのような1つのセットに属している可能性があります。
ザ・ typep 述語は、オブジェクトが特定のタイプに属しているかどうかを見つけるために使用されます。
ザ・ type-of 関数は、指定されたオブジェクトのデータ型を返します。
LISPの型指定子
タイプ指定子は、データ型のシステム定義のシンボルです。
アレイ | fixnum | パッケージ | シンプルストリング |
原子 | 浮く | パス名 | 単純なベクトル |
bignum | 関数 | ランダム状態 | 単精度浮動小数点 |
ビット | ハッシュ表 | 比 | スタンダードチャー |
ビットベクトル | 整数 | 合理的な | ストリーム |
キャラクター | キーワード | 読み取り可能 | ストリング |
[一般] | リスト | シーケンス | [文字列文字] |
コンパイルされた関数 | ロングフロート | ショートフロート | シンボル |
繁雑 | ニル | 符号付きバイト | t |
短所 | ヌル | シンプルアレイ | unsigned-byte |
倍精度浮動小数点 | 数 | 単純ビットベクトル | ベクター |
これらのシステム定義型とは別に、独自のデータ型を作成できます。構造タイプがを使用して定義されている場合defstruct 関数の場合、構造タイプの名前が有効なタイプシンボルになります。
例1
main.lispという名前の新しいソースコードファイルを作成し、その中に次のコードを入力します。
(setq x 10)
(setq y 34.567)
(setq ch nil)
(setq n 123.78)
(setq bg 11.0e+4)
(setq r 124/2)
(print x)
(print y)
(print n)
(print ch)
(print bg)
(print r)
[実行]ボタンをクリックするか、Ctrl + Eと入力すると、LISPはすぐに実行し、返される結果は-です。
10
34.567
123.78
NIL
110000.0
62
例2
次に、前の例で使用した変数のタイプを確認しましょう。mainという名前の新しいソースコードファイルを作成します。lispを実行し、次のコードを入力します。
(defvar x 10)
(defvar y 34.567)
(defvar ch nil)
(defvar n 123.78)
(defvar bg 11.0e+4)
(defvar r 124/2)
(print (type-of x))
(print (type-of y))
(print (type-of n))
(print (type-of ch))
(print (type-of bg))
(print (type-of r))
[実行]ボタンをクリックするか、Ctrl + Eと入力すると、LISPはすぐに実行し、返される結果は-です。
(INTEGER 0 281474976710655)
SINGLE-FLOAT
SINGLE-FLOAT
NULL
SINGLE-FLOAT
(INTEGER 0 281474976710655)