「NewLisp」の版間の差分
細 (→Windows で使う場合) |
(→情報源など) |
||
20行目: | 20行目: | ||
* 紫藤のwiki(日本語) : http://sites.google.com/site/shidoinfo/Home/programing-lang/%E9%96%A2%E6%95%B0%E5%9E%8B%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E/lisp/%E6%A7%98%E3%80%85%E3%81%AAlisp%E6%96%B9%E8%A8%80/newlisp | * 紫藤のwiki(日本語) : http://sites.google.com/site/shidoinfo/Home/programing-lang/%E9%96%A2%E6%95%B0%E5%9E%8B%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E/lisp/%E6%A7%98%E3%80%85%E3%81%AAlisp%E6%96%B9%E8%A8%80/newlisp | ||
* newLISP ファンクラブフォーラム (英語) : http://newlispfanclub.alh.net/ | * newLISP ファンクラブフォーラム (英語) : http://newlispfanclub.alh.net/ | ||
== 基本的なところ == | |||
* コメントは ";" か "#" を利用可能。複数行のコメントはない。 | |||
* リスト、シンボル、lambda、式 があるよ。 | |||
* リストの例 | |||
** '() … 空リスト | |||
** '(3) … 整数 | |||
** '("こんにちは" "三河屋です") … 文字列2つのリスト | |||
** '("こんにちは" 2 opt) … 文字列と整数とシンボルのリスト | |||
** '((a b c) (1 2 3)) … リスト2つのリスト | |||
** '("こんにちは" "三河屋です") … 文字列2つのリスト | |||
** ドット対はないよ | |||
(list 'a 'b) | |||
> (a b) | |||
* シンボルの例 | |||
** (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や"" 空文字も真。 | |||
偽になるもの: nil、() 空リスト。 | |||
==シンボルと関数の命名規則== | |||
# 変数シンボルは、次の文字から始まってはならない: | |||
#* # ; " ' ( ) { } . , 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して差し替えて使う。 |
2010年9月6日 (月) 12:50時点における版
newLISP は、Lutz Mueller 氏が開発している LISPライクな汎用スクリプト言語です。
ちょっと使い込んでみようかなということで、ここは私的なメモとして公開しています。
Windows で使う場合
Windoows用のインストーラからインストールすると、newLISP のIDE用のアイコンが出来るのでそこから使ってもいいし、コマンドプロンプトで newlisp と入力して実行してもいい。 コマンドプロンプトからの利用で、複数行の記述をしたい場合は、
[cmd] (set 'a "a" 'b "bbb") (+ 1 2 3) [/cmd]
といった風に [cmd] [/cmd] で挟んで記述する。 newLISP のIDEを使う場合、上がエディタ(コード)で下がプロンプトになる。[ALT]+R でコードを実行する。
情報源など
- 本家サイト(英語) : http://www.newlisp.org/
- 新リスプな日々 Johu's さんのブログ (日本語) : http://johu02.wordpress.com/
- 舌足らずなブログ : newLISP基礎文法最速マスター
- 紫藤のwiki(日本語) : http://sites.google.com/site/shidoinfo/Home/programing-lang/%E9%96%A2%E6%95%B0%E5%9E%8B%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E/lisp/%E6%A7%98%E3%80%85%E3%81%AAlisp%E6%96%B9%E8%A8%80/newlisp
- newLISP ファンクラブフォーラム (英語) : http://newlispfanclub.alh.net/
基本的なところ
- コメントは ";" か "#" を利用可能。複数行のコメントはない。
- リスト、シンボル、lambda、式 があるよ。
- リストの例
- '() … 空リスト
- '(3) … 整数
- '("こんにちは" "三河屋です") … 文字列2つのリスト
- '("こんにちは" 2 opt) … 文字列と整数とシンボルのリスト
- '((a b c) (1 2 3)) … リスト2つのリスト
- '("こんにちは" "三河屋です") … 文字列2つのリスト
- ドット対はないよ
(list 'a 'b) > (a b)
- シンボルの例
- (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や"" 空文字も真。 偽になるもの: nil、() 空リスト。
シンボルと関数の命名規則
- 変数シンボルは、次の文字から始まってはならない:
- # ; " ' ( ) { } . , 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して差し替えて使う。