|
|
(同じ利用者による、間の4版が非表示) |
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
| |
|
| |
|
| |
| ==シンボルと関数の命名規則==
| |
|
| |
| # 変数シンボルは、次の文字から始まってはならない:
| |
| #* # ; " ' ( ) { } . , 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して差し替えて使う。
| |