[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/09 19:46 / Filesize : 220 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Lisp Scheme Part17



1 名前:デフォルトの名無しさん [2007/04/20(金) 19:41:39 ]
Lisp全般のスレです

過去スレ
Part16: pc11.2ch.net/test/read.cgi/tech/1172404795/
Part15: pc10.2ch.net/test/read.cgi/tech/1151025773/
Part14: pc8.2ch.net/test/read.cgi/tech/1132275726/
Part13: pc8.2ch.net/test/read.cgi/tech/1115901841/
Part12: pc8.2ch.net/test/read.cgi/tech/1100229366/
Part11: pc5.2ch.net/test/read.cgi/tech/1091456033/
Part10: pc5.2ch.net/test/read.cgi/tech/1075630259/
Part9: pc2.2ch.net/test/read.cgi/tech/1069594582/

http://が多すぎるらしいので分割

720 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 13:05:28 ]
fold-right-with-index(仮称)があればreverseしなくていいのにね。


721 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 13:29:05 ]
fold-rightはある意味reverse以上のコスト


722 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 13:41:43 ]
【問題】 >>713を不完全リスト(最後のcdr部がアトム)に対しても
適用できる様にexclude-nthを拡張せよ
ex.)
(exclude-nth 2 '(0 1 2 . 3)) => (0 1 . 3)
(exclude-nth 3 '(0 1 2 . 3)) =>(0 1 2)
(exclude-nth 4 '(0 1 2 . 3)) =>(0 1 2 . 3) ;; 同値

723 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 13:59:22 ]
やってみました。あってる?
(define (exclude-nth n ls)
(cond ((null? ls) '())
((= n 0) (if (not (pair? ls)) '()
(cdr ls)))
((not (pair? ls)) ls)
(else (cons (car ls)
(exclude-nth (- n 1) (cdr ls))))))

724 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 14:21:52 ]
つきあってくれてありがとう。
多分合ってる。
用意してた答えはコレ

(define (exclude-nth n l)
(let loop ((n n)(r '()) (l l))
(if (pair? l)
(loop (- n 1) (if (= n 0) r (cons (car l) r)) (cdr l))
(if (null? l)
(reverse r)
(if (= n 0)
(reverse r)
(apply list* (reverse (cons l r))))))))
我ながらapply list* reverseは美しくないよな・・

725 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 14:28:04 ]
それって破壊もlist*も使わずに末尾再帰で書ける?

726 名前:723 mailto:sage [2007/07/04(水) 14:30:40 ]
named-letでもやってみたんだけど、いまいち自信がないというか…。
(define (exclude-nth n ls)
(let loop ((ls ls) (n n) (acc '()))
(cond ((null? ls) (reverse! acc))
((= n 0) (if (not (pair? ls))
(reverse! acc)
(loop (cdr ls) (- n 1) acc)))
((not (pair? ls)) (append (reverse! acc) ls))
(else (loop (cdr ls) (- n 1) (cons (car ls) acc))))))


727 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 14:33:34 ]
list*相当を作っちまえば・・
(define (apply-list* l)
(define (loop l)
(if (and (pair? l) (pair? (cdr l)))
(cons (car l) (loop (cdr l)))
(car l)))
(loop l))
って、これは末尾再帰じゃないしな

>>726
appendすりゃよかったのね

728 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 23:17:00 ]
>>709
λとlambdaが等価じゃないところ1つ見つけた
λxyz.E = λx.λy.λz.E
(lambda (x y z) E) ≠ (lambda (x) (lambda (y) (lambda (z) E)))
他にどんな違いがあるかなぁ



729 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 23:50:27 ]
チューリング完全を実現するのに必要な
最低限のデータ構造って何だろう。
リストが使えないとダメなのかな?

730 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 23:59:27 ]
例えば配列があればリストは作れる。チューリング機械の定義により何かの記憶機構は必要。

731 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 00:13:14 ]
SKだけでチューリング完全なのに
純Lisp5関数でチューリング完全じゃない(?)のは不思議
eqやatomがTやNILを返すんじゃなくて
carとcdrを返すなら何とかなりそうな気もする
関数を返す関数くらいは必要な気がする

