「トーク:NewLisp」の版間の差分

提供:GizmoLabs - だいたい CAD LISP なサイト
(ページの作成: 基本的なところ * リスト、シンボル、lambda、式 があるよ。 * リストの例 ** '() … 空リスト ** '(3) … 整数 ** '("こんにちは" "三河屋で…)
 
(ページの白紙化)
 
(同じ利用者による、間の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時点における最新版