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

提供:GizmoLabs - だいたい CAD LISP なサイト
(ページの作成: 基本的なところ * リスト、シンボル、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


シンボルと関数の命名規則

  1. 変数シンボルは、次の文字から始まってはならない:
    • # ; " ' ( ) { } . , 0 1 2 3 4 5 6 7 8 9
  2. + または - で始まる変数シンボルは、二文字目に数字を使うことはできない。
  3. 変数名の内部には、以下の文字を除く、どんな文字も許される:
    • " ' ( ) : , 半角スペース
    • これらは、変数シンボルの終りを意味する。
  4. [(左角括弧)で始まり、](右角括弧)で終わるシンボルは、右角括弧を除くどんな文字を含んでもよい。