Lisp@UNIX版 (585レス)
1-

369: 名無しさん@お腹いっぱい。 [sage] 04/01/11 16:12 AAS
Lisp は詳しくないけど、組み込み言語に Lisp が多く使われているのは、
こんな理由?

1. 実装が比較的簡単 -- sexp
2. 実装を小さく出来る -- 1 と 5 から
3. 実装例が沢山ある -- プログラマなら一度は Lisp もどきを作るとか・・・
4. 表現力が高い -- sexp
5. 拡張しやすい -- macro
6. 言語として枯れている

もちろん言語としての素性も良いし。emacs に関しては、Lisp がエディタを
(絶対的に)必要とするっていう理由もあるかも。
370: 名無しさん@お腹いっぱい。 [sage] 04/01/12 13:12 AAS
簡単な実装は簡単に作れるが しかし本当に使いモノになる処理系を作るのはやっぱ
り難しい。言語的にはお手軽スクリプト用から高性能コンパイラまでカバーしてるけ
ど手軽に作れるのはやっぱり簡易的な処理系だよ。下は↓ム板より転載。

| 133 名前: Greenblatt 投稿日: 03/08/19 21:55
| どこかのハッカーが、どこかのマシンにしがみついて二週間ばかりがんばって LISP を書き、
| 「見てくれ、LISP をものにしたぞ」という。そんなことが何度だってあるだろうさ。だけど、
| それと本当に使い物になるシステムとの間には天地ほどの差があるんだよ。
371: 名無しさん@お腹いっぱい。 [sage] 04/01/12 19:44 AAS
ごく一般的に言って、簡単に作ればそれなりのもの、
徹底的に作ればそれなりのもの、ができるのはあたりまえですな。

んで Lisp、scheme はとくに言語の核を小さく簡単に実装できる
っつーハナシですな。
Lisper、schemer 名乗る上で、そこを抑えているかが本質的な
違いになるわけで。

emacs が lisp である理由のごく一部には AI ラボの残留思念(怨念?)
も感じますな。
372: 名無しさん@お腹いっぱい。 [sage] 04/01/12 23:35 AAS
Lisp の *実用的な処理系* を他の言語と比較して特別簡単につくれるとは思えないがな…。
言語の核が小さいからっては Scheme くらいのを小さいっていってるのかな?
それとも eval, cons, car, cdr ... 程度の話か?
どっちにしても俺のミニマリスト的な部分は Forth のが小さいしシンプルだと告げている。

少なくとも俺は小さいからとか処理系が簡単に実装できるから云々はどーでもいい。
そこそこの性能とマクロとか使って言語仕様をカスタマイズ可能なところが Lisp の魅力。
関数型でもオブジェクト指向でもどっちも OK みたいなマルチパラダイムなところとか
なんでもアリ的な怪しさも好きだ。
373: 名無しさん@お腹いっぱい。 [sage] 04/01/12 23:47 AAS
どうして言語系のスレにはハナシの流れを汲めない香具師が多いんだろう
言語障害?w
374: 名無しさん@お腹いっぱい。 [sage] 04/01/13 00:25 AAS
ANS Forth の仕様書って読んだ事無いけど、R5RS くらいシンプルで
しっかりしてるの?
375
(1): 名無しさん@お腹いっぱい。 [sage] 04/02/05 21:36 AAS
FreeBSD の bootloader も Forth でしたな。謎だ。
loader.4th っていうエクステンションはふつうなの?
376: 名無しさん@お腹いっぱい。 [sage] 04/02/06 20:20 AAS
>>375
なんで?容量その他制限がキツイんだから forth 使うんだろ。
FreeBSD 以外でも Mac 方面の OpenFirmware とか forth だった記憶アリ。
そんなとこで ruby だの perl だの lisp だのを使うほうが珍しい。
377: 名無しさん@お腹いっぱい。 [sage] 04/02/06 20:48 AAS
C でハードコーティングしといてもそれまででと思ったので。
378: 名無しさん@お腹いっぱい。 [sage] 04/03/09 23:07 AAS
保守
379: 名無しさん@お腹いっぱい。 [sage] 04/03/16 01:20 AAS
SPARC マシンの OpenBoot も Forth だね。
380: 名無しさん@お腹いっぱい。 [] 04/03/27 00:26 AAS
そういゑば、UNIX 板にも Lisp スレがあったんだね。自分はマクロの
使い方も分からないけど。