732 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 00:16:37 ]
>>713
CL loop マクロは見易いと思う。
(defun exclude-nth (n l)
(loop for x in l and idx from 0 if (/= idx n) collect x))
だけど >>722 の不完全リストだと書けないかな。

733 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 00:57:12 ]
>>729
整数が1つあれば十分だろ。コンピュータのメモリなんて見方によっては
ものすごく桁数が多い1つの2進数なんだし。


734 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 00:59:48 ]
でもそれって結局、無限長の配列を仮定してることにならないかだぜ?

735 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 01:04:59 ]
無限長の配列でも一つの整数でも同じことだろ。
どちらか片方あればもう片方が表現できる。

736 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 01:19:56 ]
lispマシンってメモリアドレスって有ったんだろうか?

737 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 01:41:20 ]
>>736
Symbolics社のはタグ付きアーキだったってC-FAQに書いてあった
だからポインターが数値でない

738 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 02:14:33 ]
>>736
なくてどうする



739 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 20:47:56 ]
read-eval-printループのevalの部分を別のコンピュータで実行させるフレームワークみたいなのってない?
作ろうと思えば簡単に出来そうなんだが、誰かやってる人いないかなと思って。

740 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 21:21:17 ]
slime

741 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 21:22:26 ]
>>739
readしないでevalって言うのはできるん?
sexpを通信先のマシンでreplしてるところに食わせるのならslimeがそうじゃない


742 名前:739 mailto:sage [2007/07/07(土) 21:43:31 ]
>>740-741
サンクス

gauche使ってるんだが、gauche.listenerってのを見付けた。
ちょいいじってみる。

743 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 01:23:48 ]
Gaucheでselect使ってサーバー書こうと思ってたんだけど質問。
selectで書き込み可能でも、ソケットバッファを越えたサイズを書き込もうとするとブロックするよね。
unixのwrite(2)ならバッファを全部フラッシュしないからブロックしないように書けるんだけど。
生のwrite(2)をそのままGaucheから呼べないの?

744 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 05:40:22 ]
今はできないんじゃなかったっけな。0.9までになんとかするって話だったと思う。

745 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 06:42:30 ]
>743
サーバ書くモチベをちょっとだけGaucheのソース修正に割くんだ。
そしてうまく動いたらパッチ提供してあげたら喜ばれるんじゃないかな。
ライブラリ作成者側のオナニーテストよりは実アプリによる動作テスト
の方が意味あるだろうし。

746 名前:743 mailto:sage [2007/07/10(火) 09:30:08 ]
>>744-743
了解!

綺麗なソースコードだからちょっといじってみる。
cvs headに比べると、debian etchのやつはだいぶ古いんだな。

今のところはスレッド使う方向に逃げるってのが正解みたいだね。


747 名前:743 mailto:sage [2007/07/10(火) 10:02:44 ]
アンカミスった>>744-745だった

748 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 04:17:03 ]
卒論を書かなきゃ行けないんだけれど、何も思いつかない。
思いついたとしても既に実現されている。
計算機の歴史なんてまだ100年もたっていないのに、
その先行研究の凄さにはひれ伏すしか無い、という
今日この頃の学部生なんですが、何か面白いお題ないですかね?
スペックとしてはCommon Lispが出来るくらいなんですが。
「こんな事やったら面白いんじゃないの?」
とか
「コレが無いから困っている。でもつくるのメンドイ」
っていうの有りませんか?



749 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 09:34:11 ]
>>748
S式で書ける TeX とかどうよ

750 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 15:56:13 ]
>>749
え、無いの?
HTMLをS式で表現するものがあるのに?

