「トーク:NewLisp」の版間の差分
 (ページの作成: 基本的なところ  * リスト、シンボル、lambda、式 があるよ。 * リストの例 ** '() … 空リスト ** '(3) … 整数 ** '("こんにちは" "三河屋で…)  | 
				編集の要約なし  | 
				||
| 42行目: | 42行目: | ||
  (double 123)  |   (double 123)  | ||
  > 246  |   > 246  | ||
==シンボルと関数の命名規則==  | |||
# 変数シンボルは、次の文字から始まってはならない:  | |||
#*  # ; " ' ( ) { } . , 0 1 2 3 4 5 6 7 8 9  | |||
# + または - で始まる変数シンボルは、二文字目に数字を使うことはできない。  | |||
# 変数名の内部には、以下の文字を除く、どんな文字も許される:  | |||
#*      " ' ( ) : , 半角スペース  | |||
#*      これらは、変数シンボルの終りを意味する。  | |||
# [(左角括弧)で始まり、](右角括弧)で終わるシンボルは、右角括弧を除くどんな文字を含んでもよい。  | |||
2010年8月19日 (木) 13:14時点における版
基本的なところ
- リスト、シンボル、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
シンボルと関数の命名規則
- 変数シンボルは、次の文字から始まってはならない:
- # ; " ' ( ) { } . , 0 1 2 3 4 5 6 7 8 9
 
 - + または - で始まる変数シンボルは、二文字目に数字を使うことはできない。
 - 変数名の内部には、以下の文字を除く、どんな文字も許される:
- " ' ( ) : , 半角スペース
 - これらは、変数シンボルの終りを意味する。
 
 - [(左角括弧)で始まり、](右角括弧)で終わるシンボルは、右角括弧を除くどんな文字を含んでもよい。