「NewLisp」の版間の差分
細 (→日本語)  | 
				編集の要約なし  | 
				||
| (同じ利用者による、間の17版が非表示) | |||
| 1行目: | 1行目: | ||
{{NewLISP}} [[Category:newLISP]]  | |||
newLISP は、Lutz Mueller 氏が開発している LISPライクな汎用スクリプト言語です。  | newLISP は、Lutz Mueller 氏が開発している LISPライクな汎用スクリプト言語です。  | ||
* [[newLisp関数一覧]]  | |||
* [[guiserver.lsp]]  | |||
==Windows で使う場合==  | ==Windows で使う場合==  | ||
| 18行目: | 22行目: | ||
* 新リスプな日々 Johu's さんのブログ (日本語) : http://johu02.wordpress.com/  | * 新リスプな日々 Johu's さんのブログ (日本語) : http://johu02.wordpress.com/  | ||
* 舌足らずなブログ : [http://lisperblog.blogspot.com/2010/02/newlisp.html newLISP基礎文法最速マスター]  | * 舌足らずなブログ : [http://lisperblog.blogspot.com/2010/02/newlisp.html newLISP基礎文法最速マスター]  | ||
* newLISP ファンクラブフォーラム (英語) : http://newlispfanclub.alh.net/  | * newLISP ファンクラブフォーラム (英語) : http://newlispfanclub.alh.net/  | ||
*   | * neglookさんのShell Games (色々と動画があります) : http://www.neglook.com/index.cgi?page=Shell_Games  | ||
* (archive 'newLISPer) : http://newlisper.wordpress.com (parentheses.nfshost.com のアーカイブだそうです。更新されてないけど有益な情報かもしれません。)  | |||
* Dragonfly (newLISP なweb framework だそうです) :   | |||
https://github.com/taoeffect/dragonfly-newlisp  | |||
== 基本的なところ ==  | == 基本的なところ ==  | ||
<div class="mcol2">  | |||
* コメントは ";" か "#" を利用可能。複数行のコメントはない。  | * コメントは ";" か "#" を利用可能。複数行のコメントはない。  | ||
* リスト、シンボル、lambda、式 があるよ。  | * リスト、シンボル、lambda、式 があるよ。  | ||
| 36行目: | 43行目: | ||
  (list 'a 'b)  |   (list 'a 'b)  | ||
  > (a b)  |   > (a b)  | ||
* car, cdr はないよ。代わりに first(≒ car)、rest(≒ cdr)  | |||
* シンボルの例  | * シンボルの例  | ||
| 47行目: | 56行目: | ||
  (set 'f (lambda (n) (+ n n)))  |   (set 'f (lambda (n) (+ n n)))  | ||
  => (lambda (n) (+ n n))  |   => (lambda (n) (+ n n))  | ||
* fn はlambdaの代わりに使えるよ  | |||
  (set 'f (fn (n) (+ n n)))  |   (set 'f (fn (n) (+ n n)))  | ||
  => (fn (n) (+ n n))  |   => (fn (n) (+ n n))  | ||
* lambda はシンボルじゃなくて、特別なリスト扱い  | |||
  (length (lambda (n) (+ n n)))  |   (length (lambda (n) (+ n n)))  | ||
  > 2  |   > 2  | ||
  (first (lambda (n) (+ n n)))  |   (first (lambda (n) (+ n n)))  | ||
  > (n)  |   > (n)  | ||
* lambda 式は無名関数として使われるよね  | |||
  (apply (lambda (n) (+ n n) '(123))  |   (apply (lambda (n) (+ n n) '(123))  | ||
  > 246  |   > 246  | ||
  (map (lambda (n) (+ n n) '(1 2 3))  |   (map (lambda (n) (+ n n) '(1 2 3))  | ||
  > (2 4 6)  |   > (2 4 6)  | ||
* シンボルに lambda 式を定義して関数として使えるよね  | |||
  (set 'double (lambda (n) (+ n n))  |   (set 'double (lambda (n) (+ n n))  | ||
  > (lambda (n) (+ n n)  |   > (lambda (n) (+ n n)  | ||
  (double 123)  |   (double 123)  | ||
  > 246  |   > 246  | ||
* もうちょっと短かく  | |||
  (define (doudle n) (+ n n))  |   (define (doudle n) (+ n n))  | ||
  > (lambda (n) (+ n n)  |   > (lambda (n) (+ n n)  | ||
  (double 123)  |   (double 123)  | ||
  > 246  |   > 246  | ||
</div>  | |||
==真・偽==  | ==真・偽==  | ||
* 真になるもの: 偽になるもの以外。 0や"" 空文字も真。  | * 真になるもの: 偽になるもの以外。 0や"" 空文字も真。  | ||
* 偽になるもの: nil、() 空リスト。  | * 偽になるもの: nil、() 空リスト。  | ||
==シンボルと関数の命名規則==  | ==シンボルと関数の命名規則==  | ||
| 91行目: | 103行目: | ||
  [俺]  |   [俺]  | ||
  *111*  |   *111*  | ||
==日本語==  | ==日本語==  | ||
| 107行目: | 120行目: | ||
  >24  |   >24  | ||
* UTF-8 対応バージョンは、別配布なので別途DLして差し替えて(あるいはUTF-8用でインストールして)使う。  | * UTF-8 対応バージョンは、別配布なので別途DLして差し替えて(あるいはUTF-8用でインストールして)使う。  | ||
2024年5月27日 (月) 22:25時点における最新版
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基礎文法最速マスター
 - newLISP ファンクラブフォーラム (英語) : http://newlispfanclub.alh.net/
 - neglookさんのShell Games (色々と動画があります) : http://www.neglook.com/index.cgi?page=Shell_Games
 - (archive 'newLISPer) : http://newlisper.wordpress.com (parentheses.nfshost.com のアーカイブだそうです。更新されてないけど有益な情報かもしれません。)
 - Dragonfly (newLISP なweb framework だそうです) :
 
https://github.com/taoeffect/dragonfly-newlisp
基本的なところ
- コメントは ";" か "#" を利用可能。複数行のコメントはない。
 - リスト、シンボル、lambda、式 があるよ。
 - リストの例
- '() … 空リスト
 - '(3) … 整数
 - '("こんにちは" "三河屋です") … 文字列2つのリスト
 - '("こんにちは" 2 opt) … 文字列と整数とシンボルのリスト
 - '((a b c) (1 2 3)) … リスト2つのリスト
 - '("こんにちは" "三河屋です") … 文字列2つのリスト
 - ドット対はないよ
 
 
(list 'a 'b) > (a b)
- car, cdr はないよ。代わりに first(≒ car)、rest(≒ cdr)
 
- シンボルの例
- (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 ; utf8じゃない長さだと (length "おれはジャイアン") >24
- UTF-8 対応バージョンは、別配布なので別途DLして差し替えて(あるいはUTF-8用でインストールして)使う。