751 名前:749 mailto:sage [2007/07/11(水) 20:20:40 ]
いや、あるかもしれんけど。
そんなに真剣に調べたことはないんで。

752 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 22:16:07 ]
ちょっと違うかもしれないけどmaxima があるからなー>tex

>>748
オープンソース版のAllegroCache(OODB)作るってのはどうよ?

753 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 22:51:01 ]
皆さんお返事有り難うございます。
そりゃ、自分もいろいろ考えたんですよ。
例えば色でプログラミングできたら面白いかな〜とかね。
正方形を9分割した物が有って、
白→nil
黒→t
が決定。
んで色がいくつ塗っているかでチャーチ数を表す。
緑→(())
緑と黄色→(()(()))
だから、緑と赤は等しい訳です。直感的ではないですけれど。1=1なんで。
んで、最低限の関数の色を決める。
car→オレンジ
とかね。
でも、これじゃ関数定義できないし、逆にややこしいし、
大きい数の計算は出来ないし、データ構造の定義は出来ないし、
何の役に立つのか説明しにくい。
んで、考えれば考えるほどどうすれば良いのか分からなくなって、
皆さん卒論でどんなことしていたか質問してみたんです。
すいませんでした。

754 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 00:16:04 ]
卒論とかだと学問ぽく見せる必要があるから、Lisp 族は人気ないだろ。
強い型付けのメリットとして、とても研究な感じになるという利点があるから
卒論は Haskell とか ML 系でなんかごにょごにょするほうがお手軽じゃないかな。


755 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 00:47:38 ]
> オープンソース版のAllegroCache(OODB)作るってのはどうよ?

それならむしろAllegroStore

756 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 01:46:49 ]
>>754
>強い型付けのメリットとして、とても研究な感じになるという利点があるから
>卒論は Haskell とか ML 系でなんかごにょごにょするほうがお手軽じゃないかな。
カリー・ハワード対応の事ですか?
それで、チューリングマシンの停止問題なんかを証明しても、
そりゃ学問的だけれども新規性がないんじゃ。
誰も証明してない命題が有るなら別なんでしょうけど。
>>755
AllegroStore?AllegroCache?
なんぞコレ?
clispしか使った事無いのでいまいち何に使うのかさっぱり?
総称関数を保存して共有できるようになる代物?
そもそもデータベースを触った事が無いからデーターベースからして
よくわかんないです。




757 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 01:47:44 ]
一言で言うなら 卒論書く前にもっと勉強しろよ

758 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 02:20:34 ]
まあ4年の7月なんてこんなもんだ。



759 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 02:23:19 ]
>753
世の中にはGPGPUというものがあってだな

760 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 03:05:22 ]
>>759
自分、面白そうな事思いついたです。
CUDA使って、Lispのインタプリタ作るのってどうでしょうかね?
そして、clispとどっちが計算が速いか検討するの。
これだと、今のところ誰もやってないだろうし、
リスト処理ってGPU向きの処理だと思いませんか?

761 名前:デフォルトの名無しさん [2007/07/12(木) 04:03:19 ]
わざとっぽいのは相手にしない方が

762 名前:754 mailto:sage [2007/07/12(木) 07:51:20 ]
>>756
どっからカリーハワードだの停止性判定だの証明だのがでてきたんだよ。
そーゆうんじゃなくて、なんか小物の研究でも Haskell や ML ならそれっぽく見えるだろって事。
つうかテーマは研究室の先輩や教官とよく相談したほうがいい…。
たとえば超並列分散 Lisp をつくるぜ!!と決めたとして、周囲の支援が得られず完全自力じゃ評価もまともにできんし、学費がもったいない。

763 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 10:50:20 ]
じゃあ Lisp の型推論がどこまでできるかとか

