Lisp-data-types
提供:Dev Guides
LISP-データ型
LISPでは、変数は入力されませんが、データオブジェクトは入力されます。
LISPデータ型は次のように分類できます。
- スカラー型-たとえば、数値型、文字、記号など
- データ構造-たとえば、リスト、ベクトル、ビットベクトル、文字列。
明示的に宣言していない限り、どの変数もその値として任意のLISPオブジェクトを取ることができます。
ただし、LISP変数のデータ型を指定する必要はありませんが、特定のループ展開、メソッド宣言、および後の章で説明するその他の状況で役立ちます。
データ型は階層に配置されます。 データタイプはLISPオブジェクトのセットであり、多くのオブジェクトはそのようなセットの1つに属する場合があります。
*typep* 述語は、オブジェクトが特定のタイプに属するかどうかを見つけるために使用されます。
*type-of* 関数は、指定されたオブジェクトのデータ型を返します。
LISPのタイプ指定子
型指定子は、データ型のシステム定義のシンボルです。
array | fixnum | package | simple-string |
atom | float | pathname | simple-vector |
bignum | function | random-state | single-float |
bit | hash-table | ratio | standard-char |
bit-vector | integer | rational | stream |
character | keyword | readtable | string |
[common] | list | sequence | [string-char] |
compiled-function | long-float | short-float | symbol |
complex | nill | signed-byte | t |
cons | null | simple-array | unsigned-byte |
double-float | number | simple-bit-vector | vector |
これらのシステム定義型とは別に、独自のデータ型を作成できます。 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)