Scheme と Common Lisp のマクロって似た様な感じですか?
381: 名無しさん@お腹いっぱい。 [sage] 04/03/29 00:02 AAS
scheme のは,はじめはめんくらう.
なれるとウマー
382: 名無しさん@お腹いっぱい。 [sage] 04/03/29 06:51 AAS
Scheme の syntax-rules は、単純なのはきれいに書けるよね。
でも、複雑なのがかなり書きにくい気がする。
defmacro に慣れてるせいもあるんだろうけど…
383: 名無しさん@お腹いっぱい。 [sage] 04/03/29 12:03 AAS
R5RS の letrec の定義は激しく…萎える。

某所、復活してる。
384
(1): 名無しさん@お腹いっぱい。 [sage] 04/03/30 16:40 AAS
以前,syntax-rules を使って,例えば六っつの引数を伴うと
(+ 1 1 1 1 1 1 ) ってのに置きかえる,引数数え上げマクロを
作ったんだけど,これって関数定義内とかに使うと 6 って定数だと
解釈されてコンパイルされるんか,それともあくまで
(+ 1 1 1 1 1 1 )をやってんだかどっちだろうな Gauche

macroexpand したら (+ 1 1 1 1 1 1) になってたが,こういう最適化は
コンパイラの仕事だろうから,macroexpand ではチェックした事には
ならんだろうからなぁ…

define-macro を素直につかうべき?
385: 名無しさん@お腹いっぱい。 [sage] 04/03/31 10:41 AAS
syntax-case
386: 名無しさん@お腹いっぱい。 [sage] 04/03/31 14:30 AAS
Gaucheはそういう最適化はしないよ。

> (use gauche.vm.disasm)
> (disasm (lambda () (+ 1 1 1 1 1 1)))
PRE-TAIL(6) ;; (+ 1 1 1 1 1 1)
PUSHI(1)
PUSHI(1)
PUSHI(1)
PUSHI(1)
PUSHI(1)
PUSHI(1)
GREF #<id 0x10342400 user::+>
TAIL-CALL(6)
RET

値がなくなる形で最適化されるのは、値が
捨てられるコンテキストでの定数が削除される
くらいじゃないかしら。
(たとえば(begin 1 2)の1みたいなやつ。)
387: 名無しさん@お腹いっぱい。 [sage] 04/03/31 23:36 AAS
>>384
+ が再定義されるかもしれんから
388: 名無しさん@お腹いっぱい。 [sage] 04/04/01 05:25 AAS
(let ((+ +)) ...)
しておけば再定義は気にしなくていい
389: 名無しさん@お腹いっぱい。 [sage] 04/04/01 12:58 AAS
その let の範囲は全部調べないといけないけどね。
途中で set! するようなこともできるから。

(let ((plus +))
(define (inc x) (plus x 1))
(let* ((one 1)
(two (inc one)))
(set! plus -)
(let ((three (inc two)))
(list one two three))))
=> (1 2 1)

みたいな。
390: 名無しさん@お腹いっぱい。 [sage] 04/04/01 16:19 AAS
disasmおもちろーい
391: 名無しさん@お腹いっぱい。 [sage] 04/04/18 16:39 AAS
M-expression
っていうのが結局何なのか分からんのだけれども、
誰か簡単に説明してくんない?
392: 名無しさん@お腹いっぱい。 [sage] 04/04/18 16:40 AAS
ちなみに
外部リンク:en.wikipedia.org
393
(1): 名無しさん@お腹いっぱい。 [sage] 04/04/19 22:38 AAS
外部リンク:squab.no-ip.com:8080
1-
あと 192 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.026s