764 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 15:26:16 ]
>>762
>そーゆうんじゃなくて、なんか小物の研究でも
> Haskell や ML ならそれっぽく見えるだろって事。
>つうかテーマは研究室の先輩や教官とよく相談したほうがいい…。
>たとえば超並列分散 Lisp をつくるぜ!!と決めたとして、周囲の支援が
>得られず完全自力じゃ評価もまともにできんし、学費がもったいない。

いや、お恥ずかしい話なんですが自分の大学は大学院が無いんで
先輩なんていないんです。
それに指導教官は「何か作れば良いよ〜」という態度なんで
自由な反面、アイデアが必要なんです。
自分の友達は「大学のSNSをxoopsで作る」でOKと言われてました。
自分は「さすがにそれじゃアレかなぁ」と思って。
自分はCUDAでLisp処理系は面白い案だなと思います。
誰でも思いつきそうだけれど、今のところ誰もやってないし、
自分の処理系欲しかったんで。
それじゃ、パソコン買うところから始めなきゃならないんですが(Macなんで)
頑張ってみますね。
C言語は1年くらい触ってないし、マルチスレッドプログラミングは初めてなんで
不安ですが。
出来たらUpするんで、コードレビューしてください。
タライ回し関数が速く動くといいなぁ。

765 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 16:20:23 ]
逐次処理しなきゃだめな部分は早くならないんじゃないのかな。


766 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 16:34:47 ]
>>764
くそうらやましす

767 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 20:12:46 ]
一口で大学と言ってもピンキリなんだな

768 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 21:17:35 ]
型推論 1 (変数、戻り型が単一の型に定まる物)
(define (ack m n)
(cond ((zero? m) (+ n 1))
((zero? n) (ack (- m 1) 1))
(else (ack (- m 1) (ack m (- n 1))))))

(ack (m ?x) (n ?y)) : (result ?z) から ?x ?y ?zの型を求める

(zero? m) => (type_a) : bool
1 => int
(+ n 1) => (int int) : int から ?x = int
(zero? n) => (type_a) : bool
m, nがintなのでzero?の引数は intと仮定して良い
(- m 1) => (int int) : int から ?y = int
末尾コンテキストは+ とackのみなので?z = int
これでack内の +-zero?演算子はintという前提で最適化でける

・・という感じで良い?




769 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 21:36:38 ]
>(tail-map list '(a b c . d))
=>((a) (b) (c) d)

(define (tail-map proc x)
(let loop ((l x))
(if (pair? l)
(cons (proc (car l)) (loop (cdr l)))
(proc l)))) ;procをcdrにも適用する

(tail-map (proc ?x) (x ?y)) : (result ?z) から ?x ?y ?zの型を求める

(l ?v) = ?x
(pair? l) (type_a) : bool
この中ではl = pairと確定
(car l) => (pair) : type_b
(cdr l) => (pair) : type_c
(proc 〜) (type_a) : type_d
(loop 〜) (type_c) : type_e
(cons 〜) (type_b type_c) : pair
(proc not-pair) : type_f
以上からprocは1引数でtype_aまたはnot-pairを受け取りtype_d|type_fを返す、
xはpairかnot-pair
tail-map の戻り型は pair もしくはprocの戻り型に依存

・・・もうわかんね

770 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 22:08:54 ]
Schemeが(Haskellほどでないけど)関数的であるとされる根拠の1つに
識別子が一度ある場所に束縛されると
他の場所に束縛を変更される事がないっていうのがあるけど
それをいうならCだって同じですよね?
一度宣言した変数のアドレスはスコープ内で一定

むろん関数的であるという最大の根拠は関数が第一級の値であるというところにつきるんでしょうけど

でもR5RSでは関数のリテラル表記はない、でもそれぞれの実装でサポートしてもよいって扱いですけどね
lambdaは関数のリテラル表記だっていう解説もちらほら見ますが

771 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 22:12:32 ]
「識別子が一度ある場所に束縛されると他の場所に束縛を変更される事がない」ことが
「関数的である」とは思わないけど

