提供:GizmoLabs - だいたい CAD LISP なサイト
					 
					
					
					
					
				
				
				
				
				
				     | 
				     | 
				
| (同じ利用者による、間の12版が非表示) | 
| 1行目: | 
1行目: | 
 | 基本的なところ
  |  | 
 | 
  |  | 
  | 
 | * リスト、シンボル、lambda、式 があるよ。
  |  | 
 | * リストの例
  |  | 
 | ** '() … 空リスト
  |  | 
 | ** '(3) … 整数
  |  | 
 | ** '("こんにちは" "三河屋です") … 文字列2つのリスト
  |  | 
 | ** '("こんにちは" 2 opt) … 文字列と整数とシンボルのリスト
  |  | 
 | ** '((a b c) (1 2 3)) … リスト2つのリスト
  |  | 
 | ** '("こんにちは" "三河屋です") … 文字列2つのリスト
  |  | 
 | * シンボルの例
  |  | 
 | ** (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
  |  | 
		2010年9月6日 (月) 12:49時点における最新版