- 1 名前:デフォルトの名無しさん mailto:sage [2011/10/09(日) 17:58:58.06 ]
- Common Lisp、SchemeをはじめとするLisp族全般のスレです
■前スレ Lisp Scheme Part32 hibari.2ch.net/test/read.cgi/tech/1303299696/ ■テンプレ wiki.fdiary.net/lisp/ ■関連スレ 【入門】Common Lisp その8【質問よろず】 hibari.2ch.net/test/read.cgi/tech/1309940115/
- 91 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2011/10/30(日) 00:28:17.17 ]
- define-macro は RnRS で提供して無いけど、
R6RS では簡単に define-macro を実装できる。 典型的な実装例はこんな感じ。 (define-syntax define-macro (lambda (stx) (syntax-case stx () ((_ (macro . args) body) #'(define-macro macro (lambda args body))) ((_ macro transformer) #'(define-syntax macro (lambda(stx2) (syntax-case stx2 () ((k args (... ...)) (let ((v (syntax->datum #'(args (... ...))))) (datum->syntax #'k (apply transformer v))))))))))) これなら >>89 のようなことは問題なく出来る。 でもまぁ Scheme 的には let-syntax を使う方が楽ではあるだろうね。
- 92 名前:デフォルトの名無しさん mailto:sage [2011/10/30(日) 00:29:23.88 ]
- なんだよボーイズラブって
- 93 名前:デフォルトの名無しさん mailto:sage [2011/10/30(日) 03:34:57.41 ]
- 限定継続使われてないからメモリーリークしてたんかね
groups.google.com/group/plt-scheme/browse_thread/thread/a310b7cba8fae651/fa85558e8a5115bf
- 94 名前:デフォルトの名無しさん mailto:sage [2011/10/30(日) 05:02:08.64 ]
- じゃあこんなのも問題ないのね
でも `[`(,,op ,'y) あたりがうまく動いてくれない (define (g x) (define-macro (tmpl op) `[`(,,op ,'y) (list y ,op)]) (match x [`(- ,z) (list z '-)] (tmpl '+) ) )
- 95 名前:デフォルトの名無しさん mailto:sage [2011/10/30(日) 12:47:34.04 ]
- >>91
各処理系がdefine-macroをどう実装してるかが問題なんだから、 RnRSでdefine-macroをどう実装するかはこの場合関係ないだろ。 独自の定義でオリジナルを上書きして差異を吸収するってんなら別だけど。
- 96 名前:94 mailto:sage [2011/10/30(日) 13:34:27.93 ]
- 結局、期待通りに動きませんでした。何がいけないのかよくわからない。
(define-syntax tmpl (syntax-rules () ((_ op) [(list op y) (list y op)]))) (define (g x) (match x [`(- ,z) (list z '-)] [(list '/ z) (list z '/)] (tmpl '+) [_ 'else] ) ) (g '(/ 8)) (g '(+ 10)) (g '(- 12)) (g '(= 19))
- 97 名前:デフォルトの名無しさん mailto:sage [2011/10/30(日) 14:12:11.24 ]
- 何を期待してるのか判らんから助言しようもないが、
matchの仕様を見るにpat部分は普通の評価はされない場所だから 何か勘違いしてるんだろ。例えばパターンの最初の2行は [(- z) (list z '-)] [(/ z) (list z '/)] でいいんじゃないかと。 tmplもそう書き直せば多分動くでしょ。 全く確認してないが。
- 98 名前:デフォルトの名無しさん mailto:sage [2011/10/30(日) 14:13:55.83 ]
- あ、だからpat部分は評価されないからダメだよ
出てくるシンボルは「パターン変数」になるそうだから。仕様よく読め。
- 99 名前:デフォルトの名無しさん mailto:sage [2011/10/30(日) 18:50:28.04 ]
- おまいらそんなに括弧が好きなの?
かっこつけんなよ。
- 100 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2011/10/30(日) 20:16:14.53 ]
- >>99
そのダジャレは面白いと思って書いてんの? 煽りだろうがあえてマジレスすると、括弧そのものではなくてマクロが重要だろ。 Lisp 風のマクロを実現するためにS式表記が相性が良かったからこの表記が維持されてるってだけ。 外観ではS式の優位性ってのはそれほど無いんじゃないか? 例えば Python で構文木を操作しようと (マクロ的なことをしようと) した場合のめんどくささはこれを見ればよくわかる。 www.unixuser.org/~euske/doc/python/python-lisp-j.html#macros マクロが要らないならプログラマが直接S式で書く意味はあんまり無いと思う。 見難いと感じないならデメリットも特に無いとは思うけど。
- 101 名前:デフォルトの名無しさん mailto:sage [2011/10/30(日) 21:23:48.25 ]
- templated match macroとか作ったら論文になるんだろうか
どんな雑誌に投稿するのか知らないけど
- 102 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2011/10/30(日) 23:31:17.46 ]
- ずいぶん前の話だけど、 Active Basic スレで正規表現ベースの構文定義を提案してた奴がいたなぁ。
あんまりフリーダムでも困るけど、 Lisp の場合は結局はS式だから、それがちょうどいい枷にもなってる気がする。
- 103 名前:デフォルトの名無しさん mailto:sage [2011/10/31(月) 00:16:26.42 ]
- 個人的には、演算子の優先順位をなくせるという利点も推したい。
他にも、パースしやすかったり、式単位での編集を実装する目印になったり、 S式の利点は案外ある。特に、式単位で編集できないと困る人多いんじゃない?
- 104 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2011/10/31(月) 00:39:19.72 ]
- >>103
優先順位の問題は確かに単純になっていいところではあるなぁ。 でも、それは簡潔さとのトレードオフがあるから一概に利点とも言えないかも? 今、思い付いたんだけど、どんな関数にしろマクロにしろ特殊形式にしろ「名前が付いてる」ってのは ドキュメント引いたり定義場所へ移動しやすいって利点はあるね。 パースしやすいってのは処理系の実装者にとってはそうかもしれないけど、ユーザーに対する利点になるかな? データのシリアライズを write 一発で出来て、 read で読んだら構造が出来上がってるってのは楽だけど、 プログラム自体をS式で記述するってのとは別の話では? 編集が式単位っていうのは良く挙げられるけど、他の言語でも単位が違うだけで何らかの塊はあるわけで、 実際にその塊単位での編集や移動も出来るわけで、開発環境のサポート次第じゃないかな?
- 105 名前:デフォルトの名無しさん mailto:sage [2011/10/31(月) 01:54:05.12 ]
- S式は構文木を表しているから、逆に機械的に元の文脈を読み取り辛い気がする。
つまり、IDE泣かせ。開きカッコの直後に、どんな候補だせばいいんだろう。 IDE使わないからどうでもいいけど。S式好きだし。
- 106 名前:デフォルトの名無しさん mailto:sage [2011/10/31(月) 02:22:18.54 ]
- S式で書くとコードがツリー状になるから,切り取るときの目安にしやすい,と思う.
インデントされていればそれがよりはっきり見えるし. 命令型のコードは,意味を成すコードの塊を抜き出すのがかったるいと感じる.
- 107 名前:デフォルトの名無しさん mailto:sage [2011/10/31(月) 12:08:16.87 ]
- 括弧と頭のシンボルでほぼ全てを表現してるから
文脈の探索自体は楽なんじゃないかと思うけど 問題はマクロの処理かな マクロ内で定義したキーワードとかが候補に出ないんでは あんまり意味がないだろうし 展開したものを逆に辿っていくのは難しい
- 108 名前:デフォルトの名無しさん mailto:sage [2011/11/03(木) 00:28:51.31 ]
- goshです。
質問です。 数ページにわたるCGIがあり、POSTパラメータを渡すのですが、継続を渡せないかとかんがえています。 中途から処理を再開すれば、無駄無くプログラミング出来ると思ったからです。 Q1.継続はなんらかの形でコンテナ化して保管できますか? Q2.継続は一度インタプリタが終了しても有効ですか?
- 109 名前:デフォルトの名無しさん mailto:sage [2011/11/03(木) 00:34:12.31 ]
- 両方無理。手続きの時点でできないので、継続も無理。
- 110 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2011/11/03(木) 01:01:48.77 ]
- >>108
継続そのものをシリアライズするのは原則として無理です。 継続には環境フレームやら何やらがぞろぞろとくっついていて処理系の内部構造と不可分なので、 もしやろうとするなら、処理系が最初からシリアライズを強く意識した実装にする必要があります。 Gambit だと出来ますが、実用するなら不要な環境を捕捉してしまわないようにかなり注意が必要で、あまり簡単とは言えないようです。
- 111 名前:デフォルトの名無しさん mailto:sage [2011/11/03(木) 02:21:46.20 ]
- オブジェクトの印字表現が全て決まってたら簡単だったのにねえ
つまんない制限だよねえ
- 112 名前:デフォルトの名無しさん mailto:sage [2011/11/03(木) 03:09:32.82 ]
- Schemeオブジェクトが全て印字/読み込み可能だったとしても、環境フレームからは
openしているファイルディスクリプタだの何だのが間接的に参照されてるから そう簡単にはいかないよ。
- 113 名前:108 mailto:sage [2011/11/03(木) 18:17:31.61 ]
- >>
そうですか…残念です。 とにかくありがとうございます。
- 114 名前:デフォルトの名無しさん [2011/11/03(木) 20:03:38.36 ]
- 結局継続がファーストクラスなんて役に立たないってこった
- 115 名前:デフォルトの名無しさん mailto:sage [2011/11/03(木) 21:19:02.42 ]
- たしかにバカの役には立たない
- 116 名前:デフォルトの名無しさん mailto:sage [2011/11/03(木) 22:41:25.16 ]
- kahua とかは?
- 117 名前:デフォルトの名無しさん mailto:sage [2011/11/03(木) 23:23:33.61 ]
- Kahuaとかはアプリケーションサーバとかの層のプロダクトなので、
基本的に起動し続け、継続をシリアライズしたりする必要はないよ。 継続を活用したウェブ開発をする場合、CGIだと厳しいと思う。
- 118 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2011/11/04(金) 00:23:44.47 ]
- >>106
意味的な単位と表記上の単位が一致しやすいってことですね。 Lisp だと小さい単位で書きがちということもあって納得です。
- 119 名前:デフォルトの名無しさん mailto:sage [2011/11/04(金) 03:42:10.30 ]
- 継続の道はまだ始まったばかりだぜ
第一級継続先生の次回作にご期待ください www.google.co.jp/search?hl=ja&q=%22delimited+control%22+scheme+filetype%3Apdf&oq=%22delimited+control%22+scheme+filetype%3Apdf www.google.co.jp/search?hl=ja&q=%22%E9%99%90%E5%AE%9A%E7%B6%99%E7%B6%9A%22+web%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3+filetype%3Apdf www.google.co.jp/search?hl=ja&q=%22%E9%99%90%E5%AE%9A%E7%B6%99%E7%B6%9A%22+filetype%3Apdf&oq=%22%E9%99%90%E5%AE%9A%E7%B6%99%E7%B6%9A%22+filetype%3Apdf
- 120 名前:デフォルトの名無しさん mailto:sage [2011/11/04(金) 03:53:38.35 ]
- racketでも検索した方がいい。
www.google.co.jp/search?hl=ja&q=delimited+control+racket community.schemewiki.org/?composable-continuations-tutorial
- 121 名前:デフォルトの名無しさん mailto:sage [2011/11/04(金) 19:37:26.64 ]
- 宇宙全体をシリアライズできなくても
地球全体をシリアライズすれば十分
- 122 名前:デフォルトの名無しさん mailto:sage [2011/11/04(金) 21:10:14.05 ]
- ありんことみじんこじゃ全然違うと思いますけどー
永続化する場合こんどはインスタンスの管理の問題があるけど
- 123 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2011/11/04(金) 22:32:53.69 ]
- 何を言いたいのかわかんねーよ。
比喩を持込むのはなるべく避けろってのは議論の基礎だろ。 もうちょっと具体的に言ってくれんか。
- 124 名前:デフォルトの名無しさん mailto:sage [2011/11/05(土) 00:35:36.71 ]
- 餃子がそれを言うのかw
- 125 名前:デフォルトの名無しさん mailto:sage [2011/11/05(土) 00:44:10.21 ]
- 餃子でもシュウマイでもいいじゃないか。by Lispトムヤンクン
- 126 名前:デフォルトの名無しさん mailto:sage [2011/11/05(土) 08:42:02.91 ]
- もしかし継続って、外出しできてこそ本領発揮するんじゃないのか?
最初から仕様にもりこんでおけば今頃は超有名になってたよ
- 127 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2011/11/05(土) 12:55:12.57 ]
- >>124-125
行者って書こうとして間違えたんじゃないんだからねっ!!
- 128 名前:デフォルトの名無しさん mailto:sage [2011/11/05(土) 12:59:27.30 ]
- 行者だと無条件であぼんされそうだから餃子でよかったと思う
- 129 名前:デフォルトの名無しさん mailto:sage [2011/11/05(土) 13:03:13.19 ]
- >>123
なんでときどきDQN口調になるんだよw
- 130 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2011/11/05(土) 13:22:34.67 ]
- >>129
煽らないとすぐに過疎るからだよ。 極論を書いたりするのも反論してみろっていう煽りだよ。 言わせんな恥ずかしい
- 131 名前:デフォルトの名無しさん mailto:sage [2011/11/05(土) 14:40:38.83 ]
- 餃子のせいで昨日の夜餃子食べたくて大変だった。
部分継続をシリアライズして、HTMLに埋め込むっていう、上で出てた論文は面白かった。 みんな色々考えてんだねー。
- 132 名前: ◆QZaw55cn4c mailto:sage [2011/11/05(土) 14:47:50.97 ]
- >>130
(^^)
- 133 名前:デフォルトの名無しさん mailto:sage [2011/11/05(土) 15:36:31.64 ]
- >>130
あんたがそこそこ勉強してきた人だってこと多くの人がわかってんだから 煽らんでもいいよ。それより食らいつくネタを考えたり、拾ってきたり するといいよ。そのほうが健全なスレになる。by Lispトムヤンクン
- 134 名前:デフォルトの名無しさん mailto:sage [2011/11/05(土) 15:49:02.65 ]
- 継続外出しはR7RSで
いつでも再開できるのがSchemeの常識に
- 135 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2011/11/05(土) 16:07:36.48 ]
- >>133
俺が勉強してたらどうして煽りが要らないんだ? 意味わかんね。 議論しようぜってのはサイエンス的にもエンジニアリング的にも民主主義的にも美徳だろ。 俺に間違いがあるってのなら、反論しろよ。 意見を出せよ。 議論自体を拒否するのは不誠実だぞ。
- 136 名前:デフォルトの名無しさん mailto:sage [2011/11/05(土) 16:16:36.44 ]
- >>135
何もわかってない奴が盛り上げよう?あるいはかまってもらおうと する場合は煽りという選択肢を選びがちという事だよ。あなたの 場合は、その選択肢を選ばなくても他の選択肢で十分盛り上げられ る技量を持ってるでしょと言ってるだけ。by Lispトムヤンクン
- 137 名前:デフォルトの名無しさん mailto:sage [2011/11/05(土) 16:46:04.28 ]
- とりあえず行間はうめといたからこれで趣旨はわかるだろう。
最後に、餃子には期待してるよ。
- 138 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2011/11/05(土) 16:53:07.53 ]
- 継続をシリアライズしたりプロセスをまたいで移送したりできたら夢が広がりんぐ。
>>112 も言うようにポートのような外部とのインターフェイスだとか、 破壊的な処理だとかを考えなければ関連するデータを全部書出せばいいだけなので いくらかの (かなり大きな「いくらか」だと思うけど) 制限有りでよければ出来そう。 というか、 Gambit 等ではやってるわけですし。 規格にするならあとはその制限をどのレベルにするのが妥当かって話ですよね。
- 139 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2011/11/05(土) 17:00:05.29 ]
- 例えば (継続に一般化すると説明が面倒なのでクロージャで説明)
(let ((x 1)) (write (lambda()(set! x (+ x 1)))) (write (lambda()(set! x (+ x 2))))) みたいにふたつのクロージャを書き出したとして、 元々は共有しているはずの x が分断されてしまうのはつまらないので、 set! したら既に書き出したクロージャにも波及したりしたら面白いとか思った。 面白いだけで使いどころがないし非現実的だけど。 無難な落とし所としてはあくまで書き出した時点の環境ってことにするしかないかなー
- 140 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2011/11/05(土) 17:08:41.15 ]
- Petite Chez Schme の 8.4 を入れたらイメージをダンプするオプションが無くなってたよ。
かわりに --compile-imported-libraries なるオプションが出来てた。 R6RS の実行モデルに合わせて変えたってことだと思うけど、 --boot オプションはあるんだよな。 暫定的な処置ってこと? 教えてエロいひと
- 141 名前:デフォルトの名無しさん mailto:sage [2011/11/05(土) 17:23:26.90 ]
- >>139
「書き出す」っていうのは従来のファイルシステムを想定してると思うんだけど、 その想定は妥当なの? OS自体が一つのSchemeの実行イメージに載ってて、 メモリが自然に永続化されるようなモデルならそういうことも可能かもしれない (効率との折り合いはあるけど)。Smalltalkの環境みたいな。
- 142 名前:139 mailto:sage [2011/11/05(土) 17:50:35.07 ]
- 今、サブマシンからの書き込みなのでトリップ無しで御免。
>>141 非現実的ってのはそこんところですね。 出力先を特殊なデータベースとかにするのも、 言語でそこまで踏み込むのは Scheme らしくないし。 さすがにこのへんは余興というか、面白いだろうなーという妄想レベルの話です。
- 143 名前:139 mailto:sage [2011/11/05(土) 17:57:18.27 ]
- >>141
書き出すこと自体については可能だと思います。 Common Lisp なんかでは実行中のイメージをダンプしたりは普通ですし、 それをクロージャに繋がってるところだけに限定するか、 無理なようなら効率を無視してまるっと書き出すとか出来るでしょう。
- 144 名前:デフォルトの名無しさん mailto:sage [2011/11/05(土) 18:19:45.22 ]
- SchemeでFizzBuzzってどこまで小さくできるの?
- 145 名前:デフォルトの名無しさん mailto:sage [2011/11/05(土) 22:01:38.08 ]
- >>142
一瞬サブマシンガンに空目した。
- 146 名前:デフォルトの名無しさん mailto:sage [2011/11/05(土) 23:10:28.83 ]
- golf.shinh.org/p.rb?FizzBuzz
ここでは、77バイト
- 147 名前:デフォルトの名無しさん mailto:sage [2011/11/06(日) 04:30:49.03 ]
- >>145
俺漏れも
- 148 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2011/11/06(日) 08:55:42.40 ]
- >>136
知るかボケ にちゃんねるに何を期待してんだ? ガキは家へ帰ってパパのチンポでもしゃぶってろ
- 149 名前:デフォルトの名無しさん mailto:sage [2011/11/06(日) 10:45:52.49 ]
- >>148
ひどいなw これ言われたら超屈辱的だわwww
- 150 名前: ◆QZaw55cn4c mailto:sage [2011/11/06(日) 10:54:33.95 ]
- ままのおっぱいじゃないんだ‥‥‥。
- 151 名前:デフォルトの名無しさん mailto:sage [2011/11/06(日) 11:18:43.42 ]
- ナッパさまのクンッ!が必要だな
- 152 名前:デフォルトの名無しさん mailto:sage [2011/11/06(日) 14:06:19.58 ]
- 123 名前:SCHEME餃子 ◆8X2XSCHEME [sage] 投稿日:2011/11/04(金) 22:32:53.69
何を言いたいのかわかんねーよ。 比喩を持込むのはなるべく避けろってのは議論の基礎だろ。 もうちょっと具体的に言ってくれんか。 148 名前:SCHEME餃子 ◆8X2XSCHEME [sage] 投稿日:2011/11/06(日) 08:55:42.40 >>136 知るかボケ にちゃんねるに何を期待してんだ? ガキは家へ帰ってパパのチンポでもしゃぶってろ
- 153 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2011/11/06(日) 14:11:56.96 ]
- いや…その書込みは別に意味はねえ ただの悪意よ
- 154 名前:デフォルトの名無しさん mailto:sage [2011/11/06(日) 14:37:34.53 ]
- 処理系がシステム巻き込んでクラッシュするようなプログラムを出してこそ、悪意。
- 155 名前:デフォルトの名無しさん mailto:sage [2011/11/07(月) 15:54:39.42 ]
- >>153
悪意はある反面あなたの精神的な未熟さだけは理解できました。 By Lispトムヤンクン
- 156 名前:デフォルトの名無しさん mailto:sage [2011/11/07(月) 16:06:06.82 ]
- >>149
当事者としてはすこぶる不愉快だが、2ちゃんだからこの程度のことは書く 人がいてもおかしくはないですからね。トムヤンクン 実際に対面して同じ事を目の前で言えるような人とは思えないし、 そこまで肝がある人じゃないだろう。それができるのが2チャンです。 心理的に不安定な人という印象だけが残ってしまったのも事実なのです。 これ以上は時間を捨てるようなものであり、オフトピでもあるので これで失礼します。
- 157 名前:デフォルトの名無しさん mailto:sage [2011/11/07(月) 17:32:10.79 BE:1820063039-2BP(0)]
- >>156
何この粘着君。 空気読まない奴だと思ったらわかった上で乱してんのか。 タチ悪いわー
- 158 名前:デフォルトの名無しさん mailto:sage [2011/11/07(月) 20:18:07.26 ]
- >>157
自己紹介してんじゃねえよ
- 159 名前:デフォルトの名無しさん mailto:sage [2011/11/07(月) 22:01:30.77 ]
- 30過ぎるとタチ悪くなるよ
- 160 名前:デフォルトの名無しさん mailto:sage [2011/11/08(火) 21:59:49.89 ]
- 数ある(のかどうかわからないけど)関数型言語であえてLISPを選ぶ理由って何?
それと関数型って言うとLISPの他はMLっぽいのが多い気がするけど他の系統ってどんなのがある?
- 161 名前:デフォルトの名無しさん mailto:sage [2011/11/08(火) 22:03:20.53 ]
- LISPをマルチパラダイムやで?
- 162 名前:デフォルトの名無しさん mailto:sage [2011/11/08(火) 22:03:29.71 ]
- LISP「は」
- 163 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2011/11/09(水) 00:42:50.37 ]
- >>160
どういうものを関数型って呼ぶかは明確な定義があるわけじゃありません。 でも Scheme や CL はマルチパラダイムを標榜してはいますね。 LISP 族の中には純粋関数型のものだってあると思いますが、それは少数派。 関数型的な特徴は「プリミティブ」であって、その上に様々なパラダイムを載せられるのが LISP の強力な点だとされています。 例えば Java だって関数型のアプローチでプログラムすることは出来ます。 C++ を定理証明に使うアイデアもあります。 www.kmonos.net/wlog/102.html#_0103091022 でも、 Java は関数型ではなくて、 C++ は定理証明器ではありません。 何故なら、そういった書き方はプログラマがそういうパターンに沿って書くことが一応可能であるということであって、そのように書くための道具 (語彙) を作ることが難しいからです。 つまり、抽象度の違いです。 Java は手続的なアプローチに抽象化する道具は揃っていますが、そうではないパラダイムを持ち込もうとすると言語のサポートは望めないのです。 一方で、 LISP はどうでしょうか? SICP にあるような Prolog もどきや回路シュミレータを見ればわかるように、一旦ライブラリを構築してしまえば「もはやそういう言語であるかのように記述できる」のです。 これらの差が生じるのは、一般的な言語における抽象はそれぞれの言語ごとでのパラダイム (クラスとかテンプレートとか) が単位であるのに対し、 LISP ではS式という「記法」が単位であるからだと私は考えています。 あらゆるパラダイムをひとつの言語で実現できて、時には混在もできるというのは圧倒的な強みになると思います。 それが、私が LISP (Scheme) を好む理由です。 下手するとカオスになるというデメリットと隣りあわせではありますけどね。
- 164 名前:デフォルトの名無しさん mailto:sage [2011/11/09(水) 00:56:34.33 ]
- >>163
そのトリップ、SCHEMEはともかく8X2Xって何?
- 165 名前:デフォルトの名無しさん mailto:sage [2011/11/09(水) 01:09:43.02 ]
- >>163
JavaとかCだと、文と式があって、言語の拡張=文の追加・変更が難しい。 LispはS式で統一されてるので、Lisp自身の拡張が容易、ってのが大きいんじゃないかな?
- 166 名前:デフォルトの名無しさん mailto:sage [2011/11/09(水) 01:09:51.42 ]
- >>164
あまりだろ。
- 167 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2011/11/09(水) 07:19:31.37 ]
- >>164
16倍ってことだよ
- 168 名前:デフォルトの名無しさん mailto:sage [2011/11/09(水) 07:42:05.03 ]
- 16bit
- 169 名前:デフォルトの名無しさん mailto:sage [2011/11/09(水) 12:10:28.17 ]
- 理屈ではそうだけど
現実世界で圧倒的に役に立っているのは JavaやC++なんだけどな
- 170 名前:デフォルトの名無しさん mailto:sage [2011/11/09(水) 12:15:21.47 ]
- ずいぶん狭い現実世界だな
- 171 名前:デフォルトの名無しさん mailto:sage [2011/11/09(水) 13:20:04.76 ]
- 餃子の相手をする人の相手をすることはない
- 172 名前:デフォルトの名無しさん mailto:sage [2011/11/09(水) 15:31:18.24 ]
- やあ、言語の寿命が心配なのか?
LISPの言語拡張は、S式が作り出した知恵の一つ、いや武器か。 普通のやつらは決して辿り着くことができないLISPの英知として、 S式が我々に与えたものだ。昔、規格策定で起きた大きな抗争の時にな。 あの時はホント、まいったよ。 見ての通り、継ぎ目すらない美しいフォルムだろ? 一体どんな仕組みでできてるのか、調べれば判るだろうが、 すまない。私には興味がないんでね。 詳しい事は、まだArc作ってるポールにでも聞いてみるんだな。 何か知っているんじゃないか? S式。 ろっと、驚かせてしまったようだな。 これは他の言語で言う、演算子でも文でもない。 いわばS式だけが作り出せる構造体だ。 ただ実行するだけでなく、データとして取り出せる。 例えば、この無数の括弧。気を付けろ、数えると一瞬で悟ってしまうぞ。 悟りとは何かだって? ハハハハ、それは昨日言っただろう? あ、すまない。君にとっては明日の出来事か。 いや、もっと先だったかもしれないな。 その日が来たら、また説明しよう。
- 173 名前:デフォルトの名無しさん mailto:sage [2011/11/09(水) 16:22:15.67 ]
- ttp://xyzzy.s53.xrea.com/reference/wiki.cgi?p=interactive
これの interactive {INTERACTIVE-STRING {PARAMETER}*|LIST} っていう引数の書き方はなんなんでしょうか? 正規表現的なようでよく分かりません
- 174 名前:デフォルトの名無しさん mailto:sage [2011/11/09(水) 18:34:02.30 ]
- >>170
どこの現実世界にいるんだよ おまえは
- 175 名前:デフォルトの名無しさん mailto:sage [2011/11/09(水) 18:39:34.59 ]
- アシタカ「LISPは死なないよ.構文木そのものだから」
- 176 名前:デフォルトの名無しさん mailto:sage [2011/11/09(水) 19:03:51.75 ]
- つ AST
- 177 名前:デフォルトの名無しさん mailto:sage [2011/11/09(水) 22:39:53.45 ]
- なんだかんだ言って、結局はLispだけ残ってきたわけだしね。
- 178 名前:デフォルトの名無しさん mailto:sage [2011/11/09(水) 23:21:14.60 ]
- >>163
そもそもなんでトリップ付けてんの? NGワードに設定しやすくていいけど。
- 179 名前:デフォルトの名無しさん mailto:sage [2011/11/09(水) 23:47:03.41 ]
- >>173
波カッコ{} オプション スター* 0回以上の繰り返し 縦棒| または つまり、引数は無くても良い。ある場合は次の2つのうちのいずれか一方。 INTERACTIVE-STRINGの後ろに0個以上の任意個のPARAMETER LIST BNFってやつかな。
- 180 名前:デフォルトの名無しさん mailto:sage [2011/11/10(木) 00:12:37.84 ]
- Lispを使うと普通のやつらの上を行けますか?
また具体的にどのように上を行くのでしょうか?
- 181 名前:デフォルトの名無しさん mailto:sage [2011/11/10(木) 00:17:37.91 ]
- 上をいけたのは他の言語が未成熟だった昔の話
今じゃ下にしがみつくのがやっと
- 182 名前:デフォルトの名無しさん mailto:sage [2011/11/10(木) 00:18:01.22 ]
- ※行けと言うだけであり、行けることを保証するわけではありません
※具体的な方法は確認されておりません
- 183 名前:デフォルトの名無しさん mailto:sage [2011/11/10(木) 00:21:30.75 ]
- >>177
俺が業界に入って以来VBも残ってるよ 俺が業界から去っても多分残ってると思うよ そういうスパンで区切ると他の言語でも別に問題ないと思えてくる
- 184 名前:デフォルトの名無しさん mailto:sage [2011/11/10(木) 00:32:58.75 ]
- 普通のやつらの上を行けで思い出したけど
彼の作った言語はどうなったんだ 名前忘れて思い出せないけど
- 185 名前:デフォルトの名無しさん mailto:sage [2011/11/10(木) 00:34:29.97 ]
- ちょっと前curlって言語があったな
- 186 名前:デフォルトの名無しさん mailto:sage [2011/11/10(木) 03:13:45.23 ]
- >>184
Arcは普通にバージョンアップとかされながら、 一部の人に使われてるみたいよ。
- 187 名前:デフォルトの名無しさん mailto:sage [2011/11/12(土) 00:46:31.15 ]
- SBCL始まったな。
random-state.net/log/3529868963.html
- 188 名前:デフォルトの名無しさん mailto:sage [2011/11/12(土) 12:40:45.36 ]
- gaucheでsxmlをhtmlに書き出したいのですが、分からないことがあります
htmlでいうところのh2とh3の属性値を見て、 id が設定されていなければ連番のidを独自に設定したいです それ以外の要素は普通にhtmlへと書き出します Gauche:SXMLとSXPath practical-scheme.net/wiliki/wiliki.cgi?Gauche%3ASXML%E3%81%A8SXPath Gauche ユーザリファレンス: 11.36 sxml.tools - SXML構造を操作する practical-scheme.net/gauche/man/gauche-refj_159.html このあたりを見てみましたが、どれを使えばよいのかよく分かりません よろしくお願いします
- 189 名前:デフォルトの名無しさん mailto:sage [2011/11/12(土) 13:41:55.63 ]
- gaucheのさぽせんに聞け
- 190 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2011/11/12(土) 17:53:44.33 ]
- >>188
読んでわからなかったのなら他の人もわからない可能性が高いので、 WiLiKi の初心者の質問箱に書いたほうが後続の人のためになるかもね? 俺もSXMLのモディファイヤを使うのは始めてなので本当にこれが正しいのかよくわからないけど、 試してみた感じではちゃんと動いた。 ;; 必要なライブラリを use する (use sxml.tools) (use sxml.sxpath) (use sxml.ssax) ;; テスト用に元になる sxml を作る (define sxml (ssax:xml->sxml (open-input-string "<xml><h1>2</h1><h1>3</h1></xml>") '())) ;; id を生成するジェネレータ (define id-maker (let1 x 0 (^() (inc! x) `(id ,#`"L,(counter)")))) ;; sxpath で対象ノードを抜き出してそこに id を追加 (for-each (cut sxml:set-attr! <> id-maker) ((sxpath "//h1") sxml)) ;; これで id がついてるはずなので確認してみよう (write sxml)
- 191 名前:デフォルトの名無しさん mailto:sage [2011/11/12(土) 18:43:04.34 ]
- >>188
SXMLは基本リストを使った単なるツリーなので、 ツリーを操作するのと同じで問題ないよー。 >>190みたいに副作用で破壊的に変更しても良いし、 map-unionとかで走査して、置き換えても良いし。
|

|