記号

Last-modified: 2011-05-06 (金) 17:15:06

多くのLISP系言語と同じで、SKILL言語でも記号を扱うことができる。

リテラル表現

特殊フォーム quote を使って表現する。

; 「Tokyo」という印刷名の記号
(quote Tokyo)
または
'Tokyo

比較

eq 関数、または、equal 関数で同一性の比較をできる。どちらの関数でも、記号オブジェクトの生成方法によらず、印字名が同じ場合に t を、さもなくば nil を返す。equal 関数よりも eq 関数のほうが計算コストは安い。また、eq 関数の論理否定を返す neq 関数、equal 関数の論理否定を返す nequal 関数もある。

(setq city 'Tokyo)
(eq city city)
→ t
(eq city 'Tokyo)
→ t
(eq city 'tokyo) ; 大文字・小文字の別は区別される
→ nil
(eq city (stringToSymbol (strcat "To" "kyo")))
→ t
(eq city (stringToSymbol (strcat "Tok" "yo")))
→ t

関数