772 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 22:22:29 ]
>>771
いや、参照透過性とは関係ないのに
識別子の束縛が変更されない事に言及する解説をよく見る気がしたので

773 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 22:25:43 ]
ヒント: 言論の自由

774 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 23:20:13 ]
>>768
なんかところどころよくわかんないような。

自分で目の子でやったらこんな感じになったけど、どうかな。
まず (zero? m) から m : number
次に (+ n 1) から n : number
だから ack : number * number -> ?z で
else 節の (ack (- m 1) (ack ...)) の第二引数を見ると ?z = number
∴ ?x = ?y = ?z = number

775 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 23:43:17 ]
zero?って渡される引数がnumberのみと限定していいのかな。
リストとか入ってきたらエラーでいいんだっけ?
まあそういう判定が減るから全体で3倍ぐらい速くなるかな。

それはそれとして、ackみたいな単純なケースは結構作ってるうちに
適当なのができそうだからどうでもいいと思う。
問題は型が定まらない場合。
上、named-let余計だった。
(define (tail-map proc l)
(if (pair? l)
(cons (proc (car l)) (tail-map proc (cdr l)))
(proc l)))
まあ普通のmap1でもいいけど。
(define (map1 proc l)
(if (pair? l)
(cons (proc (car l)) (map1 proc (cdr l))) '()))

この場合procが確定するまで保留にすべきなのかな?
procは1引数取って何か返す、ぐらいの情報しかないよね。

776 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 23:50:20 ]
>>775
> zero?って渡される引数がnumberのみと限定していいのかな。
R5RS みると (zero? z) と書いてあって、 z は複素数を表すメタ変数ということだから
そこは問題ないと思う。

で、今気付いたけど = にしてしまうとまずいね。例えば三行目で
(zero? n) が (<= n) だったりすると number ではダメで、
real に推論されなきゃいけない。

777 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 23:59:38 ]
いや、この際大雑把に「数字かどうか」ぐらいの区別でよくないですか?
アドホックにでも最適化に結び付けて、お手軽に型推論による効果
を体感したいというか。
>>775のmapにしてもフローチェックすればpair?の判定で
car/cdrのpair判定が省略できるとか、そんなレベルから徐々に
大掛かりな仕掛けを考えていければいいかなと。

778 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 00:01:00 ]
>>777
うん、その方が健全な気がしてきた



779 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 08:55:16 ]
え、そのほうが soundnessがいえるんですか?

と、あえて誤読をしてみる。


780 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 13:14:34 ]
誤読というより誤爆?

781 名前:デフォルトの名無しさん mailto:sage [2007/07/14(土) 06:51:44 ]
俺、凄い事思いついた!
GHC立ち上げると、
Prelude>
ってでるじゃん。
なんでプレリュード?とずっと思ってたんだけれど、
これってもしかして、
Franz Lisztの前奏曲から来てるんじゃないの?
リストつながりで。

782 名前:デフォルトの名無しさん mailto:sage [2007/07/14(土) 12:17:40 ]
Franz Lisp

783 名前:デフォルトの名無しさん mailto:sage [2007/07/14(土) 13:50:04 ]
>>781
prelude って一般名詞じゃないの?

784 名前:デフォルトの名無しさん mailto:sage [2007/07/14(土) 16:01:21 ]
俺も Prelude は一般名詞だと思う。

785 名前:デフォルトの名無しさん mailto:sage [2007/07/14(土) 16:54:13 ]
ネタにマジレスなんとやら

786 名前:デフォルトの名無しさん mailto:sage [2007/07/14(土) 16:58:10 ]
ネタにマジレスを重ねるというネタだったのにマジレスされた…

787 名前:デフォルトの名無しさん mailto:sage [2007/07/14(土) 17:13:36 ]
でもそれが、ネタにマジレスを重ねるというネタにマジレスするというネタかもしれないと考えるのが危機管理というものではないだろうか。

