Lisp@UNIX版 (585レス)
上下前次1-新
367: 名無しさん@お腹いっぱい。 [sage] 04/01/10 11:31 AAS
 処理系というか開発環境込みってのが普通だからじゃねーの? 
 elisp とか librep とかは lisp 的にはダメポだけど… 
  
 まぁ漏前が Python 使いや Ruby 使いならば LISP で作られた 
 ものより Python や Ruby で作られたもののほうが拡張性が 
 高いだろう。 
368: 名無しさん@お腹いっぱい。 [sage] 04/01/11 14:38 AAS
 RubyでもEmacsと同じことが出来ますよ、基本的には。 
 1. Rubyでエディタを作る。 
 2. 外部から与えられたRubyのプログラムを素直に実行する機能をつける。 
    (エディタを走らせている当のRubyインタプリタ上で評価する) 
 これだけ。 
 elispはいわゆるマクロ言語ではなく、Emacsにコードを追加しているに等しいの 
 です。 
  
 CやC++で実装され言語処理系を内蔵しないエディタでも、マシン語を与えられて 
 同一プロセス内で実行する手段を提供してあれば同様に拡張性が高いと言えるかも 
 (誰が拡張するんだ、って感じですが)
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 
 っていうのが結局何なのか分からんのだけれども、 
 誰か簡単に説明してくんない? 
上下前次1-新書関写板覧索設栞歴
あと 194 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.008s