| 
				     | 
				
| 1行目: | 
1行目: | 
 | 基本的なところ
  |  | 
 | * コメントは ";" か "#" を利用可能。複数行のコメントはない。
  |  | 
 | * リスト、シンボル、lambda、式 があるよ。
  |  | 
 | * リストの例
  |  | 
 | ** '() … 空リスト
  |  | 
 | ** '(3) … 整数
  |  | 
 | ** '("こんにちは" "三河屋です") … 文字列2つのリスト
  |  | 
 | ** '("こんにちは" 2 opt) … 文字列と整数とシンボルのリスト
  |  | 
 | ** '((a b c) (1 2 3)) … リスト2つのリスト
  |  | 
 | ** '("こんにちは" "三河屋です") … 文字列2つのリスト
  |  | 
 | ** ドット対はないよ
  |  | 
 |  (list 'a 'b)
  |  | 
 |  > (a b)
  |  | 
 | 
  |  | 
  | 
 | * シンボルの例
  |  | 
 | ** (set 'text "こんちは") … シンボルに値を割り当て
  |  | 
 | ** text → "こんちは" … シンボルを評価すると"こんちは" 
  |  | 
 | ** mirrorman → nil … 未定義のシンボルを評価すると nil
  |  | 
 | ** (set 'opt1 true 'opt2 nil) … opt1をtrue、opt2 を nil に。
  |  | 
 | ** true → true … true の評価は true (ブーリアンの true)
  |  | 
 | ** nil → nil … nil の評価は nil (ブーリアンの false)
  |  | 
 | * lambda 式 … あるよ
  |  | 
 |  (set 'f (lambda (n) (+ n n)))
  |  | 
 |  => (lambda (n) (+ n n))
  |  | 
 | ** fn はlambdaの代わりに使えるよ
  |  | 
 |  (set 'f (fn (n) (+ n n)))
  |  | 
 |  => (fn (n) (+ n n))
  |  | 
 | ** lambda はシンボルじゃなくて、特別なリスト扱い
  |  | 
 |  (length (lambda (n) (+ n n)))
  |  | 
 |  > 2
  |  | 
 |  (first (lambda (n) (+ n n)))
  |  | 
 |  > (n)
  |  | 
 | ** lambda 式は無名関数として使われるよね
  |  | 
 |  (apply (lambda (n) (+ n n) '(123))
  |  | 
 |  > 246
  |  | 
 |  (map (lambda (n) (+ n n) '(1 2 3))
  |  | 
 |  > (2 4 6)
  |  | 
 | ** シンボルに lambda 式を定義して関数として使えるよね
  |  | 
 |  (set 'double (lambda (n) (+ n n))
  |  | 
 |  > (lambda (n) (+ n n)
  |  | 
 |  (double 123)
  |  | 
 |  > 246
  |  | 
 | ** もうちょっと短かく
  |  | 
 |  (define (doudle n) (+ n n))
  |  | 
 |  > (lambda (n) (+ n n)
  |  | 
 |  (double 123)
  |  | 
 |  > 246
  |  | 
 | 
  |  | 
 | ==真・偽==
  |  | 
 | 真になるもの: 偽になるもの以外。 0や"" 空文字も真。
  |  | 
 | 偽になるもの: nil、() 空リスト。
  |  | 
 | 
  |  | 
 | 
  |  | 
 | ==シンボルと関数の命名規則==
  |  | 
 | 
  |  | 
 | # 変数シンボルは、次の文字から始まってはならない:
  |  | 
 | #*  # ; " ' ( ) { } . , 0 1 2 3 4 5 6 7 8 9
  |  | 
 | # + または - で始まる変数シンボルは、二文字目に数字を使うことはできない。
  |  | 
 | # 変数名の内部には、以下の文字を除く、どんな文字も許される:
  |  | 
 | #*      " ' ( ) : , 半角スペース
  |  | 
 | #*      これらは、変数シンボルの終りを意味する。
  |  | 
 | # [(左角括弧)で始まり、](右角括弧)で終わるシンボルは、右角括弧を除くどんな文字を含んでもよい。
  |  | 
 | * newLISP では適正なシンボル名の例
  |  | 
 |  myvar
  |  | 
 |  A-name
  |  | 
 |  X34-zz
  |  | 
 |  [* 7 5 ()};]
  |  | 
 |  [俺]
  |  | 
 |  *111*
  |  | 
 | 
  |  | 
 | ==日本語==
  |  | 
 | * set-locale で現在のロケールを調べたり、変えられたりする。日本の場合、小数点の記号は標準と一緒の"."。
  |  | 
 |  (set-locale "JPN")
  |  | 
 |  > ("Japanese_Japan.932" ".")
  |  | 
 |  (set-locale "DEU")
  |  | 
 |  > ("German_Germany.1252" ",")
  |  | 
 | * newLISP の UTF-8 対応バージョンにするとUTF8関連の関数が使える。
  |  | 
 |  以下、例
  |  | 
 |  (utf8len "おれはジャイアン")
  |  | 
 |  > 8
  |  | 
 | * UTF-8 対応バージョンは、別配布なので別途DLして差し替えて使う。
  |  |