788 名前:デフォルトの名無しさん mailto:sage [2007/07/14(土) 17:17:54 ]
ネタになりかけのレスと、ネタになる余地のないレスの区別ぐらいつきますわよ。



789 名前:デフォルトの名無しさん mailto:sage [2007/07/14(土) 17:19:30 ]
だがしかしそれは主観に左右されるものであるから、絶対的な答えなどないのではないか
つまりは君の意見などどうでもよいのですわよ。

790 名前:デフォルトの名無しさん mailto:sage [2007/07/14(土) 17:21:27 ]
ここ、Haskell スレだと思ったら Lischeme スレだったのか!

791 名前:デフォルトの名無しさん mailto:sage [2007/07/14(土) 17:27:55 ]
むしろ寝たすれ家と思う田

792 名前:デフォルトの名無しさん mailto:sage [2007/07/15(日) 21:07:40 ]
自分がアホっぽく見える流れになっちゃったら、
「何か狙ってた」ことにして「お前らのせいでそれがダメになった」と嘆いとくのは基本。

793 名前:デフォルトの名無しさん mailto:sage [2007/07/15(日) 21:10:43 ]
誤爆?

794 名前:デフォルトの名無しさん mailto:sage [2007/07/15(日) 23:41:45 ]
アホの子はかあいいよ?

795 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 16:31:39 ]
gaucheのCVS Headって、ここ最近コンパイルできたためしが無いんだけど、
これってパッチとか作る価値があるの?
それとも、shiroさんの手元ではできてるの?

796 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 18:36:58 ]
wilikiかlingrあたりで聞いてみたら? HEAD使ってる人は何人もいると思うけど。

797 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 20:15:04 ]
普通にできてる。ドキュメントよまずにやってない?DISTほげ

798 名前:795 mailto:sage [2007/07/21(土) 00:53:52 ]
HACKING とかは読んでる。
Cのコンパイルじゃなくて、schemeコードを実行するところで
ライブラリが見つからないとかいろいろ出る。

システム既存のgaucheと衝突してるのかなあ…?

lingrで、makeにいろいろオプション渡すとできるよって言ってた人が
いて、それで前進したけどまだ止まる

もう少しあがいてみるかな



799 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 01:16:10 ]
そうか。
俺は ./DIST gen を忘れてて、コンパイルできねーな?と思ってた事があったんでひょっとしてと思ったんだけどね。
で、どんなエラーメッセージなの?

800 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 21:01:50 ]
>>795
俺もそれではまった。
最近はGauhceのコンパイルにGaucheを要求するので、
古いGaucheを使ってるとgoshがエラー出す。

Gauche 0.8.10(release)使えばコンパイルに成功する。
Gauche 0.8.10(release)すらコンパイル出来ないときは、
バージョンを一個ずつ上げてみて。

801 名前:795 mailto:sage [2007/07/22(日) 17:34:53 ]
>>800
サンクス
調べてやってみます

802 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 01:00:07 ]
schemeってcommon lispのsymbol-valueに相当するもの無いけどevalを使うしかないんですか?

やりたいことはalistに文字と関数のペア入れておいてその関数を呼び出したいんだけど。
'(#\a . func_a)
だとfunc_aは関数にならないから
`(#\a . ,func_a)
と書いてるんだけどいちいち','を書くのがめんどい。
こういうところはマクロを使うのがセオリーなの?

803 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 07:13:30 ]
Schemeでは「symbolに値が入ってる」わけじゃないからね
処理系によっては実行時にはシンボルと値の結び付きは完全に忘れちゃってる
可能性もあるし。
処理系依存で良ければ、symbol-valueとかglobal-variable-refとかが使える
場合もある。ポータブルにやるならevalしかないだろうね。
「文字と関数のalist」とかは普通にバッククオート使っちゃうけどなあ。

804 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 08:50:18 ]
個人的には evalも邪道だと思う。
そもそも R4RS には evalも必須じゃなかったし。
万独裁なら cons でも使え。



805 名前:802 mailto:sage [2007/07/23(月) 11:14:54 ]
>>803
なるほどね。R5RSをよく読んだらそう書いてあったよ。
Common Lisp陣営がSchemeを批判するときの論点がそこなのね。

>>804
確かにevalは使いたくない。

今まで通りquasi quote使って関数をunquoteすることにしました。

806 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 20:16:11 ]
>>805
> >>803
> なるほどね。R5RSをよく読んだらそう書いてあったよ。
> Common Lisp陣営がSchemeを批判するときの論点がそこなのね。

全然違うと思うが。
Schemeにも1st class objectとしてのシンボルがあればなあという
CLerもいるっちゃいるだろうけどさ。

807 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 23:38:53 ]
ブラックボード黒田

808 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 23:49:38 ]
kuroタソ(*´д`*)/ヽァ/ヽァ



809 名前:デフォルトの名無しさん [2007/07/25(水) 09:38:10 ]
www.tekkon.net/ これってlisperの話?w

810 名前:デフォルトの名無しさん [2007/07/27(金) 01:42:56 ]
質問があります。

lispで、他の言語も実装した(というか、DSLを作ってみたというか)
処理系があったと思うのですが、ご存じないでしょうか?

lispでよく用途に合わせた言語を再実装したとう話を聞くのですが、
なかなか実例に合わず、う〜ん?と思っていたのですが、
これを見て、lispすげーと、唸った覚えがあります。

けっこう、最近の言語だったと思うのですが、ご存じないでしょうか?
確か、DSLとしては、ひとつとして、JavaScriptのサブセットを実装していました。
他の言語のサブセットもあったと思うのですが、覚えていません。

もしかしたら、Lispじゃなくて、もしかしたら、schemeの実装だったかもかわかりません。

811 名前:デフォルトの名無しさん [2007/07/27(金) 01:58:31 ]
もしかしたら、lispじゃなかったかもしれません orz
うろ覚えなのですが、中間形式として、S式を使っていたような?
言語内に、いくつかのプログラムがあってそれを組み合わせて、使っていたような気がします。

812 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 02:05:25 ]
>>811
『On Lisp』の24章に、Common Lisp による埋め込み言語としての Prolog 実装の話はあるけど。
ただ Prolog は最近の言語ってわけでもないし……。

813 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 03:48:27 ]
>>811
まさか、TAOじゃないよな。

814 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 04:30:18 ]
Coke & Pepsi?


815 名前:デフォルトの名無しさん [2007/07/27(金) 14:31:02 ]
>>814
それそれ!!それです。
ありがとさんです。

CokeとPepsiとJoltです。

ただ、今見たら、素人の手に負えそうなものではないことがわかったw

816 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 17:25:35 ]
オナニーしすぎてモーホー炎になりますたw

817 名前:デフォルトの名無しさん mailto:sage [2007/07/29(日) 00:07:51 ]
>>810
HaskellでPerlを実装した話じゃなくて?

818 名前:デフォルトの名無しさん mailto:sage [2007/07/29(日) 00:31:50 ]
haskellはschemeで作られました



819 名前:名無しさん@そうだ選挙に行こう mailto:sage [2007/07/29(日) 02:31:09 ]
schemeはschemeで作られました

820 名前:名無しさん@そうだ選挙に行こう [2007/07/29(日) 13:11:31 ]
・[1492] L2Lisp in Ruby((鈴))
 静的スコープ、末尾呼出し(末尾再帰を含む)の最適化、およびマクロを備えた
近代的なLispの小さなインタープリタをRuby(およびJRuby)で作ります。Rubyの
データ型と親和性が高く、簡単に組込み関数を増設できる手頃なLisp処理系として
利用できます。
codezine.jp/r.x/czn077a/aid/1492






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<220KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef