Lisp Scheme Part33

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
Common Lisp、SchemeをはじめとするLisp族全般のスレです

■前スレ
Lisp Scheme Part32
http://hibari.2ch.net/test/read.cgi/tech/1303299696/

■テンプレ
http://wiki.fdiary.net/lisp/

■関連スレ
【入門】Common Lisp その8【質問よろず】
http://hibari.2ch.net/test/read.cgi/tech/1309940115/
2デフォルトの名無しさん:2011/10/09(日) 18:00:51.76
>>1
おつおつ
3デフォルトの名無しさん:2011/10/09(日) 23:25:08.72
>>984 前スレ
> おれquicklispには非常に期待してるんだ。ネイティブコンパイラのある言語で、
> ああいうライブラリ管理がある言語って、実は少ないんじゃないかしら。
どういうこと?
機能としてのadsfとの違いがわからない。
quicklispの方がインストールできる率が高いぐらいの認識だわ。
Linuxディストリのパッケージ管理ソフトのapt系やyum系やemerge系やArchLinuxのpacman(yaourt)系みたいなことってadsfでできないの?
Perlとかはどうなん?
4SCHEME餃子 ◆8X2XSCHEME :2011/10/10(月) 00:05:26.51
システムがどうこうよりも結局はリポジトリのメンテナンスにどれだけ手間をかけれられるかって話だよね。
Scheme だと
http://home.gna.org/dorodango/
http://snow.iro.umontreal.ca/
あたりがそれなりに使えるかな。
使ったこと無いけど。

Checken Scheme だけの話なら egg があるし。
http://wiki.call-cc.org/chicken-projects/egg-index-4.html

そういや higepon 氏の言ってた SPON ってどうなったんだろ。
http://wiki.monaos.org/pukiwiki.php?R6RS%2F%BD%B8%C0%D1%BD%EA%2F%A5%A2%A5%A4%A5%C7%A5%A2
5デフォルトの名無しさん:2011/10/10(月) 02:09:04.89
>>3
パッケージ管理で気に入ってるのはLeiningenのclojarsリポジトリかな
もの凄く楽
6デフォルトの名無しさん:2011/10/10(月) 09:14:13.99
>>3
quicklispは依存するライブラリをリポジトリからネットワーク経由して勝手に取ってくるよ。
(要はyumとかaptみたいに)
asdfってそんなことできたっけ?
7デフォルトの名無しさん:2011/10/10(月) 12:57:52.63
>>6
それはさすがにできる。
検索機能があったかは、ようわからん。

というか、他の仕事でSBCLを触れていなくて、どんどん忘れていく。
作りたいもの、いっぱいあるのになあ。
8デフォルトの名無しさん:2011/10/10(月) 14:54:53.33
Clojureだけど、仕事で使える自分は幸せなんだなぁ
9デフォルトの名無しさん:2011/10/11(火) 19:33:47.11
Common Lisp では型宣言出来るみたいだけど、Scheme で型宣言出来るような方言ある?
10デフォルトの名無しさん:2011/10/11(火) 19:45:32.63
Chickenならforeign-lambdaの戻り値に型指定が必要だから似たようなことができる
11デフォルトの名無しさん:2011/10/11(火) 20:36:23.21
Typed Scheme なんてのも
12デフォルトの名無しさん:2011/10/11(火) 20:49:06.85
>>11
今は Typed Racket になってるみたいだな。
http://docs.racket-lang.org/ts-guide/index.html

Racket は敬遠してたけど、ちょっと手を出してみる。
13デフォルトの名無しさん:2011/10/12(水) 01:35:30.13
>>9
KawaいいよKawa
14デフォルトの名無しさん:2011/10/12(水) 01:58:11.38
>>12
へー、Type Inference(型推論)がある。暗黙変換あるのかな。
15デフォルトの名無しさん:2011/10/14(金) 19:12:51.52
関数の返値を

(list a b)
でなくて
(values a b)
にした方が便利な場合ってのが重いつかない

values って何のためにあるの?
16デフォルトの名無しさん:2011/10/14(金) 19:20:18.20
17デフォルトの名無しさん:2011/10/14(金) 19:32:10.44
>>15
卑近な例だと整数の除算とかだと便利
CLだとtruncate
18デフォルトの名無しさん:2011/10/14(金) 19:40:14.29
>15
ハッシュを扱った例を調べてみな。nilがデータ内のnilかデータ内で無いことを
返すためのnilかで使われとる。
たちを扱えるようになってきたら初級から脱却ぢょ。
19デフォルトの名無しさん:2011/10/14(金) 21:41:44.00
動的言語の最適化がしにくい関係で使うものっぽい?
20デフォルトの名無しさん:2011/10/15(土) 00:32:43.06
ほとんどのコンパイラはvaluesの結果をリストにせずスタックに積んで返すだけ。
だから明示的にリストにして返すよりメモリ消費が少ない。
だからリフティングにも便利。
21デフォルトの名無しさん:2011/10/15(土) 02:13:36.59
>>7
ちょっと遅い反応だけど。

多分、ASDF-Installと混同してる。ASDFはファイル間での依存関係を定義したり、
ロードやコンパイルの手順を統一するための枠組み。makeとかに該当する。

そのASDFの枠組みに乗っかって、ライブラリの導入を自動化するのが、
ASDF-InstallやQuicklisp。こちらはCPANやRubyGemsとかと同じ層の枠組み。
ライブラリの自動ダウンロードや検索をするのはこっち。
22デフォルトの名無しさん:2011/10/15(土) 03:01:38.28
>>15
性能が必要なとき、コンシングを避けるために使える。
>>16のリンク先にもあるけど、意味論上の理由を無視すれば、
単に性能への要求が全て。同じことは大体はリストでもできる。
Schemeでの(values)とかの例外を除いて。

多値にあまり必要性を感じない人は結構いて、Gerald Jay Sussmanなんかは

ttp://trac.sacrideo.us/wg/wiki/WG1Ballot1Results
> It is important to allow multiple values that can result in multiple definitions
> and assignments, but it is not apparent to me why we need a special data
> type to implement them.

って言ってる。
23デフォルトの名無しさん:2011/10/15(土) 03:43:18.97
普通に考えれば構造体でも定義して返せばいいわけだし、
わざわざ特殊なものを積極的に使う理由にはならないなあ
>>18の例にしてもnilと区別したいならノードを返すとか他にいくらでも方法はあるわけで
24デフォルトの名無しさん:2011/10/15(土) 05:45:53.17
>>23 何かにラップして返すと、受ける側でアンラップしなきゃならん。
変数に束縛する場合はdestructuring-bindとかパターンマッチが使えるが、
最初の値だけそのまま他の関数に渡したい場合などは一手間余分にかかるし。
それから、APIの互換性を保ったまま後付けで余分な値を返すようにできるのは
仕事でコード書いてると重宝する。単独の値→構造体へと戻り値を変更したら
呼び出してるところ変えて回らないとならないからなあ。

Schemeの多値は二番目以降の値を無視するような使い方ができないので
性能上の要求以外で使うメリットはあまり感じないが。
25デフォルトの名無しさん:2011/10/15(土) 08:20:06.53
CLの多値は使わない分を捨てられたり、足らない分をnilで補ってくれて嬉しいんだけど、
たまに、一部の値を返し忘れてるのをnilにされちゃって、バグの原因に気付けずに頭がおかしくなって死ぬ。
26デフォルトの名無しさん:2011/10/15(土) 10:18:16.19
>>23
特殊かなぁ? 謎だ。Haskellのように、Maybe/Eitherを定義すればできるけど
27デフォルトの名無しさん:2011/10/15(土) 11:11:16.05
>>23
「わざわざ××でなくても○○でいい」という主張は説得力に欠けると思う。
××と○○のどちらに重みを置くかで簡単に逆転するもの。
実際、「わざわざ多値でなくても構造体でいい」という主張に対して >>24 は「わざわざ構造体を使うより多値」って反論だろう。
だけどこの反論は「手間」に焦点をあてて重みを具体的に主張してるのでそれなりに説得力がある。

こういうときには構造体の方が手間が小さいとか、こういうときは手間をかけてもなお構造体の方がいいとか、
「多値を使う理由がない」よりも「構造体を使う理由がある」で主張してくれた方が良い議論になりそうな気がする。
28デフォルトの名無しさん:2011/10/15(土) 14:27:36.16
じゃ言うけど、
多値で返す値は順番に依存してるのが良くないんだよ
構造体は名前を使えるぶん間違いが少ないし順序を変えたりするのも楽
それとSchemeで性能とか言われても説得力がない
構造体返しても最適化のレヴェルはほぼ同じだし
どうすかね
29デフォルトの名無しさん:2011/10/15(土) 15:59:30.79
下らねえ。
30デフォルトの名無しさん:2011/10/15(土) 17:11:17.71
↑そういう応えしか返ってこないんなら反論無しと受け取るよ

構造体はそれ1つを知ってればいいが、
多値は関数それぞれが何を返すのか知ってないといけないのに加えて、
その順番には何の根拠もないから仕様変更に弱い
後で何か付け足す場合とか考えないのかな?
普通に考えれば積極的に使う物ではないという判断に至ると思う
31デフォルトの名無しさん:2011/10/15(土) 17:15:52.57
だから多値を推すなら名前付きにしろって思うんだよ
関数引数にも言える事だけど
32デフォルトの名無しさん:2011/10/15(土) 17:21:13.23
まあ、関数の引数が見逃されてきたのは、
呼び出し側のインターフェースで引数を強制してるからだけどね
可変長引数の使いにくさを見れば多値がいかに迂闊なインターフェースか判ると思う
33デフォルトの名無しさん:2011/10/15(土) 17:46:07.45
多値のせいで例外処理みたいなすっ飛んでく処理とか複雑になってしまわない?
例外受け取っても何が入ってるか判らんとか
R6RS以降追ってないけど
34デフォルトの名無しさん:2011/10/15(土) 17:46:34.57
順番に依存よくないな!Scheme みたいな狭い世界じゃなくて、
数学の世界を名前付き引数に改革しようぜ!
35デフォルトの名無しさん:2011/10/15(土) 18:01:15.40
(set! result (lambda() (values 1 2 3)))
result => 1
(ref-values result 0) => 1
(ref-values result 1) => 2
(ref-values result 2) => 3

とかw
嫌んなっちゃうな
36デフォルトの名無しさん:2011/10/15(土) 18:03:24.20
おっと、括弧が1たりないw
37デフォルトの名無しさん:2011/10/15(土) 18:06:35.96
つまり多値がファーストクラスでないのがいけねえんだってことね
38デフォルトの名無しさん:2011/10/15(土) 18:50:21.53
>>35
何でdestructuringするマクロ使わんのだ。
単にreceiveとかcall-with-valuesの下でリストやベクタ、
構造体を使えば良いだけで、他からは隠蔽できる。

この辺の話は全部>>16と参照元に書いてるよ。
39デフォルトの名無しさん:2011/10/15(土) 19:18:18.53
>>28
「Schemeで性能と言っても説得力がない」と言われちゃうと
Schemeで準リアルタイムシステム書いてる自分の立つ瀬がないんだが。
構造体を作って返すと、最適化でアロケーションを消してもらうのは大変で、
Stalinみたいに全プログラム解析をやるハメになる。多値なら
アロケーションが起きないことが(使ってる処理系で)保証される。
最近GCの性能は上がってるとはいえ、no consingで書くのはバカにならないよ。
そんなコードをSchemeでわざわざ書くな、と言われたらサーセンとしか言えないが。
40デフォルトの名無しさん:2011/10/15(土) 19:22:02.14
>>28 >>30
Schemeでの性能の話に説得力がないとか言われてもなー。
現実で業務とかに使ってる人もいるし、StalinとかはCLの処理系と戦えると思うけど。

それと、構造体を現状の多値の代わりに、というのは色々問題出ると思う。
少なくとも、返す側の関数単体じゃそれが多値の代用として使われるかどうか判断できないから、
Lisp語族で当たり前に行われる、インタラクティブにコンパイルする場合、最適化できないよね?
この辺は自分は詳しくはないので、解決する方法はあるのかもしれないけど。
現実的な(将来コンパイラが十分に賢くなったら、とかでなく)範囲であるなら教えて欲しい。
41デフォルトの名無しさん:2011/10/15(土) 19:32:30.73
被ったw

あと、要素の追加や削除が将来的に起きそうな場所を抽象化するのは当然で、
どこで多値を使うかはケースバイケースだと思う。>>30は極論に見える。

関数の引数と同じで、固定できる部分は複数の値で、他は抽象化されたものを。
そんなにおかしい話かな?
42デフォルトの名無しさん:2011/10/15(土) 19:58:36.30
すっごく素朴な疑問で悪いんだが、多値で使われなかった値って、
そのうちGCされる、って理解で正しい?
43デフォルトの名無しさん:2011/10/15(土) 20:01:41.48
>>42
CLの場合だとスタックに戻されるような実装(コンパイラ)が多数を占めてるからGC対象ですらない。
44デフォルトの名無しさん:2011/10/15(土) 21:12:49.10
値渡ししかできないわけじゃないんだし
効率重視なら多値なんて使わない方がいいけどな
45デフォルトの名無しさん:2011/10/15(土) 21:18:53.43
関数から戻るたびにmake-*するよりはましかと。
46デフォルトの名無しさん:2011/10/15(土) 21:37:39.88
副作用を使っちゃうと、状態を変更する関数を呼んだ後に以前の状態を必要とする可能性がある場合、
オブジェクトをコピーしないといけないから、副作用を伴わない多値のが効率が良いこともあると思うよ。
47デフォルトの名無しさん:2011/10/15(土) 21:42:48.51
多値についてたちが悪い議論はもうやめようよ。
48デフォルトの名無しさん:2011/10/16(日) 02:23:55.43
call/ccで単純に関数の中途で大域脱出し、
デバッグ用途(イミディエイト機能のような)に使いたいのですが、
例を教えていただけませんか。
いまいちcall/ccを使うタイミングがわからないのです
49デフォルトの名無しさん:2011/10/16(日) 08:48:09.05
>>48
イミディエイト機能って何? ググってもわからなんだ。
Chez Scheme とかではエラーのときにデバッグモードになるけど、あんな感じのこと?
汎用的に作るのは難しいか出来ないと思うけど、とりあえず使用例みたいなので目的とするところを示してくれんか。
50デフォルトの名無しさん:2011/10/16(日) 11:24:47.21
>>49
ベクターを操作する巨大な関数です。
一ループごとに文字列を読み込み、見合った操作をして文字列の先頭を削り再帰します。
(define interprit
(lambda (program memory offset)
(cond
((eqv? programの先頭 #\a) 処理)
...
)
;*ここで脱出*
(interprit 削ったprogram memory offset)
)
)
ループする毎に継続をset!して脱出し、
処理を確認したら戻りたいです
51デフォルトの名無しさん:2011/10/16(日) 12:18:26.79
>>50
「処理を確認」をもう少し詳しく。

なんとなく、ブレークポイントを設定してローカルな変数を見たいのかな、
とか思うんだけど、どうなんだろう。
52デフォルトの名無しさん:2011/10/16(日) 13:40:15.08
>>51
大域変数を確認したいです。
53デフォルトの名無しさん:2011/10/16(日) 14:31:14.00
最初はcondないの内部処理は、各条件ごとの内容をそれそれ別関数にまとめて
作って、ひとつの関数から、cond条件わけの関数とそれぞれの関数に分けて作った
ほうが最初はいいよ。そのほうが読みやすくなるので。
何もかも一つでやらそうとするのはあまりいい傾向だとは思えない。
54SCHEME餃子 ◆8X2XSCHEME :2011/10/16(日) 15:49:08.11
>>50
その処理を一般化すると「ループからジェネレータへの変換」と考えられる。
これがそのまま使えると思う。
http://practical-scheme.net/wiliki/wiliki.cgi?Scheme%3agenerator%E3%81%A8do%E3%81%A8while#H-3put3dsr6wpqj
call/cc を使う典型的な例なので call/cc の解説の中では似たようなコードはよくある。

限定継続を提供している処理系ならともっと簡単に書ける。
http://practical-scheme.net/wiliki/wiliki.cgi?Scheme%3a%E9%83%A8%E5%88%86%E7%B6%99%E7%B6%9A%3a%E3%82%A4%E3%83%86%E3%83%AC%E3%83%BC%E3%82%BF%E3%81%AE%E5%8F%8D%E8%BB%A2

そういや限定継続って規格に入ってないし、 srfi にもなってないっぽいなぁ。
racket には shit と reset だけじゃなくていくつかのバリエーションがあるみたいだね。
55デフォルトの名無しさん:2011/10/16(日) 22:34:38.91
>>53-54
くわしくありがとうございました。
56デフォルトの名無しさん:2011/10/16(日) 23:05:42.50
余談ではありますが、
call/ccとdelayを用いてpromiseを返却し、逐一動作が出来ました。
57デフォルトの名無しさん:2011/10/17(月) 01:32:57.33
gambitcやchikenでvalues使うと大幅に速度が上がるっていうなら
できるだけ使うように心がけるかな
58デフォルトの名無しさん:2011/10/18(火) 11:18:56.17
>>54
糞コテは巣に帰れ
59デフォルトの名無しさん:2011/10/18(火) 17:32:08.25
>>58
SCHEME餃子の巣はやっぱSchemeスレなんじゃね?
60デフォルトの名無しさん:2011/10/23(日) 09:16:03.19
shibuya.lisp はどーだった?
61デフォルトの名無しさん:2011/10/23(日) 10:59:49.40
クロージャスレから引越しというか。
授業が奥乃先生と複数担当態勢だったりしたのは引き継ぎの目的もあったのかな。

最終講義のアナウンスがあるとしたら年明けかな?
62デフォルトの名無しさん:2011/10/23(日) 11:51:45.52
>>60
Shibuya.lisp TT#7の動画をニコニコ動画とYouTubeにアップしました。
http://www.nicovideo.jp/mylist/28336529
http://www.youtube.com/playlist?list=PLEAB9C327450DA7D3
63デフォルトの名無しさん:2011/10/23(日) 14:03:45.42
某氏と某氏のトラブルも収まったのかな。 Shibuyaでは喋らんと言ってたけど
良かったんじゃない?
64デフォルトの名無しさん:2011/10/23(日) 15:11:06.90
一応当時、熱くなって申し訳ない、みたいな感じで本人謝罪してたよ。
あとは、相手もう運営側から手を引いてるし。

何にせよ、また出てくれたのは良かったね。
65デフォルトの名無しさん:2011/10/23(日) 19:34:34.03
>>62
ひげぽん氏の声はよく聞こえて良い。
滑舌が悪い人や、集音がイマイチなときがあったりするのはなんとかならんかな。
マイクゲインも大きすぎると雑音も拾うから骨伝導タイプのマイクを使うとか。

それと、映像はもう直接PCに繋げちゃってもいいような気がする。
66デフォルトの名無しさん:2011/10/23(日) 21:16:06.97
でかい会場のスクリーンでは見えるけど、中継では見づらい、という場面で
ズームしたり、身振りが入った説明をしてるのでカメラを振ったり、という時に
中継担当者の手間が増えるので、そのへんは微妙かも。
67デフォルトの名無しさん:2011/10/23(日) 23:00:51.42
>>66
多くは発表資料も公開してるからそっち見ながらでだいたい問題ないかもな。
68デフォルトの名無しさん:2011/10/23(日) 23:25:29.76
これだけ後からスライドの画像を入れてるけど、こういうのはやっぱ結構手間かかるのかな。
http://www.nicovideo.jp/watch/sm5008319
見易さ的には好ましいとは思うけど、
資料見ながら聞けば済む話ではあるからそこまでするほどのもんでもないって言えばそうだしなぁ。
69デフォルトの名無しさん:2011/10/24(月) 01:45:38.40
なあ、Monaの開発は順調さ build5
http://hibari.2ch.net/test/read.cgi/os/1314741952/
70デフォルトの名無しさん:2011/10/24(月) 06:22:17.84
スライド画像で差し替えるのは、ページ送りをプレゼン時と同じタイミングにするのが結構難しいです。
元映像見ながらだとなんか微妙にずれるので、わずかに入っているスペースキーを叩く音とかを手がかりにしてました。

あと、音声についてはいつも悩ましくて、人により声質やマイクの持ち方が違うのでなかなか安定しません。
あまりに聞き取りづらいのは、編集時にボリューム変えてますけど、あまりやり過ぎると雑音まみれの変な音になるので悩ましいところです。
発表者の机の上にボイスレコーダを置いておいて、あとから合成するのがいいと思うけど、これもマーカーみたいなのがないと合わせるのがちょっと難しかったり。
71デフォルトの名無しさん:2011/10/24(月) 08:23:17.05
UST中継では入力オーバーっぽいノイズ入ったりしてたよね。
72デフォルトの名無しさん:2011/10/24(月) 08:41:33.58
音割れしてるのがひとつあって、体調も悪かったからそのまま切っちゃったんだけど、
あれは音量の調整のミスなのか、発表者の声が大きすぎたのか。

さておき、いつも動画アップロードお疲れ様です。
73デフォルトの名無しさん:2011/10/24(月) 10:02:52.03
ヘッドセットやピンマイクで強制するとか?
いや、そういう面倒な事こそLISPを活用してだな
74デフォルトの名無しさん:2011/10/24(月) 10:23:17.45
どう頑張ろうと声の大きさを一定にすることは無理でしょ。声出してるのが
プロのアナウンサーとかじゃないんだから。

最初のAD変換で音が割れたりしてたらリカバリーのしようがないので、
そこの機材で入力レベルの調整をすればいいんだけども。
75デフォルトの名無しさん:2011/10/24(月) 11:01:09.37
・マイクを違う距離に数台用意してマルチトラック録音して後で選別する
・音圧拾ってレールかなんかで距離を自動調節する装置を作る
76デフォルトの名無しさん:2011/10/24(月) 14:07:01.53
PCMレコーダーに自動レベル調整機能が付いてるものがあるようだけど、
PCだと難しいんかな?
77デフォルトの名無しさん:2011/10/25(火) 00:08:48.51
細かいこと気にすんなよ
音割れしてたら見るのやめる程度の内容なんだから
78デフォルトの名無しさん:2011/10/25(火) 06:29:44.08
RIP
79デフォルトの名無しさん:2011/10/25(火) 06:45:30.26
ご冥福を祈ります。
80デフォルトの名無しさん:2011/10/25(火) 07:57:08.33
ジョブス、リッチーに続いてマッカーシーまでもか。

R.I.P.
81デフォルトの名無しさん:2011/10/25(火) 08:07:00.76
82デフォルトの名無しさん:2011/10/25(火) 08:19:07.05
こんどはマッカーシーが天寿を全うしたのか。
RIP
83デフォルトの名無しさん:2011/10/25(火) 13:07:35.50
>>77
 発 者 同         . 。_   ____           争
 生 同 .じ     .    /´ |  (ゝ___)          い
 .し 士 .レ      .__/'r-┴<ゝi,,ノ   ro、      は、
 .な で .ベ      ∠ゝ (ゝ.//`   ./`|  }⌒j
 .い し .ル        } ⌒ /`ヽ、_∠l,ノ ・ヽ´
 .! ! か の       /  ´..:.} >、、___,  .r、 ソ、`\
             /   ..:.:.}   /   |∨ ` ̄
            /   ..:.:./    |   丶
           / _、 ..:.:.:.{    .{.:.:.   \
          {   ..:Y  .ゝ、   {.:.:.:.:.    ヽ
          |、  ..:/ 丿 .:〉   >.- ⌒  .  ヽ
          / {. ..:./ ソ ..:./  .(    ..:.:.:`  ..:}
         ./..:.:}.:.:./ ヘ、 ..:./   .\ ..:.:r_,ノ、.:.:}
        ./..:.:/|.:/   {.:./     X.:.:}.}   X X
        /..:.:/ .}.:|    }:/       .Y丶ヽ  Y.:Y
  . __/.:/ { }  《.〈、     _,,__>.:》丶   Y.:\
  /.:.:.:.:.::/   !.:.:ゝ  ゝ.:. ̄ヾ ´:.:.:.:.:.:.:.:.:ヾゝ   \.: ̄>
84デフォルトの名無しさん:2011/10/25(火) 13:30:32.58
あびしーえる1.0リリースだって
http://abcl-dev.blogspot.com/2011/10/abcl-100-released.html
85デフォルトの名無しさん:2011/10/25(火) 13:32:20.92
http://hatsukari.2ch.net/test/read.cgi/news/1319513713/
ν速にはスレが立った。マ板はまだだが。
86デフォルトの名無しさん:2011/10/26(水) 23:40:12.57
某声優ユニットの方も7月で活動終わってた
QEPD
87デフォルトの名無しさん:2011/10/29(土) 12:46:50.75
88デフォルトの名無しさん:2011/10/29(土) 22:21:58.66
GCもマッカーシー由来だったの
89デフォルトの名無しさん:2011/10/29(土) 22:30:15.52
(define (f x)
(define-macro (bl)
'(if (> x 0 ) #t #f))
(bl)
)
(f 10)

racketでは動くけど、他の処理系ではやっちゃいけない?
90デフォルトの名無しさん:2011/10/29(土) 22:34:59.75
そもそもdefine-macro自体がRnRSにないので、
あんま気にしても仕方ないと思う。
91SCHEME餃子 ◆8X2XSCHEME :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デフォルトの名無しさん:2011/10/30(日) 00:29:23.88
なんだよボーイズラブって
93デフォルトの名無しさん:2011/10/30(日) 03:34:57.41
限定継続使われてないからメモリーリークしてたんかね
http://groups.google.com/group/plt-scheme/browse_thread/thread/a310b7cba8fae651/fa85558e8a5115bf
94デフォルトの名無しさん: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デフォルトの名無しさん:2011/10/30(日) 12:47:34.04
>>91
各処理系がdefine-macroをどう実装してるかが問題なんだから、
RnRSでdefine-macroをどう実装するかはこの場合関係ないだろ。
独自の定義でオリジナルを上書きして差異を吸収するってんなら別だけど。
9694: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デフォルトの名無しさん:2011/10/30(日) 14:12:11.24
何を期待してるのか判らんから助言しようもないが、
matchの仕様を見るにpat部分は普通の評価はされない場所だから
何か勘違いしてるんだろ。例えばパターンの最初の2行は
[(- z) (list z '-)]
[(/ z) (list z '/)]
でいいんじゃないかと。
tmplもそう書き直せば多分動くでしょ。
全く確認してないが。
98デフォルトの名無しさん:2011/10/30(日) 14:13:55.83
あ、だからpat部分は評価されないからダメだよ
出てくるシンボルは「パターン変数」になるそうだから。仕様よく読め。
99デフォルトの名無しさん:2011/10/30(日) 18:50:28.04
おまいらそんなに括弧が好きなの?
かっこつけんなよ。
100SCHEME餃子 ◆8X2XSCHEME :2011/10/30(日) 20:16:14.53
>>99
そのダジャレは面白いと思って書いてんの?

煽りだろうがあえてマジレスすると、括弧そのものではなくてマクロが重要だろ。
Lisp 風のマクロを実現するためにS式表記が相性が良かったからこの表記が維持されてるってだけ。
外観ではS式の優位性ってのはそれほど無いんじゃないか?

例えば Python で構文木を操作しようと (マクロ的なことをしようと) した場合のめんどくささはこれを見ればよくわかる。
http://www.unixuser.org/~euske/doc/python/python-lisp-j.html#macros

マクロが要らないならプログラマが直接S式で書く意味はあんまり無いと思う。
見難いと感じないならデメリットも特に無いとは思うけど。
101デフォルトの名無しさん:2011/10/30(日) 21:23:48.25
templated match macroとか作ったら論文になるんだろうか
どんな雑誌に投稿するのか知らないけど
102SCHEME餃子 ◆8X2XSCHEME :2011/10/30(日) 23:31:17.46
ずいぶん前の話だけど、 Active Basic スレで正規表現ベースの構文定義を提案してた奴がいたなぁ。
あんまりフリーダムでも困るけど、 Lisp の場合は結局はS式だから、それがちょうどいい枷にもなってる気がする。
103デフォルトの名無しさん:2011/10/31(月) 00:16:26.42
個人的には、演算子の優先順位をなくせるという利点も推したい。

他にも、パースしやすかったり、式単位での編集を実装する目印になったり、
S式の利点は案外ある。特に、式単位で編集できないと困る人多いんじゃない?
104SCHEME餃子 ◆8X2XSCHEME :2011/10/31(月) 00:39:19.72
>>103
優先順位の問題は確かに単純になっていいところではあるなぁ。
でも、それは簡潔さとのトレードオフがあるから一概に利点とも言えないかも?
今、思い付いたんだけど、どんな関数にしろマクロにしろ特殊形式にしろ「名前が付いてる」ってのは
ドキュメント引いたり定義場所へ移動しやすいって利点はあるね。

パースしやすいってのは処理系の実装者にとってはそうかもしれないけど、ユーザーに対する利点になるかな?
データのシリアライズを write 一発で出来て、 read で読んだら構造が出来上がってるってのは楽だけど、
プログラム自体をS式で記述するってのとは別の話では?

編集が式単位っていうのは良く挙げられるけど、他の言語でも単位が違うだけで何らかの塊はあるわけで、
実際にその塊単位での編集や移動も出来るわけで、開発環境のサポート次第じゃないかな?
105デフォルトの名無しさん:2011/10/31(月) 01:54:05.12
S式は構文木を表しているから、逆に機械的に元の文脈を読み取り辛い気がする。
つまり、IDE泣かせ。開きカッコの直後に、どんな候補だせばいいんだろう。
IDE使わないからどうでもいいけど。S式好きだし。
106デフォルトの名無しさん:2011/10/31(月) 02:22:18.54
S式で書くとコードがツリー状になるから,切り取るときの目安にしやすい,と思う.
インデントされていればそれがよりはっきり見えるし.
命令型のコードは,意味を成すコードの塊を抜き出すのがかったるいと感じる.
107デフォルトの名無しさん:2011/10/31(月) 12:08:16.87
括弧と頭のシンボルでほぼ全てを表現してるから
文脈の探索自体は楽なんじゃないかと思うけど
問題はマクロの処理かな
マクロ内で定義したキーワードとかが候補に出ないんでは
あんまり意味がないだろうし
展開したものを逆に辿っていくのは難しい
108デフォルトの名無しさん:2011/11/03(木) 00:28:51.31
goshです。
質問です。
数ページにわたるCGIがあり、POSTパラメータを渡すのですが、継続を渡せないかとかんがえています。
中途から処理を再開すれば、無駄無くプログラミング出来ると思ったからです。

Q1.継続はなんらかの形でコンテナ化して保管できますか?
Q2.継続は一度インタプリタが終了しても有効ですか?
109デフォルトの名無しさん:2011/11/03(木) 00:34:12.31
両方無理。手続きの時点でできないので、継続も無理。
110SCHEME餃子 ◆8X2XSCHEME :2011/11/03(木) 01:01:48.77
>>108
継続そのものをシリアライズするのは原則として無理です。
継続には環境フレームやら何やらがぞろぞろとくっついていて処理系の内部構造と不可分なので、
もしやろうとするなら、処理系が最初からシリアライズを強く意識した実装にする必要があります。

Gambit だと出来ますが、実用するなら不要な環境を捕捉してしまわないようにかなり注意が必要で、あまり簡単とは言えないようです。
111デフォルトの名無しさん:2011/11/03(木) 02:21:46.20
オブジェクトの印字表現が全て決まってたら簡単だったのにねえ
つまんない制限だよねえ
112デフォルトの名無しさん:2011/11/03(木) 03:09:32.82
Schemeオブジェクトが全て印字/読み込み可能だったとしても、環境フレームからは
openしているファイルディスクリプタだの何だのが間接的に参照されてるから
そう簡単にはいかないよ。
113108:2011/11/03(木) 18:17:31.61
>>
そうですか…残念です。
とにかくありがとうございます。
114デフォルトの名無しさん:2011/11/03(木) 20:03:38.36
結局継続がファーストクラスなんて役に立たないってこった
115デフォルトの名無しさん:2011/11/03(木) 21:19:02.42
たしかにバカの役には立たない
116デフォルトの名無しさん:2011/11/03(木) 22:41:25.16
kahua とかは?
117デフォルトの名無しさん:2011/11/03(木) 23:23:33.61
Kahuaとかはアプリケーションサーバとかの層のプロダクトなので、
基本的に起動し続け、継続をシリアライズしたりする必要はないよ。

継続を活用したウェブ開発をする場合、CGIだと厳しいと思う。
118SCHEME餃子 ◆8X2XSCHEME :2011/11/04(金) 00:23:44.47
>>106
意味的な単位と表記上の単位が一致しやすいってことですね。
Lisp だと小さい単位で書きがちということもあって納得です。
119デフォルトの名無しさん:2011/11/04(金) 03:42:10.30
120デフォルトの名無しさん:2011/11/04(金) 03:53:38.35
121デフォルトの名無しさん:2011/11/04(金) 19:37:26.64
宇宙全体をシリアライズできなくても
地球全体をシリアライズすれば十分
122デフォルトの名無しさん:2011/11/04(金) 21:10:14.05
ありんことみじんこじゃ全然違うと思いますけどー
永続化する場合こんどはインスタンスの管理の問題があるけど
123SCHEME餃子 ◆8X2XSCHEME :2011/11/04(金) 22:32:53.69
何を言いたいのかわかんねーよ。
比喩を持込むのはなるべく避けろってのは議論の基礎だろ。
もうちょっと具体的に言ってくれんか。
124デフォルトの名無しさん:2011/11/05(土) 00:35:36.71
餃子がそれを言うのかw
125デフォルトの名無しさん:2011/11/05(土) 00:44:10.21
餃子でもシュウマイでもいいじゃないか。by Lispトムヤンクン
126デフォルトの名無しさん:2011/11/05(土) 08:42:02.91
もしかし継続って、外出しできてこそ本領発揮するんじゃないのか?
最初から仕様にもりこんでおけば今頃は超有名になってたよ
127SCHEME餃子 ◆8X2XSCHEME :2011/11/05(土) 12:55:12.57
>>124-125
行者って書こうとして間違えたんじゃないんだからねっ!!
128デフォルトの名無しさん:2011/11/05(土) 12:59:27.30
行者だと無条件であぼんされそうだから餃子でよかったと思う
129デフォルトの名無しさん:2011/11/05(土) 13:03:13.19
>>123
なんでときどきDQN口調になるんだよw
130SCHEME餃子 ◆8X2XSCHEME :2011/11/05(土) 13:22:34.67
>>129
煽らないとすぐに過疎るからだよ。
極論を書いたりするのも反論してみろっていう煽りだよ。
言わせんな恥ずかしい
131デフォルトの名無しさん:2011/11/05(土) 14:40:38.83
餃子のせいで昨日の夜餃子食べたくて大変だった。

部分継続をシリアライズして、HTMLに埋め込むっていう、上で出てた論文は面白かった。
みんな色々考えてんだねー。
132 ◆QZaw55cn4c :2011/11/05(土) 14:47:50.97
>>130
(^^)
133デフォルトの名無しさん:2011/11/05(土) 15:36:31.64
>>130
あんたがそこそこ勉強してきた人だってこと多くの人がわかってんだから
煽らんでもいいよ。それより食らいつくネタを考えたり、拾ってきたり
するといいよ。そのほうが健全なスレになる。by Lispトムヤンクン
134デフォルトの名無しさん:2011/11/05(土) 15:49:02.65
継続外出しはR7RSで
いつでも再開できるのがSchemeの常識に
135SCHEME餃子 ◆8X2XSCHEME :2011/11/05(土) 16:07:36.48
>>133
俺が勉強してたらどうして煽りが要らないんだ? 意味わかんね。

議論しようぜってのはサイエンス的にもエンジニアリング的にも民主主義的にも美徳だろ。
俺に間違いがあるってのなら、反論しろよ。 意見を出せよ。
議論自体を拒否するのは不誠実だぞ。
136デフォルトの名無しさん:2011/11/05(土) 16:16:36.44
>>135
何もわかってない奴が盛り上げよう?あるいはかまってもらおうと
する場合は煽りという選択肢を選びがちという事だよ。あなたの
場合は、その選択肢を選ばなくても他の選択肢で十分盛り上げられ
る技量を持ってるでしょと言ってるだけ。by Lispトムヤンクン
137デフォルトの名無しさん:2011/11/05(土) 16:46:04.28
とりあえず行間はうめといたからこれで趣旨はわかるだろう。
最後に、餃子には期待してるよ。
138SCHEME餃子 ◆8X2XSCHEME :2011/11/05(土) 16:53:07.53
継続をシリアライズしたりプロセスをまたいで移送したりできたら夢が広がりんぐ。
>>112 も言うようにポートのような外部とのインターフェイスだとか、
破壊的な処理だとかを考えなければ関連するデータを全部書出せばいいだけなので
いくらかの (かなり大きな「いくらか」だと思うけど) 制限有りでよければ出来そう。
というか、 Gambit 等ではやってるわけですし。

規格にするならあとはその制限をどのレベルにするのが妥当かって話ですよね。
139SCHEME餃子 ◆8X2XSCHEME :2011/11/05(土) 17:00:05.29
例えば (継続に一般化すると説明が面倒なのでクロージャで説明)

(let ((x 1))
(write (lambda()(set! x (+ x 1))))
(write (lambda()(set! x (+ x 2)))))

みたいにふたつのクロージャを書き出したとして、
元々は共有しているはずの x が分断されてしまうのはつまらないので、
set! したら既に書き出したクロージャにも波及したりしたら面白いとか思った。
面白いだけで使いどころがないし非現実的だけど。

無難な落とし所としてはあくまで書き出した時点の環境ってことにするしかないかなー
140SCHEME餃子 ◆8X2XSCHEME :2011/11/05(土) 17:08:41.15
Petite Chez Schme の 8.4 を入れたらイメージをダンプするオプションが無くなってたよ。
かわりに --compile-imported-libraries なるオプションが出来てた。
R6RS の実行モデルに合わせて変えたってことだと思うけど、
--boot オプションはあるんだよな。 暫定的な処置ってこと?
教えてエロいひと
141デフォルトの名無しさん:2011/11/05(土) 17:23:26.90
>>139
「書き出す」っていうのは従来のファイルシステムを想定してると思うんだけど、
その想定は妥当なの? OS自体が一つのSchemeの実行イメージに載ってて、
メモリが自然に永続化されるようなモデルならそういうことも可能かもしれない
(効率との折り合いはあるけど)。Smalltalkの環境みたいな。
142139:2011/11/05(土) 17:50:35.07
今、サブマシンからの書き込みなのでトリップ無しで御免。

>>141
非現実的ってのはそこんところですね。
出力先を特殊なデータベースとかにするのも、
言語でそこまで踏み込むのは Scheme らしくないし。
さすがにこのへんは余興というか、面白いだろうなーという妄想レベルの話です。
143139:2011/11/05(土) 17:57:18.27
>>141
書き出すこと自体については可能だと思います。
Common Lisp なんかでは実行中のイメージをダンプしたりは普通ですし、
それをクロージャに繋がってるところだけに限定するか、
無理なようなら効率を無視してまるっと書き出すとか出来るでしょう。
144デフォルトの名無しさん:2011/11/05(土) 18:19:45.22
SchemeでFizzBuzzってどこまで小さくできるの?
145デフォルトの名無しさん:2011/11/05(土) 22:01:38.08
>>142
一瞬サブマシンガンに空目した。
146デフォルトの名無しさん:2011/11/05(土) 23:10:28.83
http://golf.shinh.org/p.rb?FizzBuzz
ここでは、77バイト
147デフォルトの名無しさん:2011/11/06(日) 04:30:49.03
>>145
俺漏れも
148SCHEME餃子 ◆8X2XSCHEME :2011/11/06(日) 08:55:42.40
>>136
知るかボケ
にちゃんねるに何を期待してんだ?

ガキは家へ帰ってパパのチンポでもしゃぶってろ
149デフォルトの名無しさん:2011/11/06(日) 10:45:52.49
>>148
ひどいなw
これ言われたら超屈辱的だわwww
150 ◆QZaw55cn4c :2011/11/06(日) 10:54:33.95
ままのおっぱいじゃないんだ‥‥‥。
151デフォルトの名無しさん:2011/11/06(日) 11:18:43.42
ナッパさまのクンッ!が必要だな
152デフォルトの名無しさん: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
知るかボケ
にちゃんねるに何を期待してんだ?

ガキは家へ帰ってパパのチンポでもしゃぶってろ
153SCHEME餃子 ◆8X2XSCHEME :2011/11/06(日) 14:11:56.96
いや…その書込みは別に意味はねえ ただの悪意よ
154デフォルトの名無しさん:2011/11/06(日) 14:37:34.53
処理系がシステム巻き込んでクラッシュするようなプログラムを出してこそ、悪意。
155デフォルトの名無しさん:2011/11/07(月) 15:54:39.42
>>153
悪意はある反面あなたの精神的な未熟さだけは理解できました。
By Lispトムヤンクン
156デフォルトの名無しさん:2011/11/07(月) 16:06:06.82
>>149
当事者としてはすこぶる不愉快だが、2ちゃんだからこの程度のことは書く
人がいてもおかしくはないですからね。トムヤンクン
実際に対面して同じ事を目の前で言えるような人とは思えないし、
そこまで肝がある人じゃないだろう。それができるのが2チャンです。
心理的に不安定な人という印象だけが残ってしまったのも事実なのです。
これ以上は時間を捨てるようなものであり、オフトピでもあるので
これで失礼します。
157デフォルトの名無しさん:2011/11/07(月) 17:32:10.79 BE:1820063039-2BP(0)
>>156
何この粘着君。
空気読まない奴だと思ったらわかった上で乱してんのか。
タチ悪いわー
158デフォルトの名無しさん:2011/11/07(月) 20:18:07.26
>>157
自己紹介してんじゃねえよ
159デフォルトの名無しさん:2011/11/07(月) 22:01:30.77
30過ぎるとタチ悪くなるよ
160デフォルトの名無しさん:2011/11/08(火) 21:59:49.89
数ある(のかどうかわからないけど)関数型言語であえてLISPを選ぶ理由って何?
それと関数型って言うとLISPの他はMLっぽいのが多い気がするけど他の系統ってどんなのがある?
161デフォルトの名無しさん:2011/11/08(火) 22:03:20.53
LISPをマルチパラダイムやで?
162デフォルトの名無しさん:2011/11/08(火) 22:03:29.71
LISP「は」
163SCHEME餃子 ◆8X2XSCHEME :2011/11/09(水) 00:42:50.37
>>160
どういうものを関数型って呼ぶかは明確な定義があるわけじゃありません。 でも Scheme や CL はマルチパラダイムを標榜してはいますね。 LISP 族の中には純粋関数型のものだってあると思いますが、それは少数派。
関数型的な特徴は「プリミティブ」であって、その上に様々なパラダイムを載せられるのが LISP の強力な点だとされています。
例えば Java だって関数型のアプローチでプログラムすることは出来ます。 C++ を定理証明に使うアイデアもあります。
http://www.kmonos.net/wlog/102.html#_0103091022
でも、 Java は関数型ではなくて、 C++ は定理証明器ではありません。 何故なら、そういった書き方はプログラマがそういうパターンに沿って書くことが一応可能であるということであって、そのように書くための道具 (語彙) を作ることが難しいからです。
つまり、抽象度の違いです。 Java は手続的なアプローチに抽象化する道具は揃っていますが、そうではないパラダイムを持ち込もうとすると言語のサポートは望めないのです。
一方で、 LISP はどうでしょうか? SICP にあるような Prolog もどきや回路シュミレータを見ればわかるように、一旦ライブラリを構築してしまえば「もはやそういう言語であるかのように記述できる」のです。
これらの差が生じるのは、一般的な言語における抽象はそれぞれの言語ごとでのパラダイム (クラスとかテンプレートとか) が単位であるのに対し、 LISP ではS式という「記法」が単位であるからだと私は考えています。
あらゆるパラダイムをひとつの言語で実現できて、時には混在もできるというのは圧倒的な強みになると思います。 それが、私が LISP (Scheme) を好む理由です。 下手するとカオスになるというデメリットと隣りあわせではありますけどね。
164デフォルトの名無しさん:2011/11/09(水) 00:56:34.33
>>163
そのトリップ、SCHEMEはともかく8X2Xって何?
165デフォルトの名無しさん:2011/11/09(水) 01:09:43.02
>>163
JavaとかCだと、文と式があって、言語の拡張=文の追加・変更が難しい。
LispはS式で統一されてるので、Lisp自身の拡張が容易、ってのが大きいんじゃないかな?
166デフォルトの名無しさん:2011/11/09(水) 01:09:51.42
>>164
あまりだろ。
167SCHEME餃子 ◆8X2XSCHEME :2011/11/09(水) 07:19:31.37
>>164
16倍ってことだよ
168デフォルトの名無しさん:2011/11/09(水) 07:42:05.03
16bit
169デフォルトの名無しさん:2011/11/09(水) 12:10:28.17
理屈ではそうだけど
現実世界で圧倒的に役に立っているのは
JavaやC++なんだけどな
170デフォルトの名無しさん:2011/11/09(水) 12:15:21.47
ずいぶん狭い現実世界だな
171デフォルトの名無しさん:2011/11/09(水) 13:20:04.76
餃子の相手をする人の相手をすることはない
172デフォルトの名無しさん:2011/11/09(水) 15:31:18.24
やあ、言語の寿命が心配なのか?

LISPの言語拡張は、S式が作り出した知恵の一つ、いや武器か。
普通のやつらは決して辿り着くことができないLISPの英知として、
S式が我々に与えたものだ。昔、規格策定で起きた大きな抗争の時にな。
あの時はホント、まいったよ。
見ての通り、継ぎ目すらない美しいフォルムだろ?
一体どんな仕組みでできてるのか、調べれば判るだろうが、
すまない。私には興味がないんでね。
詳しい事は、まだArc作ってるポールにでも聞いてみるんだな。
何か知っているんじゃないか?

S式。
ろっと、驚かせてしまったようだな。
これは他の言語で言う、演算子でも文でもない。
いわばS式だけが作り出せる構造体だ。
ただ実行するだけでなく、データとして取り出せる。
例えば、この無数の括弧。気を付けろ、数えると一瞬で悟ってしまうぞ。
悟りとは何かだって?
ハハハハ、それは昨日言っただろう?
あ、すまない。君にとっては明日の出来事か。
いや、もっと先だったかもしれないな。
その日が来たら、また説明しよう。
173デフォルトの名無しさん:2011/11/09(水) 16:22:15.67
ttp://xyzzy.s53.xrea.com/reference/wiki.cgi?p=interactive
これの
interactive {INTERACTIVE-STRING {PARAMETER}*|LIST}
っていう引数の書き方はなんなんでしょうか?
正規表現的なようでよく分かりません
174デフォルトの名無しさん:2011/11/09(水) 18:34:02.30
>>170
どこの現実世界にいるんだよ
おまえは
175デフォルトの名無しさん:2011/11/09(水) 18:39:34.59
アシタカ「LISPは死なないよ.構文木そのものだから」
176デフォルトの名無しさん:2011/11/09(水) 19:03:51.75
つ AST
177デフォルトの名無しさん:2011/11/09(水) 22:39:53.45
なんだかんだ言って、結局はLispだけ残ってきたわけだしね。
178デフォルトの名無しさん:2011/11/09(水) 23:21:14.60
>>163
そもそもなんでトリップ付けてんの?
NGワードに設定しやすくていいけど。
179デフォルトの名無しさん:2011/11/09(水) 23:47:03.41
>>173
波カッコ{} オプション
スター* 0回以上の繰り返し
縦棒| または
つまり、引数は無くても良い。ある場合は次の2つのうちのいずれか一方。
INTERACTIVE-STRINGの後ろに0個以上の任意個のPARAMETER
LIST

BNFってやつかな。
180デフォルトの名無しさん:2011/11/10(木) 00:12:37.84
Lispを使うと普通のやつらの上を行けますか?
また具体的にどのように上を行くのでしょうか?
181デフォルトの名無しさん:2011/11/10(木) 00:17:37.91
上をいけたのは他の言語が未成熟だった昔の話
今じゃ下にしがみつくのがやっと
182デフォルトの名無しさん:2011/11/10(木) 00:18:01.22
※行けと言うだけであり、行けることを保証するわけではありません
※具体的な方法は確認されておりません
183デフォルトの名無しさん:2011/11/10(木) 00:21:30.75
>>177
俺が業界に入って以来VBも残ってるよ
俺が業界から去っても多分残ってると思うよ
そういうスパンで区切ると他の言語でも別に問題ないと思えてくる
184デフォルトの名無しさん:2011/11/10(木) 00:32:58.75
普通のやつらの上を行けで思い出したけど
彼の作った言語はどうなったんだ
名前忘れて思い出せないけど
185デフォルトの名無しさん:2011/11/10(木) 00:34:29.97
ちょっと前curlって言語があったな
186デフォルトの名無しさん:2011/11/10(木) 03:13:45.23
>>184
Arcは普通にバージョンアップとかされながら、
一部の人に使われてるみたいよ。
187デフォルトの名無しさん:2011/11/12(土) 00:46:31.15
188デフォルトの名無しさん:2011/11/12(土) 12:40:45.36
gaucheでsxmlをhtmlに書き出したいのですが、分からないことがあります

htmlでいうところのh2とh3の属性値を見て、
id が設定されていなければ連番のidを独自に設定したいです
それ以外の要素は普通にhtmlへと書き出します

Gauche:SXMLとSXPath

http://practical-scheme.net/wiliki/wiliki.cgi?Gauche%3ASXML%E3%81%A8SXPath

Gauche ユーザリファレンス: 11.36 sxml.tools - SXML構造を操作する

http://practical-scheme.net/gauche/man/gauche-refj_159.html

このあたりを見てみましたが、どれを使えばよいのかよく分かりません
よろしくお願いします
189デフォルトの名無しさん:2011/11/12(土) 13:41:55.63
gaucheのさぽせんに聞け
190SCHEME餃子 ◆8X2XSCHEME :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デフォルトの名無しさん:2011/11/12(土) 18:43:04.34
>>188
SXMLは基本リストを使った単なるツリーなので、
ツリーを操作するのと同じで問題ないよー。

>>190みたいに副作用で破壊的に変更しても良いし、
map-unionとかで走査して、置き換えても良いし。
192デフォルトの名無しさん:2011/11/13(日) 00:14:17.95
JavaScriptでStalinみたいな(JIT含む)コンパイル時型推論の成果が取り込まれてるのかー。
LLVM経由の下流でも使えるなら、成果共有できればいいのにな。

Fast and Precise Hybrid Type Inference for JavaScript
http://people.mozilla.org/%7Elmesa/ti-draft.pdf
The Impact of Optional Type Information on JIT Compilation of Dynamically Typed Languages
http://www.masonchang.com/storage/papers/dls05-chang.pdf
193デフォルトの名無しさん:2011/11/13(日) 10:01:22.66
取り込まれてるレベルじゃなくて、
この分野はJavascriptがJavaと
一緒に最先端を形成してる。
pluginによる言語機能も
メタサーキュラーJITに組み込まれる
実装が広く出回り始めたり。
194デフォルトの名無しさん:2011/11/13(日) 10:58:26.37
Gaucheのtext.html-liteで
特定の条件を満たした時に
複数のHTML:p手続きを実行?するにはどうすればいいのでしょうか
例を出すと
(when test (HTML:p "foo") (HTML:p "bar"))
のように書くと、最後のbarのみが出力されてしまいます
意図しているのはどちらも出力させることです
195デフォルトの名無しさん:2011/11/13(日) 11:42:13.97
>>194
どうせ最終的に write-tree するんだろうから、↓でいいんじゃないか?

(if test (list (html:p "foo") (html:p "bar")) '())
196デフォルトの名無しさん:2011/11/13(日) 18:31:53.54
>>194
html:pとかは、HTMLを出力するのではなくて、
文字列やシンボルで表現されたHTMLのツリーを返すだけの関数。
だから、whenの仕様通り、最後の式の(html:p "bar")の値が返される。

>>195みたいにリストで括るか、html:divとかで括るかすれば良いよ。
197デフォルトの名無しさん:2011/11/13(日) 22:29:00.85
>>190-191
ありがとうございます。
sxpath の使いどころの流れが見えてきました。
いろいろと試してみます。
198デフォルトの名無しさん:2011/11/13(日) 22:57:40.66
竹内関数で音楽生成 - aikeの日記
http://d.hatena.ne.jp/aike/20111112

Fruity Wrapper ってソフトを使っているみたいだけど、
takの再帰処理毎に3和音を生成->アルペッジョを生成てなことをしているのかな
tak関数のこういう使い方は思ってもいなかったので面白い
199デフォルトの名無しさん:2011/11/13(日) 23:11:59.47
ほかの使い方は思っているのかよ
200デフォルトの名無しさん:2011/11/13(日) 23:44:45.49
>>199
普通のプログラマがtak関数の応用について1%考えているとして、
がんばって考えた人が2%だとすると、98%ぐらい考えられていないからなあ。
201デフォルトの名無しさん:2011/11/14(月) 00:08:19.53
まあどうでもいい
202デフォルトの名無しさん:2011/11/14(月) 03:15:01.10
>>198
メガデモ的でもあるな、なんかちょっと感動した
203デフォルトの名無しさん:2011/11/14(月) 06:40:13.56
インタプリタとかで、関数の再帰呼び出しの性能を評価する
マイクロベンチマークとしては割と見かける部類だと思う
204デフォルトの名無しさん:2011/11/14(月) 08:42:59.60
ベンチマークとしてならGabrielベンチマークとしてLisp界隈だとド定番だし、
他の言語のベンチマークでも見かけるくらいにはメジャー。
205デフォルトの名無しさん:2011/11/14(月) 09:04:53.88
そーなのCAR
206デフォルトの名無しさん:2011/11/14(月) 11:37:05.16
EclipseのSchemeのプラグインってないのかな。
エンジンはGauheを使えたらさらにうれしいのだけど。
207デフォルトの名無しさん:2011/11/14(月) 11:51:54.50
208デフォルトの名無しさん:2011/11/14(月) 11:53:30.09
やっぱSchemeWayしかないのかな。
ぜんぜん日本語情報がないよね。
209デフォルトの名無しさん:2011/11/14(月) 12:02:47.64
ただでさえ人口が少ないSchemeで、さらに人口が少ないEclipseでの開発者で、
さらにさらに人口が少ない日本語話者による日本語の解説を期待しても始まらないよ。
日本語情報が欲しいならEmacs使わないと。マイノリティを貫くならそれなりの覚悟が必要。

そもそも英語の情報だって、最悪辞書見ながら読めば普通に意味が分かる程度には読める。
日本人なら誰でも長年英語勉強してるんだから。
210デフォルトの名無しさん:2011/11/14(月) 16:48:15.26
>>209
話者・使用人口で語るのは間違いだろうなあ。人口1,200万人ならそう言って問題ないだろうけど。欧
米の言語を無理やり方言とすると、漢字の方言とすると日本と中国は中国のおかげで人口的には勝って
いる。

ttp://www.mext.go.jp/b_menu/shingi/chukyo/chukyo3/015/siryo/06032707/005/001.htm

日本語環境が遅れるのはIT政策を3年ぐらいの経済対策として消費してしまったのが一番の原因だと
思うよ。もっと長いスタンスでIT分野を応援していればこうはならなかったんじゃないかな。FreeBSD
とか、2000年あたりはかなり活発だったよね。雑誌もいっぱいあったし、書籍も多かった。Redhat,
TurboLinux, Vine linux等の名前は知っていたけどインストールしていなかったな。Vine以外の日本語
環境はどうだったの?
211SCHEME餃子 ◆8X2XSCHEME :2011/11/14(月) 17:59:50.55
>>210
おいおい。 それを方言としてまとめるのは無茶すぎだろ。 jk
212デフォルトの名無しさん:2011/11/14(月) 18:50:46.58
>>192-193
Javaってひょっとして静的型推定なのでGCがある以外はC++とあんま変わらない?
確かに高速になったとは聞いたけど
213デフォルトの名無しさん:2011/11/14(月) 19:07:56.88
Javaは速くなければならないというお金に直結する緊急課題が昔からあった
LISPには特に無かった

結局流れるお金の量なわけです
214デフォルトの名無しさん:2011/11/14(月) 20:56:12.69
>>213
Javaはなぁ、VisualAgeのScratchエディタがEclipseにも乗っていればよかったのにとつくづく思う
REPLみたいなこと出来てアレでの開発はCPU食う代わりに効率よかったんだけどな
215デフォルトの名無しさん:2011/11/14(月) 21:16:39.53
Eclipseのスクラップブックじゃダメなん?
216デフォルトの名無しさん:2011/11/14(月) 22:08:56.12
>>210
この阿呆はLispスレに何しに来たんだよ……。
言ってることもやってる場所も何もかも間違ってて突っ込み切れない。

方言として認識すれば日本語でドキュメント書いてくれるヤツが増えるのか?
後半の段落は1960年に発表されたLispに関係あるのか?
217194:2011/11/14(月) 22:11:59.71
>>195-196
なるほど、listでくくると処理が楽そうですね。
218デフォルトの名無しさん:2011/11/14(月) 22:13:42.75
>>212-213
SBCLも速い。
まあベンチなんて所詮遊びだけど…
http://shootout.alioth.debian.org/u64q/which-programming-languages-are-fastest.php
219デフォルトの名無しさん:2011/11/15(火) 00:33:23.33
>>216
批判は誰でもできるんだよ。じゃあ、日本語環境が厚くないのは、なぜ?
220デフォルトの名無しさん:2011/11/15(火) 00:48:14.18
http://www.kokoro-yamai.com/category/%E7%97%87%E7%8A%B6%E7%B7%A8/%E3%82%AD%E3%83%AC%E3%82%8B
>人がキレるのは、前頭葉のコントロール能力が弱くなっているからではないかと、専門家の間で言われています。
221デフォルトの名無しさん:2011/11/15(火) 01:04:14.64
>>213
>> 結局流れるお金の量なわけです
そんな悲しいこと言うな。オレは信じてるよ、人の思いの強さを。
最後に勝つのはAIだよ、AI。
222デフォルトの名無しさん:2011/11/15(火) 01:28:59.20
>>219
そもそもの話は外国産マイナーツールの日本語情報が少ないよ、って話だからな?
マイノリティの中のマイノリティが少ないのは当然だ、っていうとても当たり前の意見に、
「日本語を漢字の方言と見なせば多数派だ」とか言ってお前が絡んできたんだからな?
全然事情の異なるFreeBSDやLinuxの事例まで持ち出して。

質問についてだけど、日本語環境が厚くない、という曖昧な表現されても他人には分からんよ。
CLでもSchemeでもClojureでも、処理については多くがUnicodeレベルの国際化を達成しているから、
メッセージカタログとかのUI方面での対応の話と取るけど、構わないな?

単に、それをして受ける恩恵と、それに必要な労力が見合う人がコミュニティにいないからだよ。
開発者の興味とかコミュニティの大きさや文化、個人の趣味とか、色々な要素が関係しているが、
結局は人がいないという所に帰結する。
223デフォルトの名無しさん:2011/11/15(火) 01:41:32.42
改善したいなら、コミュニティを広げて、影響力を大きくすれば良い。
そうすれば、英語が得意でUIの地域化に貢献したい人が出てきたり、
処理系やツールに投資してくれる企業が現れて、対応が改善したりする。
こうなって初めて、国からの援助も期待できる。

そういう風にコミュニティを変えていくために必要な労力と、
自分を変えて不自由なく立ち回れるようになる労力を比べて、
後者を選択してる人が多いだけの話。
224デフォルトの名無しさん:2011/11/15(火) 01:50:15.33
>>222
「人がいない」って人が少ないって意味だよな。人が少ないと言えるのは何人ぐらいがいればいいの?
人が少ないとで思考停止しちゃうのは問題ないかね?

わざわざ言いたくないけど「日本語を漢字の方言と見なせば多数派だ」はジョークだからなあ。日本語
ユーザーが世界で考えると少ないというのに反論したかっただけ。

人が少ないで思考停止しちゃうのは問題ないかね?
マイノリティ云々言い出す奴でガチでそう思っている人がいるから発言は配慮しようぜ。
225デフォルトの名無しさん:2011/11/15(火) 03:13:36.90
>>224
とりあえず、意図を教えてくれたのはありがたいな。今まで意味不明過ぎた。
あと冗談はかなり寒い。>>211を見ても。俺らが感性ないだけかもしれんが。

人の少なさを実感したいなら、GitHubやBitbucketで言語別にリポジトリを検索すると良いよ。
相対的にマイノリティなことは理解できる。絶対的に多いか少ないかは証明が難しいな。
こちらはことあるごとに人の少なさを実感するんだけど、それじゃ納得いかないだろうしな。

逆に、>>224は人が十分に多いと思う何らかの根拠があると思うんだけど、それは何?
思考停止してると思うなら、別の原因に何らかの心当たりがあるんじゃないのか?
226デフォルトの名無しさん:2011/11/15(火) 05:05:39.95
>>219

>>218
のベンチマークにRacketがあるのにGaucheがない理由を想像できるかい?
227デフォルトの名無しさん:2011/11/15(火) 05:09:13.11
>>225
人が少ないと言えるのは何人ぐらいがいればいいの?
 ↓訂正
人が少なくないと言えるのは何人ぐらいがいればいいの?

あと多言語と比べても日本語を使えるユーザーは十分いるし、日本は国としてはお金持ちだ。GitHubや
Bitbucketの話はそうなんだろう。それで実際に開発に関わっている日本人が人が少ないという話は肯定
しているよ。
でも、「人が少ない」という現状認識は聞き飽きたから、その現状認識への処方箋を出すべきなんじゃ
ないかという提案だ。

EclipseのSchemeのプラグインが欲しいと思うならLisper Schemer向けEclipseの勉強会(ネット回線なし)を
資料代(A4二枚のレジュメ)500円で都心で開けばいいんじゃないの。交通費のみでプラグイン開発者一人を
呼んで色々と話し合えばEclipse以外の話も出てくるだろうし、個人個人で何ができるかというのがみえて
くるんじゃないかな。三日坊主プロジェクトをいっぱい立ち上げてとりあえずやってみればいいんだよ。そ
して、隔月か、三カ月に一回集まって刺激し合えばいい。
3.11でみんなの意識が変わったから今がやり時だと思うよ。今の有事から終わらない日常に戻ったら何も変わら
ないだろうなあ。自分が言いたいのはそういう話。
>>226
どういう理由? マジで知らない。
そういう話を勉強会で顔を突き合わせて、問題意識を共有すればいい。一人で悶々と考えたり、プログに書いても
あんまり効果がないんだから、身体をもっと使うべきじゃないのかね。
228デフォルトの名無しさん:2011/11/15(火) 07:39:24.11
他言語ユーザの多くは英語に不自由してない事実。
229デフォルトの名無しさん:2011/11/15(火) 07:52:47.34
俺のチンコはファーストクラスオブジェクト
230デフォルトの名無しさん:2011/11/15(火) 07:55:13.80
>>228
中・高・大学で10年以上教育を受けていて、日本人は英語を不自由にしていると言い切れるのかね。
231デフォルトの名無しさん:2011/11/15(火) 08:29:38.04
「日本語環境が厚く無い」のを問題視するんなら、何を解決したいのかを整理した方がいいんじゃないか?
俺個人としては、マルチバイト文字処理が手軽に出来れば嬉しい。
もし英語読むの面倒だから、程度の理由なら、殆どのプログラム言語が英語ベースの現状で、随分甘えたやつとしか思わない。

そんなところの敷居を誰かが下げてくれるのをただずっと待つか、自分から積極的に今ある資料を活用して自分の付加価値も相対的に上げるのか、選ぶのは自分だけどな。
232デフォルトの名無しさん:2011/11/15(火) 09:33:49.31
日本語のドキュメントが少ないのは、仕方がないよ。

プログラムを書くのもコメントは日本語より英語のほうが多いんだし。逆に
一部を除いて日本発のものの英語ドキュメントの貧弱さは寂しいと思ってる
くらい。読むより書くほうが敷居が高いけどね。

日本語で〜と考える場合、すでに環境を整えやすいClojureをやっておけばい
いよ。web関連ならこっちで十分だから。schemeならばgaucheでもperlのちょっ
とした代わりくらいはできる。書籍はまえより充実してきてると思うけどな。
233デフォルトの名無しさん:2011/11/15(火) 11:05:15.01
日本語のドキュメントが英語より読みやすくなっている例って
字の大きさぐらいだな。すまんね年寄りで
234デフォルトの名無しさん:2011/11/15(火) 22:36:08.28
>>232
横だけど、clojureはweb以外だとあまり良くないってこと?
235デフォルトの名無しさん:2011/11/15(火) 23:40:34.45
closureで気になったことがあります
作ったスクリプトを他のwindowsパソコンでも使えるように
exe化できるのでしょうか?
236デフォルトの名無しさん:2011/11/15(火) 23:48:04.64
頑張ればexe化もできなくはないけど
実行可能jarで妥協した方がいいんでないかな
237デフォルトの名無しさん:2011/11/15(火) 23:58:36.09
238235:2011/11/16(水) 00:00:01.32
>>236-237
それがよさそうですね
239デフォルトの名無しさん:2011/11/16(水) 00:00:51.12
>>234
悪いとは言ってないし、そこまで判断してない。ただし、webに
というのはgoogle app engineやherokuに対応できるというところ
の強みがあるし、java系の強みを持ってる。だからweb関連ならこっちで十分と
240デフォルトの名無しさん:2011/11/16(水) 01:34:37.47
>>234
Web以外は既存のjavaと敷居が一緒なんだよ
Webサーバサイドで使うと開発効率がJava+tomcatよりも高いのが魅力なんだ
241デフォルトの名無しさん:2011/11/16(水) 01:57:32.39
>>239, 240
レスありがとう。これなら本格的にclojure使おうと思っていたので、汎用には
欠点があるのかと気になったんだけど、そういうことなら大丈夫そうで安心した。

242デフォルトの名無しさん:2011/11/16(水) 02:21:21.64
>>241
Clojureで速いプログラムを書こうと思ったら、ちょっと知識が必要だけど
最初ならプログラミングClojureやlabreplで遊んでればいいよ。:-)
243デフォルトの名無しさん:2011/11/16(水) 22:38:56.77
>>198について、竹内先生本人がコメントしていた

竹内関数で音楽生成 - aikeの日記

http://d.hatena.ne.jp/aike/20111112#c1321336379

>当の本人の竹内です.友人から教えてもらってアクセスしました.
>素晴らしいですね.嬉しかったので,このURLをみんなに紹介しまくっています.

高評価みたい
244デフォルトの名無しさん:2011/11/16(水) 22:54:13.35
竹内文書
245デフォルトの名無しさん:2011/11/17(木) 02:46:50.61
まあ他に大した使い道ないしな
246デフォルトの名無しさん:2011/11/17(木) 03:01:22.40
しょぼいLispマシン作った人だっけ?
しかも復活祭までやちゃったんだよな
247デフォルトの名無しさん:2011/11/17(木) 07:49:47.32
竹内先生の退官記念の最終講義、ようつべあたりで流せば良いのに。
248デフォルトの名無しさん:2011/11/17(木) 08:50:08.66
>>246 具体的に指摘できないから「しょぼい」としか言えない、
馬鹿丸出しですねw
249デフォルトの名無しさん:2011/11/17(木) 09:30:17.13
>>246
TAOの事いってるならおまえが馬鹿をさらけ出してるとしかいえない.
250デフォルトの名無しさん:2011/11/17(木) 10:04:04.00
TAOならうちの研究室にあったけど
誰も使ってなかったな
251デフォルトの名無しさん:2011/11/17(木) 10:18:15.00
こいつ自分のことゲルトミューラーとか言っててさすがに引いたわ
せめてもうちょっと上手くなってから言えって感じだよ
252デフォルトの名無しさん:2011/11/17(木) 10:35:27.53
青木淳とかもそうだけど、やたら古典の引用だののヘンな衒学趣味がうさんくさくて嫌い。

数学者が日本の品格みたいな本出すようになるともうヤキが回った状態であることが
わかるのと同じようなもので。
253デフォルトの名無しさん:2011/11/17(木) 10:44:08.95
興味のある言語にTaoと書いておいたら面接で爆笑された
Railsエンジニアを募集してる会社の採用面接を受けた時の話。
転職エージェントに作れと言われて作ったシートに、「興味のある技術/言語」という欄があったんです。
仮想化技術とか色々書いたけど、プログラミング言語の中で興味があるのはTaoだったので、
Taoと書いておいたのですが、それを見た面接官のリアクションが酷かった。

面接官「Tao・・・ふははっ!Tao!」
面接官「Taoやってるんですか?wwwww」
俺「(唖然)は、はい・・まだS式を理解したぐらいですが。。」
面接官「Tao・・・ニヤニヤ」

その人はエンジニアで、当然Rubyのコードを書いている人だったので、
Rubyが「Matz Lisp」と呼ばれている事を知らないワケが無いだろうと思っていた。

つまり、このリアクションは"理不尽な状況に直面した時にどう対応するか"を見ているんだろうと判断し、あえて突っ込みは入れずに対処した。
しかし最後の質問で「何故RoRを採用したんですか?」と聞くと、
気まずそうに理由を話し、最後に「・・・と、聞いてます」と答えた。
つまりこの人は上からRubyを採用すると言われたから使っているのであって、
特別Rubyに思い入れとか無いリーマンエンジニアなんだなあと分かった。
mix-inとかもLisp発のテクニックだし、RubyやってるならTaoに興味を持つのは普通だと思うんだけどなあ。

多分ガチで知らなかったんだろう。
254デフォルトの名無しさん:2011/11/17(木) 10:48:40.40
Lispの神様なんだっけ?w
何をしたのかわからないけどw
255デフォルトの名無しさん:2011/11/17(木) 11:41:25.32
竹内自演よくないよ
256デフォルトの名無しさん:2011/11/17(木) 11:53:51.71
lisperとは思えない頭の悪いコメントが並んでるな。
257デフォルトの名無しさん:2011/11/17(木) 11:57:17.03
竹内、と書いただけで発作のように変なレスが増えるのな
258デフォルトの名無しさん:2011/11/17(木) 12:01:28.67
英語版wikipediaには記事がないね
Lispの神様なのに
嘘が通用するのは日本限定か
259デフォルトの名無しさん:2011/11/17(木) 12:05:49.39
TAO/ELISは、携帯電話なんて話にならないほどのガラパゴスだった。
専用ハードに、ほぼ単一に近い言語環境。
電電公社ならではの採算も将来性も度外視したプロジェクト。
260デフォルトの名無しさん:2011/11/17(木) 12:12:09.73
英語版に竹内先生の記事がないなんて糞だな
寄付すんの辞めたわ
金だけ取って肝心の中身がないなんて
261デフォルトの名無しさん:2011/11/17(木) 12:17:04.07
(((((((((((((((囲碁、竹内の話題は荒れるので(禁止)で)
262SCHEME餃子 ◆8X2XSCHEME :2011/11/17(木) 12:58:19.16
>>261
))))))))))))))
263デフォルトの名無しさん:2011/11/17(木) 13:10:13.37
とはいえ コンピュータ分野で日本人名ついたのは竹内関数くらいじゃないか
他になんかあったっけ?
264デフォルトの名無しさん:2011/11/17(木) 13:34:55.87
カリー化じゃないけど、竹内化といえば、すべてをたらい・・・(略
265デフォルトの名無しさん:2011/11/17(木) 13:39:06.52
竹内関数が最大にして唯一の功績ってのがな
神様だって名乗るにはちょっと寂しい
266デフォルトの名無しさん:2011/11/17(木) 13:48:57.29
まさか本人が神様と言ってるんじゃないだろ?言ってるとしたらかなり
傲慢だと思う。Lispの仏様という人もいたり、周りがヨイショしてるだけ
だろ?そんなに政治力があってLisp界のナベツネやスターリンなのか?
267デフォルトの名無しさん:2011/11/17(木) 13:52:46.02
少なくともゲルトミューラーとは名乗っている
268デフォルトの名無しさん:2011/11/17(木) 13:57:33.47
いつから何がきっかけで神様って呼ばれるようになったの?
誰が最初に呼び出したの?
269デフォルトの名無しさん:2011/11/17(木) 14:03:12.87
>>268
勝手に神様と持ち上げて、暫くしたら叩き落とそうとするのって、マスゴミがよく使う手だよね。
270デフォルトの名無しさん:2011/11/17(木) 14:07:17.99
むしろ持ち上げる側でしょ、この人は
271デフォルトの名無しさん:2011/11/17(木) 14:15:04.49
他にもあるぞ。二村射影とか、黒田正規形(Kuroda normal form)とか。
272デフォルトの名無しさん:2011/11/17(木) 15:03:07.30
lispのなかって、KCL作った人が有名なんちゃうん?
Practical Common Lispにもコメントを寄せてたけど。
273デフォルトの名無しさん:2011/11/17(木) 15:18:01.74
俺はCommon Lispは使わないんだけど
話題になっているの聞いたことない
274デフォルトの名無しさん:2011/11/17(木) 15:30:28.26
ECLやGCLの祖先だからな。一番最初のANSI Common Lisp処理系だといっても
爺しかもう知らんのかも。
275デフォルトの名無しさん:2011/11/17(木) 15:44:22.67
あの、たいていのものは俺達で実装しよう、としたがるGNUの連中が、
こんないいものがあるなら俺達で実装するのやめよう、といったぐらいなのにな、
KCLは(その結果KCLをベースにGCLが作られた)。
276デフォルトの名無しさん:2011/11/17(木) 15:51:11.61
KCLからGCLが造られてマルチバイト文字対応はおざなりになったのか。
277デフォルトの名無しさん:2011/11/17(木) 17:11:00.42
UtiLispにしても、武蔵野通研にしても、ICOTにしても、
ソース出せないのが痛かったねえ。
出せたらもっと関連研究者増えてただろうに。
KL1のUNIX版が出てきたのも驚くほど遅かった。
UtiLispのC言語版公開も2000年代に入ってからじゃなかったっけ?
ソースコード公開されている処理系が他にあるんだから、そっちに流れちゃうよね。
278デフォルトの名無しさん:2011/11/17(木) 17:31:24.96
>>275
> あの、たいていのものは俺達で実装しよう、としたがるGNUの連中が、
そうなのか? guileだって最初はSCMをベースにしたし、ライセンスに問題が
なければ使えるものは使うんじゃないかと思ってた。
俺実装するのはフリーなライセンスでベースに出来そうなものが無い場合じゃないかと。
279デフォルトの名無しさん:2011/11/17(木) 17:47:29.10
GNU Emacsにしても、Gosmacsをベースにしていたしな。
その後、Gosmacsは商用になったから、コードを全部排除したけども。
280デフォルトの名無しさん:2011/11/17(木) 18:34:55.25
来年のlispの京都での会議って京都の先生の退官記念かなんかじゃないの?
281デフォルトの名無しさん:2011/11/18(金) 06:56:28.65
既出だったらスマン
Gambit REPL なんていう iPhone アプリあるんだね。
282デフォルトの名無しさん:2011/11/18(金) 17:36:21.01
Androidでも動いてるね。
Gambitベースなのは、Gambit for AndroidとScheme REPL Module。

他には、JSchemeベースのScheme-droid、Scheme REPL、
Clojure REPL、Kawaなどなど。
283デフォルトの名無しさん:2011/11/18(金) 17:57:59.62
palmの時代からそういうのはあったが
指でコードなんて書けるのかな
284デフォルトの名無しさん:2011/11/18(金) 18:03:20.72
遊び以外では、きっとBluetoothキーボードとか使って打ってるんだろう。
285デフォルトの名無しさん:2011/11/18(金) 21:40:53.05
え?
286デフォルトの名無しさん:2011/11/18(金) 22:03:42.62
え?
287デフォルトの名無しさん:2011/11/18(金) 23:03:27.26
質問です。

((lambda (a) (a b)) c)

上のラムダ計算式の構文上の導出と
それに関連する抽象構文木を生成せよ。

という問題が分からないのですが、どなたかご回答いただけませんか?
288デフォルトの名無しさん:2011/11/18(金) 23:37:25.06
おれさまメモ。

lispの瘴気 - Togetter
http://togetter.com/li/215803
289デフォルトの名無しさん:2011/11/18(金) 23:48:26.27
>>287
宿題か?んなもん自分で調べろ
290デフォルトの名無しさん:2011/11/18(金) 23:55:41.73
>>289
竹内がblogに書きこんできたとか
くだらないことは嬉々として書きこむくせに
肝心のことは回答しないのな
何のための掲示板だよ
291デフォルトの名無しさん:2011/11/19(土) 00:09:06.91
竹内がblogに書きこんできたとか
くだらないことは嬉々として書きこむくせにとか
くだらないことは嬉々として書きこむくせに
292デフォルトの名無しさん:2011/11/19(土) 00:10:07.71
これがたらい回し
293デフォルトの名無しさん:2011/11/19(土) 00:35:59.72
竹内関数で音楽を生成するというやつ、
サンプルと同様のものを自分でも作って作業のBGMにしてみたいが
どうやればいいんだろう
294デフォルトの名無しさん:2011/11/19(土) 00:36:54.86
なぜここで聞く
295デフォルトの名無しさん:2011/11/19(土) 00:53:46.51
ひどいマッチポンプを見た
296287:2011/11/19(土) 06:12:48.81
どなたか本当に答えてもらえないでしょうか?
調べてもわからなかったので・・・
297デフォルトの名無しさん:2011/11/19(土) 07:03:15.96
>>296
講義でやってない内容は課題として出ないんだから、
素直にテキストとかで復習するとか、友達にノート見せてもらえば?
どうしても分からないなら、質問しに行った方が良い。ポイントも稼げる。

今後も分からないことがある度にここに聞きに来る気?
今ちゃんとやらないと、本当に講義に付いていけなくなっちゃうよ?
298デフォルトの名無しさん:2011/11/19(土) 07:13:42.93
テキストが糞訳だったりする場合だってあるだろ
299デフォルトの名無しさん:2011/11/19(土) 09:15:34.57
>>298 まずは自分の脳みそがクソだと認識しろよ
300デフォルトの名無しさん:2011/11/19(土) 09:24:45.64
誤訳で原書じゃないと
練習問題解けない本があるとか
301デフォルトの名無しさん:2011/11/19(土) 11:07:12.51
ちゃんとテキスト読めばわかるだろ。
そのレベルの問題なら。
302SCHEME餃子 ◆8X2XSCHEME :2011/11/19(土) 11:31:22.35
>>293
MML で出力しといて適当なソフトで MID ファイルに変換すればいいんじゃないかな。
303デフォルトの名無しさん:2011/11/19(土) 14:39:49.09
>>288
GJ
京大の講義資料やってみてーなー。
304デフォルトの名無しさん:2011/11/19(土) 14:45:50.92
読んでいてちゃんと訳しているのか
心配になる日本語だよな
305デフォルトの名無しさん:2011/11/19(土) 15:10:14.68
日本語で読んでる奴が解けないのをみて
にやにやしてるんだよな
相変わらず性根が腐っていることで
306デフォルトの名無しさん:2011/11/19(土) 16:39:13.19
上のラムダ計算式の構文上の導出と
それに関連する抽象構文木を生成せよ。

回答例:問題の意味がわからない。
307デフォルトの名無しさん:2011/11/19(土) 16:43:09.68
さて、lisp とscheme とどっちをおすすめされますでしょうか。

私は、よく使うのがc,javascript,VB という、よくある、プログラムが本業ではないが、私個人や仕事のチームの業務改善にプログラム作成もするもんです。

自分にとってなじみのない分野の考え方のさわりでもしってみたいのです。

本がそこそこ充実しているcommon lisp が良いでしょうか。
308デフォルトの名無しさん:2011/11/19(土) 16:46:00.25
今からやるならclojure一択でしょ
309デフォルトの名無しさん:2011/11/19(土) 18:24:30.56
SICPは京大教授も認める糞訳か
読む奴が糞だから理解できないって言ってたアホは
どう言い訳するんだ?
310デフォルトの名無しさん:2011/11/19(土) 18:31:59.07
これはことあるごとに引用されるだろうな
311デフォルトの名無しさん:2011/11/19(土) 19:11:50.00
糞訳読んだせいで留年とかwww
ちょー可哀そうなんだけどw
312デフォルトの名無しさん:2011/11/19(土) 19:41:59.93
まあ、演習問題をとこうと思っても語彙が曖昧なものは
いくつかあったのは事実だと思う。<SICP
313デフォルトの名無しさん:2011/11/19(土) 19:43:04.79
語彙が曖昧じゃなくって
間違っているって言っているんだが
314デフォルトの名無しさん:2011/11/19(土) 19:53:38.76
そうそう間違っているというのはかなり重大なことかと
315デフォルトの名無しさん:2011/11/19(土) 19:58:33.00
こういう努力不足とは無関係の本質でないことで留年させるってどうなんだろう
今の時代に学部低学年でSICPやらせるのは
趣味の押しつけ以外の何物でもないと思うし
316デフォルトの名無しさん:2011/11/19(土) 20:00:08.66
京大入れて原書読めないとかマジありえんってのが前提なんじゃねぇの?
317デフォルトの名無しさん:2011/11/19(土) 20:00:57.72
東大名誉教授で原書読めない
和田さんはどうすんだよw
318デフォルトの名無しさん:2011/11/19(土) 20:02:09.27
極論を言ってるような感じもするけどな。京大の連中は知らんから
なんとも言えんけど、彼らの話が出てこないと。
319デフォルトの名無しさん:2011/11/19(土) 20:03:24.63
その間違ってる問題ってどれなん?
320デフォルトの名無しさん:2011/11/19(土) 20:04:25.17
和田さんってMITで強弁をとってたんだろ?
英語の使えない状態でMITで授業をするってありえる?
321デフォルトの名無しさん:2011/11/19(土) 20:05:15.33
やさしい英語は出来るんだろ
むずかしい文章が読めないだけで
322デフォルトの名無しさん:2011/11/19(土) 20:05:47.05
SICPの英語は難しくないよ。
323デフォルトの名無しさん:2011/11/19(土) 20:06:30.29
和田っちはSchemeで自動翻訳システム作ったんだよ。

ロボチックだろ、訳が。
324デフォルトの名無しさん:2011/11/19(土) 20:08:58.14
和田さんが京大入ったら留年するの?
325デフォルトの名無しさん:2011/11/19(土) 20:16:27.02
http://ja.wikipedia.org/wiki/%E5%92%8C%E7%94%B0%E8%8B%B1%E4%B8%80

いまwikiで和田さんを見ると、wikipediaの創設者が和田さんに見えて仕方がない。
あんな若い外人だったっけ?と。。。
326デフォルトの名無しさん:2011/11/19(土) 20:27:06.20
研究室の輪講で翻訳したやつとかなんじゃないの
327デフォルトの名無しさん:2011/11/19(土) 20:29:42.38
K&Rの石田訳のときにそんな話があったな。
328デフォルトの名無しさん:2011/11/19(土) 20:31:54.09
文体からしてそれはないでしょ
329デフォルトの名無しさん:2011/11/19(土) 20:44:44.38
SICPは多様なパラダイム教える為であって、必要なschemeの構文は
逐次前もって教えるってIPSJ会誌の教育コーナーで書いてたよ。
330デフォルトの名無しさん:2011/11/19(土) 20:47:01.02
パラダイム教える為に
東大名誉教授が読めなかった文章を
読めないってだけで
留年させる必要はないわけで
331デフォルトの名無しさん:2011/11/19(土) 20:52:18.45
ネタ混じりの可能性もあるからそんなにムキにならなくても
332デフォルトの名無しさん:2011/11/19(土) 20:58:07.67
SICP日本語訳disるために
ネタ混じりで馬鹿にしたと
333デフォルトの名無しさん:2011/11/19(土) 21:00:09.77
留年とか何の話?
334デフォルトの名無しさん:2011/11/19(土) 21:01:04.37
335デフォルトの名無しさん:2011/11/19(土) 21:20:26.25
実験、演習を一つ落としたくらいで留年しないってw
複数落とすと次の年履修がかぶって留年するはめになることあるが。
演習問題一つで単位落とすこともないし。
336デフォルトの名無しさん:2011/11/19(土) 21:25:10.00
一つじゃなくて
複数間違っているように
書いてあるけど
337デフォルトの名無しさん:2011/11/20(日) 16:32:26.16
>>335
実験単位が欠席2回で不可が出たりする(自分はそれで2留した、3年に行く必須の単位なんで)所もあるから実験とかレポートは結構厳しいものだとおもってた
病気療養でも斟酌してもらえなくて結構泣いたよ
338デフォルトの名無しさん:2011/11/20(日) 17:37:41.65
京大ってスパルタ系の大学だったっけ?なんかあそこって変人が多い
という印象が強いが。
339デフォルトの名無しさん:2011/11/20(日) 18:20:05.17
SICPの誤訳問題の例?
ttp://d.hatena.ne.jp/yad-EL/20091007/p1
340デフォルトの名無しさん:2011/11/22(火) 16:47:22.83
最近使ってなかったけどR6RSって評判どうですか?
341デフォルトの名無しさん:2011/11/22(火) 17:22:54.30
広まる前に次が出そう
342デフォルトの名無しさん:2011/11/22(火) 19:21:54.22
RnRSみたいな版名はナンバリングが前面に出てるから楽だな
面倒ならR4RSとかR5RSとか対応にしとけばいい
もうR6RS以降は暇な人向け実装だな
CommonLISP程に時間が掛かってはいかんでしょ
343デフォルトの名無しさん:2011/11/24(木) 01:46:33.31
Gaucheについての質問です。

循環参照してるオブジェクト同士でメソッドを呼び合いたいのですが、
相互のメソッドを使うためにメソッドをuseしなければならず、useは循環して使えないので
うまくできません。

今のところ考えたのは、別モジュールに空のメソッド群を置いておいてそのモジュールだけを
useするという方法です。でも、これは冗長ですし気持ちわるいので、きっと他に良い方法が
あると思っています。

どなたか教えていただけないでしょうか?よろしくお願いします。
344デフォルトの名無しさん:2011/11/24(木) 03:20:19.11
>>343
一方をuseせずにautoloadにしておくって手がある。機能的に非対称で、
一方が他方に従属する感じの時は、従属する方をautoloadにすることが
おいらは多いかな。
でも機能的に対称な場合はautoloadで非対称なのが気持ち悪いんで、
別モジュールにdefine-genericをまとめて書いとくかなあ。そのモジュールを
インタフェース定義だと思えばそんなに悪くない。
345デフォルトの名無しさん:2011/11/24(木) 04:26:36.51
Cのプロトタイプ宣言とディレクティブはスマートだよな
autoloadって評価されるまで何が起こるのか判らないのと
名前の二元管理という点であまり推奨できない
346343:2011/11/24(木) 05:42:29.28
>>344
回答ありがとうございます。こんな時間に回答がもらえるとは流石Scheme板なのか...。

う、やっぱり別ファイルに分けるのが良さそうですね。
というかそもそもオブジェクトシステムを理解してなくて
define-genericを知りませんでした...。define-methodは
これを自動でやってくれてるのですね。
347デフォルトの名無しさん:2011/11/25(金) 21:45:12.85

348デフォルトの名無しさん:2011/11/26(土) 13:10:38.02
Luaが形なし言語で最速と聞いて
LispやSchemeからの変換機あるかなと思ったら
以外と誰も作ってない。Stalinと速度比較したかった。
349デフォルトの名無しさん:2011/11/26(土) 13:41:07.50
>>348 LuaJIT がだろ?
ついでに言っとくと Lisp 系言語は変数側に型がないだけで
変数に代入されるオブジェクトには結構厳しい型付がある
350デフォルトの名無しさん:2011/11/26(土) 14:11:05.70
Cから別の動的言語に吐き出すのが
あるからlisp->C->luajitは出来るが、
http://cluecc.sourceforge.net/
直接変換では無いので、C止めの1/10になりそう。

最近だと、llvm経由で言語間コンバートあるけど、やっぱり最適化は難しいのかな。
llvm-to-javascript
https://github.com/kripken/emscripten/wiki
351デフォルトの名無しさん:2011/11/26(土) 18:43:29.05
>>348
SBCLの圧勝です。
352デフォルトの名無しさん:2011/11/27(日) 00:00:34.74
353デフォルトの名無しさん:2011/11/27(日) 00:03:50.29
Luaの場合は小細工なしで速いから
354デフォルトの名無しさん:2011/11/27(日) 00:57:49.97
Scheme subset -> Luaならantlrあたり使って簡単にできそうなのになあ
Schemeでambとかマクロ展開してからLuaに変換できたら高速だし最高なのに
355デフォルトの名無しさん:2011/11/27(日) 03:20:49.77
lisperが妄言はいてる間にlua最速!
いいうさぎとかめですね
356デフォルトの名無しさん:2011/11/27(日) 05:10:08.81
小細工とか妄言とかえらい攻撃的な人が来てるね。
というより主張だけが必死で話を聞いてない
この2つの考察から
スルーするのが適当じゃなかろうか。
357デフォルトの名無しさん:2011/11/27(日) 05:32:36.83
小細工と妄言は別の人なのだが
妄想が激しい人なのな
358デフォルトの名無しさん:2011/11/27(日) 05:35:02.00
Luaは速度を速くするための
特別な書き方しなくても速いんだが
359デフォルトの名無しさん:2011/11/27(日) 05:55:52.20
luaはschemeと似てるけどcall/ccみたいな厄介なのはないし
言語実装が1つだから無駄なリソースをあまり使わずに進化できたんじゃないかな
あんま知らんけど
360デフォルトの名無しさん:2011/11/27(日) 08:31:33.05
機械語最速最強、とか言ってるのとたいして変わらんしw
361デフォルトの名無しさん:2011/11/27(日) 12:41:29.83
まあ、LuaとかJavaScriptが近年速度面で頑張ってるのは事実だし、
Lispも他に置いてかれないように頑張りましょう、ってことで。

RacketあたりはJIT採用してたはずだから、頑張って欲しいね。
362デフォルトの名無しさん:2011/11/27(日) 12:54:12.80
そういや、数理システムの人が CL の最適化は全然足りない、
って論文書いてたよね。 2009年だけど。
あのあとCLの最適化って少しは進んだのかな。
363362:2011/11/27(日) 12:55:09.42
これね
「An evaluation of Major Lisp Compilers」by Seika Abe
http://cl-www.msi.co.jp/solutions/knowledge/lisp-world/tutorial/compiler-eval-b.pdf
364デフォルトの名無しさん:2011/11/27(日) 13:50:36.94
>>362
商用の奴もダメって?
あとネットで(要約の)閲覧できるならリンク頂戴
365デフォルトの名無しさん:2011/11/27(日) 14:03:59.93
>>364
あと, cmucl のドキュメントの中で最適化を施すと危険な場合ってのが列挙
してあって, その部分の見直しがほとんどなされてない
コンパイラ製造技術は上がって来てるのでその辺の対応が強く望まれる
あと吐き出したコード見ればわかるんだけど peephole が壊滅的にだめ
366デフォルトの名無しさん:2011/11/27(日) 17:17:23.09
最適化しないでも
小細工すれば速くなるし
367デフォルトの名無しさん:2011/11/27(日) 23:11:26.72
>>354
なんでわざわざ遅いLuaに翻訳しないといけないの?
Javascriptならブラウザ上で動くとかメリットあるけど。
368デフォルトの名無しさん:2011/11/28(月) 01:41:29.85
lisp cabinetでCCLを使っているのですが、
自作の関数をいくつか書いておき、起動時にそれらを自動的に読み込ませる、というのは
どこにどのような設定をかけばよいのでしょうか
369デフォルトの名無しさん:2011/11/28(月) 02:08:39.13
>>367
Schemeが亀のように遅いからだろ
370デフォルトの名無しさん:2011/11/28(月) 02:55:02.84
? 変なのがいついてるな。
371デフォルトの名無しさん:2011/11/28(月) 03:08:05.18
Luaが遅いとか無知すぎるわ
372デフォルトの名無しさん:2011/11/28(月) 06:50:26.82
Cへのトランスレータは以前から研究されているのに、なぜLuaへのトランスレータを性能の為に用意するの?
バニラのLuaでもCトランスレータを超える性能面のメリットがあるの?
……って意味じゃないの、「遅いLua」って言い回しは
本人に訊かないと本当の所は分からないが

俺は性能面ではなく、ClojureやNuのようなホスト環境とよく馴染むLispとしては興味あるけど
SchemeやCLのトランスレータは実物を見てからでないとあまりワクワクしないな
373デフォルトの名無しさん:2011/11/28(月) 07:28:31.90
>>364
要約というか本文が >>363 にあるよ
日本語。共通部分式の除去も定数伝搬もほとんどされてない、
ってのは悲しくなった。誰かCommon Lisp on LLVM作って。
374デフォルトの名無しさん:2011/11/28(月) 10:56:48.73
>>368
ホームディレクトリの.ccl-init.lisp。
そこで直接関数を定義しても良いし、適当なファイルをloadで読んでも良い。

Windowsだとバージョンでデフォルトのホームディレクトリの場所が違うから、

(translate-logical-pathname "home:")

を評価して表示された場所。
375デフォルトの名無しさん:2011/11/28(月) 13:43:19.86
Lisp -> C -> 機械語
Lua -> JIT -> 機械語
だとLuaの方が速いんだよな
376デフォルトの名無しさん:2011/11/28(月) 13:59:02.19
じゃあ tarai で比較するか
377デフォルトの名無しさん:2011/11/28(月) 14:00:07.69
実用性のない何の価値もないコードで比較してどうする
378デフォルトの名無しさん:2011/11/28(月) 14:02:00.71
>>377
文句言うなら代替案を出せよ。
代替案ない批判は何の価値もないよ。
379デフォルトの名無しさん:2011/11/28(月) 14:08:36.34
ここは核融合プラズマシミュレーションで
380デフォルトの名無しさん:2011/11/28(月) 14:21:30.36
381デフォルトの名無しさん:2011/11/28(月) 14:31:36.26
>>380
Luaってどん亀Gaucheより遅そうだな
382デフォルトの名無しさん:2011/11/28(月) 14:39:59.84
型指定したコードと比べてどうすんだよ
馬鹿か
383デフォルトの名無しさん:2011/11/28(月) 14:43:35.40
出たものはとりあえず叩く人が居座ってるよな
384デフォルトの名無しさん:2011/11/28(月) 14:44:43.14
ドヤ顔で型指定しているコード持ってきて
Gaucheより遅そうって
馬鹿以外の何物でもないだろ
385デフォルトの名無しさん:2011/11/28(月) 14:47:54.23
何も出せずに文句しか言えない奴は哀れだねぇ
386デフォルトの名無しさん:2011/11/28(月) 14:50:59.55
馬鹿な発言しか出来ない奴よりはまし
387デフォルトの名無しさん:2011/11/28(月) 14:59:20.86
388デフォルトの名無しさん:2011/11/28(月) 15:11:30.43
なぜJITの付いてないバージョンのLuaと比べるんだよ
389デフォルトの名無しさん:2011/11/28(月) 18:03:06.62
390デフォルトの名無しさん:2011/11/28(月) 18:41:59.63
luajitでようやく比較対象になったレベルでしょ?
しかも組み込み用の糞言語w
391デフォルトの名無しさん:2011/11/28(月) 18:52:17.99
どん亀racketよりは速いお
392デフォルトの名無しさん:2011/11/28(月) 19:56:21.62
こんなところで油を打ってないで、一つでもマクロや関数の使い方
の理解を深めろって。^^; さもないと成長せんぞ。
393デフォルトの名無しさん:2011/11/28(月) 22:37:16.30
>>374
ありがとうございます!
394デフォルトの名無しさん:2011/11/28(月) 23:59:23.73
Gauche での JIT の実験結果からは今のところは導入は割に合わないと結論が出てる。
http://practical-scheme.net/wiliki/wiliki.cgi?Gauche%3aVM%E3%81%AE%E6%9C%80%E9%81%A9%E5%8C%96%3aJIT%3a%E4%BA%88%E5%82%99%E5%AE%9F%E9%A8%93
素人考えだと二倍とか三倍くらいの速度になるなら甲斐がありそうにも思うけど、
ポータビリティや保守性を捨ててまでやるほどではないということみたいだね。

Gauche に限らず JIT を入れた方が速くなるのは百も承知なんだよ。
それでももっと大事なことのために導入しないという決断をしたんだから、
遅いじゃないかと言われてもそういうものなんですというしかない。

逆に Lua は速度の方が大事だという決断をして他の諸々を捨てたんだから
そっちはそっちで不満なところもあるだろうさ。 銀の弾丸は無いって奴だな。

ところで Lua のロゴマークのデザインってセイコーインスツルのに似てね?
http://www.lua.org/
http://www.sii.co.jp/
395デフォルトの名無しさん:2011/11/29(火) 00:06:47.55
LuaJITだと2〜3倍どころ10倍くらいになってるな
保守性はともかくポータビリティは問題なさそう
396デフォルトの名無しさん:2011/11/29(火) 01:05:55.94
http://repo.or.cz/w/luajit-2.0.git/tree/HEAD:/dynasm
確かにluajitは個別にしか対応できないな。
googleのv8,naclみたいにx86,x64,arm,llvmでしか動かない実装考えるグループも出てきてる時代だけど、
schemeは置いといて、clは人材流入がなくて難しいのかも。
haskellでもx86専用SIMDコードが埋め込まれたり、llvmに載せちゃえとかあがいてはいる。
普通のコードをJITやCPU最適化で高速化するタイプの人材流入から
cl/.net/ruby/perl/phpあたりは置いていかれてる感はあるかもしれないね。
397デフォルトの名無しさん:2011/11/29(火) 08:52:41.78
.NET→MS実装は知らないが、MonoはLLVMバックエンドがある
Ruby→Rubinius
Perl→ParrotにLLVMプラグインがあるので、RakudoもLLVMを使える
PHP→PHP.rebootならHotSpot効くんじゃね?多分
398デフォルトの名無しさん:2011/11/30(水) 14:06:16.64
lispのprin1やprincにある"1"や"c"は
何を意味しているのでしょうか?
399デフォルトの名無しさん:2011/11/30(水) 16:53:13.14
prin1 の 1 は適当につけただけだと思う。改行するのが print で改行しないのが
prin1 だったんだけど、read できるかどうかを考慮してさらに prin2 とか prin3
とかが作られていった。でも方言ごとに意味がバラバラだった。

princ は1文字しか出力しない方言があったので character の c なんだろうが、
そうでない処理系では無意味。
400デフォルトの名無しさん:2011/11/30(水) 17:13:53.88
そんなときはHyperspecを読め。1,2行程度で違いを説明してるから。
401SCHEME餃子 ◆8X2XSCHEME :2011/11/30(水) 18:11:09.37
>>400
たぶん >>398 は名前の由来をきいてるんだと思う Yo
402デフォルトの名無しさん:2011/11/30(水) 18:31:13.45
>>398
ttp://hibari.2ch.net/test/read.cgi/tech/1309940115/355
質問者は同じ人?
回答になっているのか、わからんが。
まだ疑問があるなら軽く調べると英語でなんか出てくるんじゃないの。
403デフォルトの名無しさん:2011/11/30(水) 20:20:15.60
その名前の源流はn番目の評価結果を返すprog1とかprogn辺りだろうけど
適当すぎるんじゃないか?
さすがに挙動が違うのに番号変えただけは適当すぎるんじゃないか?
コボル人か?
404398:2011/11/30(水) 20:45:35.38
>>400-401
はい。動作は分かっていますが、由来というか名前をつけた設計者の考えを知りたいのです

>>402
いいえ、別人です
405デフォルトの名無しさん:2011/11/30(水) 23:21:17.60
HyperSpec の内容でいいとおもうけどな。由来は John L White 曰く
prin1 は PRINt characters of 1 object.
princ は PRINt the Characters of some Object.
print は PRINT compound object.
だったはず。
406398:2011/11/30(水) 23:27:54.17
なるほど、分かりました
HyperSpecではそこまで言及されていなかったので勉強になります
CLHS: Function WRITE, PRIN1, PRINT, PPRINT...
http://www.lispworks.com/documentation/HyperSpec/Body/f_wr_pr.htm
407デフォルトの名無しさん:2011/12/01(木) 08:52:19.28
確かprin1が生まれた当初は
一引数関数でアトムしか印字できなかったはず。
いわばprint下請け関数。

けどLisp interpreterは任意数引数関数にするの簡単だから…
408デフォルトの名無しさん:2011/12/01(木) 11:55:32.37
The history of print, prin1, and princ?
http://groups.google.com/group/comp.lang.lisp/browse_thread/thread/5addd533ea72207a/3d01f02a08dc0d5e
ググったら十年前の質問が出てきた。
409デフォルトの名無しさん:2011/12/02(金) 01:20:36.63
KMPが回答していたのですか
知りませんでした
なるほど
410デフォルトの名無しさん:2011/12/03(土) 02:16:04.15
渋谷lispみたいなイベントってもうないの?
ちょっと発表してみたい内容できそうなんだけど
411デフォルトの名無しさん:2011/12/03(土) 02:41:55.54
ついこの間あったばっかじゃねーか。
次まで待て。
412デフォルトの名無しさん:2011/12/03(土) 03:41:06.82
>>410
Shibuya.lisp主催でもメーリングリストだけ告知させてもらうにしても自分で動いて
みたらどうかな。公共施設だと場所の確保が難しそうだけど、年末・年始は日本に
戻ってくる人もいるかもしれないし、
地方帰郷組とかいて、変わったイベントになるかもね。具体的な開催予定候補日を
示して呼びかけだけはしてみたら良いと思う。反応が悪かったら取り下げるという
感じで。


集まりが悪くて、Shibuya.lisp主催では年一回という方向みたいだね。

過去一年間で気になった題名の記事
そろそろShibuya.lispテクニカルトーク第7回 やりませんか
ttps://groups.google.com/group/Shibuyalisp/browse_thread/thread/feea5fbd70dfd899
Shibuya.lisp Tech Talk 開催頻度についての提案
ttps://groups.google.com/group/Shibuyalisp/browse_thread/thread/568065ebcde1be21?tvc=2
Shibuya.lisp TTの改善案
ttps://groups.google.com/group/Shibuyalisp/browse_thread/thread/63bde3be188a5404?tvc=2
第6回 PAIP読書会を開催します
ttps://groups.google.com/group/Shibuyalisp/browse_thread/thread/c44c802420dc7a98#
>>411
どういう趣旨で発表したいのかわからないけど、入門者大歓迎でこじんまりとやるのも
いいと思うけどね。小規模でややクローズドなイベントでいいなら実家の一室を開放できる人も
いるでしょう。

低コスト会場の一例。
PCインフラは乏しそう。年末年始は休み。申し込み条件は中野区に関わりがある人
ttp://www.nices.jp/facility/zero/gakusyu.html
ttp://www.nices.jp/reserve/culture.html
413デフォルトの名無しさん:2011/12/03(土) 09:30:23.56
東京でしか無いから、残念だよね。
414デフォルトの名無しさん:2011/12/03(土) 09:48:05.61
小規模開催じゃ売名できないだろ
415デフォルトの名無しさん:2011/12/03(土) 10:07:42.42
コルーチンはリスト処理ではない
スタックやレジスタの処理だ
リストはメモリ割り当てが頻繁に起こって遅くなりそう
416デフォルトの名無しさん:2011/12/03(土) 10:08:54.08
誤爆
417デフォルトの名無しさん:2011/12/03(土) 11:43:25.32
>>413
道府県庁所在地でやれば5人ぐらい集まるんじゃないの?
文句を言わずに動け。
他分野の話だけど地方の県庁所在地で活発にやっている所があるよ。あと関数言語とプログ
ラミング教育とemacsと英語ぐらいのテーマでNPOってできるんじゃないのかね。原文(英語)
ハンドブックを教材に使って、辞書を片手にプログラミングさせるのが良いと思う。
全然訳せなくて使い方が分からない場合に手助けする感じだと人は伸びるよ。

あとttps://groups.google.com/group/Shibuyalisp/の集客問題は何かの足しになると思う
418デフォルトの名無しさん:2011/12/03(土) 12:41:06.91
勉強会とかならいいけど、5人相手に発表とか悲しさ炸裂だろ。

別にShibuya.lispじゃなくて、普通にネットで発表しても、
興味深いもの、ことなら反響あると思うけど。
この前の竹内関数とか盛り上がったし。
419デフォルトの名無しさん:2011/12/03(土) 12:49:09.04
いつどこの勉強会で盛り上がったん?
420デフォルトの名無しさん:2011/12/03(土) 13:18:25.51
なんで勉強会が盛り上がるとかいう話になるんだよw

この前takを利用して音鳴らすってのが、Lisp界隈で話題になって盛り上がってたでしょ。
元ネタの所に御大降臨したりして。面白いものならどこで発表しても反響がくるんじゃない?
って話だよ。

盛り上がってる勉強会とかなら熊本とかなんじゃないの? よく知らんけど。
本人たちは楽しそうにやってるのは分かる。
421デフォルトの名無しさん:2011/12/03(土) 13:35:41.28
今、勉強会の話しているからだろ
422デフォルトの名無しさん:2011/12/03(土) 13:36:58.78
Lisp界隈は面白いことしている人が
表に出てこないな
423デフォルトの名無しさん:2011/12/03(土) 15:11:27.27
>>418
形態は勉強会でもなんでもいいでしょ。

ネットで発表して得る物と人前で発表して得る物って違うんじゃないの。
人前で発表して得る具体的な物って言えないが、ネットコミュニケー
ションonlyの限界ってあると思う。

年1回でもいいから地域で定期的にやって団体をつくれば、偉い人を呼び
やすいし、他県勉強会の遠征もしやすいでしょ(車出す・出さないとか)。

ヘタレlisper/schemmerでいいから代表として誰かが立てば、忙しい
lisper/schemmerも参加しやすくなるんじゃないの。代表に求められるのは、
lispの能力より雑用処理能力だよね。
424デフォルトの名無しさん:2011/12/03(土) 22:21:06.15
何故ハイパーカードは死ななければならなかったのか - karasuyamatenguの日記
http://d.hatena.ne.jp/karasuyamatengu/20111130/1322671954
>SK8というNetwton向けのLisp Machineを殺したのはジョブスに違いない

yebo blog: なぜ、HyperCardは死ななければならなかったのか
http://yebo-blog.blogspot.com/2011/12/hypercard.html
>彼は、ニュートンのLispマシン化させるSK8の死の背後にいたことは間違いない。

この点がよく分からないのですけど、newtonとlispにはどういう関係があるのですか?
425デフォルトの名無しさん:2011/12/04(日) 00:31:00.58
往年のMCLファンの俺が答えるよ。
http://en.wikipedia.org/wiki/SK8
426デフォルトの名無しさん:2011/12/04(日) 00:44:48.44
 ̄ ̄ ̄ ̄ ̄ ̄ ̄l/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     ∧_∧
    ( ´・ω・`)     ∧_∧
    /     \   (    )何言ってんだこいつ
.__| |    .| |_ /      ヽ
||\  ̄ ̄ ̄ ̄   / .|   | |
||\..∧_∧    (⌒\|__./ ./
||.  (    )     ~\_____ノ|   ∧_∧
  /   ヽ 空気読めよ   \|   (    )
  |     ヽ           \/     ヽ. オマエ馬鹿だろ
  |    |ヽ、二⌒)        / .|   | |
  .|    ヽ \∧_∧    (⌒\|__./ /
427デフォルトの名無しさん:2011/12/04(日) 00:47:00.11
これ、昔からソース公開してるんだけど、
sitアーカイブだからMacないと展開に苦労するし、
ライセンスはここ読めってページがなくなってるしw
http://sk8.research.apple.com
428デフォルトの名無しさん:2011/12/04(日) 00:50:13.95
429デフォルトの名無しさん:2011/12/05(月) 19:14:05.58
普段の雑多な処理(bashで書くと64行以上のスクリプト)ってlisp(schemeも可)で書く? bashで書く?
あと64行未満だったらどうされますか? 行の量レベルによっての取り組み方の違いとかをご教授して
いただけませんか?
LispでもLinuxディストリ間ぐらいだったら可搬性も楽に高められるかな? Lispだと他の人が読めないよ
というクレームが来たら最悪違う言語で書き直せば良いんだよね。そのスクリプトは製品ではなく数ヶ月
後までに書き直しておけば問題なしという条件で。

あと処理のアイデア・メモはみんなlispで書いちゃうのかな?
430SCHEME餃子 ◆8X2XSCHEME :2011/12/05(月) 20:09:55.71
>>429
64行ってのはどこから出てきた数値?
431デフォルトの名無しさん:2011/12/05(月) 20:13:34.54
ざったろくじゅうし
432デフォルトの名無しさん:2011/12/05(月) 20:15:41.60
(expt 2 6)
433デフォルトの名無しさん:2011/12/05(月) 22:44:29.38
(ash 1 6)
434デフォルトの名無しさん:2011/12/05(月) 23:09:55.33
>>429
UNIXの得意なことはshでやる。
fileやprosessにまつわるバッチ処理。
435デフォルトの名無しさん:2011/12/06(火) 00:28:56.29
>>429
#!/bin/perlとか書くくらいならgoshする
パイプつなげてガリガリとコマンドを呼び出してステートチェックするならbashで書くわ

書きやすい方の道具使うべきなんであってLispありきってのは間違いじゃろ
436デフォルトの名無しさん:2011/12/06(火) 02:26:25.51
せっかくだから、どんな小さなスクリプトもLispで書くことにするぜッ
437デフォルトの名無しさん:2011/12/06(火) 07:30:19.88
>>435
bash等と比べると書きやすいで言えばLispだし、ブログのネタにしやすいのもlispでしょ。
つまりはLispありきでいいんじゃないか。
438デフォルトの名無しさん:2011/12/06(火) 17:39:58.04
Lisp 1000tips wiki つくろか
439デフォルトの名無しさん:2011/12/06(火) 17:54:14.86
>>438
期待してる。
440デフォルトの名無しさん:2011/12/07(水) 00:05:07.89
common lispのmapcにあたるのは
schemeではmapになるのでしょうか?
そして、common lisp のmapcarにあたる関数は何でしょうか
441デフォルトの名無しさん:2011/12/07(水) 00:27:18.03
mapc => for-eachでmapcar => map。
ただし、mapcと違ってfor-eachが返す値は未定義。
442デフォルトの名無しさん:2011/12/07(水) 00:41:59.82
ありがとうございます 勘違いしていました
気になったのですが、common lispのdolistとmapcは何が違うのでしょうか
443デフォルトの名無しさん:2011/12/07(水) 01:16:57.98
使う場面とできることは似たようなものだけど、根底にある思想が違う。
dolistはより手続き的。リストの要素で変数を束縛してブロックを実行する。
mapcはより関数的。リストの要素に関数を適用する。

http://cl.cddddr.org/index.cgi?%E3%82%B3%E3%83%BC%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0%E3%82%B9%E3%82%BF%E3%82%A4%E3%83%AB#H-xy6b4yo1bpqy
444デフォルトの名無しさん:2011/12/07(水) 01:34:56.54
>>443
すっきりと腑に落ちました。
これで使い道に迷うことはなさそうです。
445デフォルトの名無しさん:2011/12/07(水) 02:18:53.89
ごめん。ひとつ大事なこと思い出した。

dotimesとかもそうなんだけど、dolistは

http://www.lispworks.com/documentation/HyperSpec/Body/m_dolist.htm#dolist
> It is implementation-dependent whether dolist establishes a new binding of var
> on each iteration or whether it establishes a binding for var once at the
> beginning and then assigns it on any subsequent iterations.

って決まってて、処理系によってはループ変数が破壊的に変更される可能性がある。
そういう場合にクロージャとかでその変数を捕捉すると悲劇が起こる。

具体的にはこう(↓)なる。

http://blog.practical-scheme.net/shiro/20060110-for

mapcは引数で渡すからこの問題は起きないはず。これは覚えておいた方が良いかも。
446デフォルトの名無しさん:2011/12/08(木) 12:05:04.37
動作がよくわからないので質問させてください。

(case 0 ((0) 1))
→ 1
になるので
(case 0 (((if #t 0)) 1))
→ 1
になって欲しかったのですが
→ ()
になってしまいます。

case が eqv? で比較してるので
(eqv? 0 (if #t 0))
が #f になるかと思ったんですが、これは #t になります。

case 文の 条件部分(呼び方がわかりません。)に
if 文を使うことはできないんでしょうか?
447デフォルトの名無しさん:2011/12/08(木) 12:21:55.04
>>446
(define a 0)
(case 0 ((a) 1))
-> ()
(case 'a ((a) 1))
-> 1
448デフォルトの名無しさん:2011/12/08(木) 19:06:31.53
>>446
case の条件部分はただのデータで、評価されない。
なのでその書き方は 0 という整数と (if #t 0) というリストを比較している。
449デフォルトの名無しさん:2011/12/08(木) 20:18:39.48
>>446
今度からそういうときはcondを使ってね
450デフォルトの名無しさん:2011/12/08(木) 20:30:54.67
ウズウズ
451デフォルトの名無しさん:2011/12/08(木) 21:34:09.97
>>447-449
レスありがとうございます。
condを使えば思ったとおりに動かすことが出来ました。
452デフォルトの名無しさん:2011/12/09(金) 19:26:16.97
この英語2chはなんなんだ。微妙に活気があるんだよなあ。
ttp://dis.4chan.org/tech/
453デフォルトの名無しさん:2011/12/09(金) 19:36:34.40
海外のオタクが双葉を元にしたサイトだよ
454デフォルトの名無しさん:2011/12/10(土) 00:23:20.84
schemeで画像扱う時って普通にvectorのvectorにするものなの?
455デフォルトの名無しさん:2011/12/10(土) 03:12:38.88
u8vectorで
456デフォルトの名無しさん:2011/12/10(土) 23:59:47.79
M.Hiroi's Home Page / xyzzy Lisp Programming
http://www.geocities.jp/m_hiroi/xyzzy_lisp/abclisp02.html

listの説明の図がわかりやすいです
画像ならまだしも、テキストでセルの要素を表現できることに驚きました
このような図を作成するにはどういうツールを使えばよいのでしょうか
457デフォルトの名無しさん:2011/12/11(日) 00:18:56.26
そのサイトの管理人に聞いたほうが早いんじゃね?
458デフォルトの名無しさん:2011/12/11(日) 01:33:40.73
まあたぶんテキストエディタで手書きだと思うけど
459デフォルトの名無しさん:2011/12/11(日) 02:15:31.71
xyzzyの罫線モードとかじゃないの
460デフォルトの名無しさん:2011/12/11(日) 04:05:42.47
lispはHaskellなんかと比べるとちゃんとした関数型言語じゃないって言う人がいますが、どうですか
461デフォルトの名無しさん:2011/12/11(日) 04:49:30.79
>>460
副作用のある関数が普通に書けるからじゃろ
462デフォルトの名無しさん:2011/12/11(日) 12:42:42.40
Haskellは副作用をする部分を隔離してるもんな。そこで副作用させてる
から、あるなし論争があるけど、ML系でも異色でちょっと取り扱いづらい
けど人気があるよね。モナド信仰なんだろうかな。サクサク作っていける
部分もある。
463デフォルトの名無しさん:2011/12/11(日) 17:43:52.85
c++とlispはマルチパラダイム言語
464デフォルトの名無しさん:2011/12/11(日) 18:04:26.40
プログラミングGauche の第15章 テキストの構築を読んで
sxml形式で記述した外部ファイルを読み込み
xmlに変換して他のファイルに出力したいと思いました。
ですが、方法がわかりません。

sxmlのデータが*sxml-data*にあるとき
(use sxml.serializer)
(print (srl:sxml->xml *sxml-data*))
とすればxmlのデータを整形して出力することと、
返還後のxmlデータが*xml-data*にあるとき
(with-output-to-file filename
(lambda ()
(format t "~A" *xml-data*)))
と書くとfilenameで指定したファイルに*xml-data*が書き込まれるだろうことはわかりました

ここで行き詰まったのは外部sxml(*.scm)を読み込んで変換し出力するという処理の
とくにはじめの部分と処理全体です

(with-input-from-file filename...)
で読み込んだファイルを一文字ずつや一行ずつ処理できるのはわかったのですが、
一度に読み込む方法はあるのでしょうか

最終的には
http://karetta.jp/book-node/programming-gauche/197708
の「SXMLでは次のとおりに記述します。」直後のコードを保存したファイルを読み込み、
それを別ファイルにxmlとして保存する関数を作成したいのですが
可能でしょうか?
465SCHEME餃子 ◆8X2XSCHEME :2011/12/11(日) 20:04:04.39
>>464
read
466はちみつ餃子 ◆8X2XSCHEME :2011/12/11(日) 20:28:21.93
>>460
関数型とは何かという明確な定義は無いので、ちゃんとしたというのがどの程度のことを言うのかで判断が分かれると思いますね。
Haskell が「純粋関数型」と呼ばれることからもわかるように、その逆の純粋でない関数型もあるわけで。
純粋でないことを以ってちゃんとしてないというのであれば「そうですね」という感じかなぁ。

純粋とそうでないのとを分ける基準があるのかもよくわかりませんが、
あたりまえに副作用を起こせるのを純粋とは言えないのは間違いないでしょう。

そもそも LISP は何でも有りの自由なところが特徴だし、
Common Lisp や Scheme はマルチパラダイムを標榜してもいるので、
LISP という言語が関数型としてどうかという問いはあまり意味がないですね。

あなたがそうしたければ純粋関数型的な語彙を組立ててそのスタイルを貫く自由は与えられています。
467デフォルトの名無しさん:2011/12/11(日) 23:36:25.04
>>465
ありがとうございます
468デフォルトの名無しさん:2011/12/12(月) 06:30:20.68
lispの特徴はS式構文でしょ。
469デフォルトの名無しさん:2011/12/12(月) 11:33:48.29
昔はGCとかSchemeの継続とか強力なOOシステム(Flavors, CLOS)も特徴だったけど、
今は他の言語でも見られるしね。S式+マクロはLisp族だけだね。
470デフォルトの名無しさん:2011/12/12(月) 11:34:43.39
ADTを直接記述出来る事かと。
471デフォルトの名無しさん:2011/12/12(月) 14:14:41.71
リストの操作で質問します
(val (lis1) (lis2 (lis3)))
このリストに別のリスト(lis4)を追加して
(val (lis1) (lis2 (lis3) (lis4)))
のようにlis2のリストの末尾に追加したいです
そのあとで追加したリストも
(val (lis1) (lis2 (lis3) (lis4) (lis5) (lis6)))
というふうに後ろに挿入したいのですが、
どういう操作をすればよいでしょうか
472デフォルトの名無しさん:2011/12/12(月) 14:57:15.97
>>471
そういうことをやりたくなるってことは、リストが分かってないってこと。
473デフォルトの名無しさん:2011/12/12(月) 19:27:28.75
深いすなあ
474デフォルトの名無しさん:2011/12/12(月) 21:30:27.25
(set-cdr! (last-pair (caddr ls)) (cons ls7 '()))
475デフォルトの名無しさん:2011/12/12(月) 22:17:16.53
(setq l '((1) (2 (3))))
(defun append-tail (l m)
(append (list (first l))
(list (append (list (first (second l)))
(list (append (second (second l))
m))))))

CL-USER> (append-tail l '(4))
((1) (2 (3 4)))
CL-USER> (append-tail (append-tail l '(4)) '(5))
((1) (2 (3 4 5)))
CL-USER> (append-tail (append-tail (append-tail l '(4)) '(5)) '(6))
((1) (2 (3 4 5 6)))
476デフォルトの名無しさん:2011/12/12(月) 22:24:46.15
>>474
意図した通りに動きました!ありがとうございます
477デフォルトの名無しさん:2011/12/12(月) 22:31:47.17
>>475
副作用無しのその動作も魅力的です
ありがとうございます
478475:2011/12/12(月) 22:45:13.92
ちなみにこの形だとpush, popが使えて楽だよ。
CL-USER> (setq n '(((3) 2) (1)))
CL-USER> (push 4 (first (first n)))
(4 3)
CL-USER> n
(((4 3) 2) (1))
CL-USER> (push 5 (first (first n)))
(5 4 3)
CL-USER> (push 6 (first (first n)))
(6 5 4 3)
CL-USER> (push 7 (first (first n)))
(7 6 5 4 3)
CL-USER> n
(((7 6 5 4 3) 2) (1))
CL-USER> (pop (first (first n)))
7
CL-USER> n
(((6 5 4 3) 2) (1))
479デフォルトの名無しさん:2011/12/12(月) 22:52:01.53
>>471
リストをひとつのオブジェクトに見立ててるように見えるけど、
そういう場合は、各要素へのアクセサを定義した方が良いよ。
単純になるし、保守性が良くなる。

あるいは、素直にクラスとか構造体、レコードで定義した方が楽。
単なる演習とかならどんな書き方しても良いと思うけど。
480475:2011/12/12(月) 23:42:26.08
>>471
具体的に書いてよ。
中高一貫校の中学1年生が英作文の問題を必死こいて解いている子に関係代名詞を使うとシンプルな文章になって
読みやすいよと言われても語彙や文法を知らないのですよ。Web参考書は揃っているんだけどw
481デフォルトの名無しさん:2011/12/13(火) 00:18:03.51
>>480
詳しく説明するのが面倒だった。食いついて来たら説明する予定だったけど。
てーか取り敢えず落ち着けよ。明後日の方向に弾飛んでんぞw

(define (value-name v) (cadr v))
(define (value-value v) (caddr v))
(define (set-value-name! v x) (set-car! (cdr v) x))
(define (set-value-value! v x) (set-car! (cddr v) x))

(define *x* '(value "x" ()))

(value-name *x*) ;=> "x"
(value-value *x*) ;=> ()

(set-value-name! *x* "y")
(set-value-value! *x* (append (value-value *x*) (list 0 1 2)))

(value-name *x*) ;=> "y"
(value-value *x*) ;=> (0 1 2)

こういうイディオムのこと。クラスやレコードはそれらのWeb参考書読んでくれ。
482デフォルトの名無しさん:2011/12/13(火) 00:23:05.99
いや、イディオムってのも変か。パターンとか常套手段でひとつ。

なんでもリスト使うようなプロトタイプを最初に作るときとか、
後でデータ構造を差し替えたり、コードの可読性を上げるためにやるでしょ?
483デフォルトの名無しさん:2011/12/13(火) 00:47:15.15
Schemeで書いたのは、いじめか。

Python使いにRubyで答えればプログラマとしての幅も広がるし、良いことづくしだ。
484デフォルトの名無しさん:2011/12/13(火) 00:52:58.74
485デフォルトの名無しさん:2011/12/13(火) 00:56:25.81
いやいやいやいや。>>474の人もSchemeだけど、「動きました!」って言ってんじゃん!
そもそもCommon LispともSchemeとも書いてないんだから。

マジレスすると、CLerだった場合はset-car!をrplacaに読み替えれば分かると思います。
普通は汎変数使うと思うけど。
486デフォルトの名無しさん:2011/12/13(火) 03:25:02.31
schemeは教養だから
CLerは当然schemeぐらい読めるから
487デフォルトの名無しさん:2011/12/13(火) 07:57:52.15
Cは教養だから万行デバッキングできるよね
488デフォルトの名無しさん:2011/12/13(火) 09:49:08.78
racketはset-car!がありません
489デフォルトの名無しさん:2011/12/13(火) 09:50:25.93
set-mcar! があるだろ。
490デフォルトの名無しさん:2011/12/13(火) 22:15:12.19
Lisp方言で良いなら教養としてarcで書くのもあり?
gaucheに接近するかと思ったら全然ダメだな。
arc> (time (tarai 12 6 0)) ;; arc3.1
time: 11241 msec.
arc> (time (tarai 13 7 0))
time: 83869 msec.

> (time (tak 12 6 0)) ;; Racket
cpu time: 197 real time: 197 gc time: 0
> (time (tak 13 7 0))
cpu time: 1480 real time: 1481 gc time: 0
> (time (tak 14 8 0))
cpu time: 11046 real time: 11047 gc time: 0

gosh> (time (tak 12 6 0)) ;;gauche
; real 0.715
; user 0.710
; sys 0.000
gosh> (time (tak 13 7 0))
; real 5.214
; user 5.220
; sys 0.000
gosh> (time (tak 14 8 0))
; real 38.301
; user 38.060
; sys 0.000
491デフォルトの名無しさん:2011/12/14(水) 08:06:59.33
Racket 速いな。
492デフォルトの名無しさん:2011/12/14(水) 09:29:29.96
493デフォルトの名無しさん:2011/12/14(水) 10:04:57.25
やだ Racket 格好いい……
494デフォルトの名無しさん:2011/12/14(水) 13:17:09.14
495デフォルトの名無しさん:2011/12/14(水) 18:59:12.22
387 名前:デフォルトの名無しさん[sage] 投稿日:2011/11/28(月) 14:59:20.86
馬鹿はお前だろうw
http://shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=racket&lang2=lua
496デフォルトの名無しさん:2011/12/15(木) 17:39:51.40
http://lisp.soup.io/post/8879455/Still-from-Serial-Experiments-Lain-via-lain
これって、life関数を呼び出すたびにworldを作っているのか…
497デフォルトの名無しさん:2011/12/15(木) 18:37:41.57
>>488
sicpプラグインではあるけど、set-mcar!をエイリアスしてるみたい
498デフォルトの名無しさん:2011/12/16(金) 21:43:56.97
Lisperがgcc on LinuxでCの手習いで何かの分野の処理をやるとしたら何の分野がいいかな?
コーディングがマゾい奴はやりたくない。うひょー、コーディング楽しいって感じの週末にしたい。
499デフォルトの名無しさん:2011/12/16(金) 22:48:59.80
LISPインタープリタの原始的なやつを作る。
500デフォルトの名無しさん:2011/12/16(金) 23:05:37.17
つまらん
501SCHEME餃子 ◆8X2XSCHEME :2011/12/16(金) 23:17:28.13
そしてその LISP で本格的な LISP 処理系を作る。
502デフォルトの名無しさん:2011/12/16(金) 23:20:12.36
つまらん
503デフォルトの名無しさん:2011/12/17(土) 04:11:27.04
>>498
マルチ死ね
504デフォルトの名無しさん:2011/12/17(土) 04:39:57.42
>>499
だからマゾいの嫌だって言っているでしょ。インタプリタならlispで書いた方が楽でしょ。
Cで文字列処理はしない方が良いと思っているんだけど、偏見かな。
>>501
つまらないし、目的がみえてこない。
505デフォルトの名無しさん:2011/12/17(土) 04:47:17.36
自分で考えたら?
506デフォルトの名無しさん:2011/12/17(土) 04:55:38.30
>504
おまえは499を否定しているがハードウェアべったりの処理系でGC付き言語を組むとかなり楽しいのだが。
GCは奥が深いぞ
507デフォルトの名無しさん:2011/12/17(土) 06:08:02.26
>>504
どうせなにも出来ないから黙っとけ。
508デフォルトの名無しさん:2011/12/17(土) 13:38:40.94
>>504
マゾいのが嫌だっていうから原始的なやつって書いたのに。
そもそも手習いが目的なのに「〜の方が楽」とかアホだろ。
509デフォルトの名無しさん:2011/12/18(日) 00:07:58.23
>>504
>Cで文字列処理はしない方が良いと思っているんだけど、偏見かな。

はい
510デフォルトの名無しさん:2011/12/18(日) 00:19:37.39
必要な時に出来ないのは、偏見ではなく無能。
511デフォルトの名無しさん:2011/12/18(日) 02:03:36.80
プログラムを組むときに一番大事なのは用件を最短で満たせる適切な言語を選ぶことだけど
プログラムを楽しく組む為に必要な事は「いつでも初心でいられる」事だと思っている

そんなわけで>>504 はこの土日もグズグズすると感じてしまうのであった。

;;;仕事でもプライベートでもプログラムを書くのを楽しくするコツは2行目ね
512デフォルトの名無しさん:2011/12/18(日) 02:20:46.27
ずいぶん参考になった
ほんとうにありがとう
513デフォルトの名無しさん:2011/12/19(月) 07:27:48.68
schelogってGPLなの?
schelogをrequireしたらソース公開しないといけないの?
514デフォルトの名無しさん:2011/12/19(月) 09:12:28.02
http://wiki.call-cc.org/eggref/3/schelog
これを見る限りではLGPL
LGPLは(GPLも)プライベートな利用では何の条件も要求しない
頒布する場合に条件が要求されるが、具体的な条件はお前のコードとSchelogを「リンク」する方法による
515デフォルトの名無しさん:2011/12/19(月) 15:37:56.70
LLGPL(Lisp-LGPL)とBSDライセンスのそれぞれのライブラリを使うアプリケーションを作り
(clispとsbclの2パターン)
lisp処理系をインストールせずに使えるよう
実行バイナリ化して配布しようと思うのですが、
配布する際のライセンスは結局どうなるのでしょうか
lisp処理系とライブラリのライセンスそれぞれの影響がよくわかりません

使うのは↓のライブラリです
http://www.cliki.net/Clack
http://www.cliki.net/CL-PPCRE
516デフォルトの名無しさん:2011/12/19(月) 23:47:34.98
>>515
http://cl.cddddr.org/index.cgi?%E8%89%AF%E3%81%8F%E3%81%82%E3%82%8B%E8%B3%AA%E5%95%8F#H-2v8nnc63s7pll

ライブラリについては、手を加えなければ、ライセンスに影響を与えない。
その場合、アプリケーションには自分の好きなライセンスを設定できる。

ただ、含まれるライブラリのバージョンのソースコードの入手手段の保証や、
それぞれのライブラリのライセンス本文の提示とかはしないといけないから、
その辺はしっかり対応しないといけない。

ClackはGitHubだから、対応するリビジョンのリンクでも明記しておいて、
あとはそれぞれのライブラリがどのライセンスを採用してるのかを明記して、
LLGPLとBSDライセンスの本文を含めれば良いんじゃないのかなー。あと著作権表示。
517デフォルトの名無しさん:2011/12/20(火) 00:32:23.27
>>516
まさに探していた説明です
アプリケーションには任意のライセンスを設定できるのですね
そのうえで使ったライブラリのソースコードのありかとライセンスを表示する
すべきことがわかりました
518デフォルトの名無しさん:2011/12/20(火) 01:55:11.33
ということは
biglooやgambit-CでGPLなライブラリをuseやrequireしたものをCに変換して
Cをバイナリーにした場合はソース公開の義務はないってことでいいのかな
519デフォルトの名無しさん:2011/12/20(火) 03:17:22.44
GPLはリンクの方法を区別しないから(少なくともFSFはそう思ってる)、
それ普通にGPLに感染すると思う。

http://www.gnu.org/licenses/gpl-faq.ja.html#IfLibraryIsGPL

LGPLならライセンスは影響を受けないと思うけど、
静的リンクだから全ソースコード公開の義務はあると思う。

http://ja.wikipedia.org/wiki/GNU_Lesser_General_Public_License#LGPL.E3.81.AE.E7.89.B9.E5.BE.B4

LLGPLなら確か大丈夫なはず。ただ、ライブラリのコード配布は必須。
最後の段落。

http://opensource.franz.com/preamble.html
520デフォルトの名無しさん:2011/12/20(火) 03:30:15.93
chickenはeggの分割コンパイルできるんじゃないの?
動的リンクにできそうな予感が
521デフォルトの名無しさん:2011/12/20(火) 11:04:08.18
>>519の最後のリンク先を見ると
LLGPLのライブラリを静的リンクして実行ファイルを作った人は
使ったライブラリのソースコードを(公式サイトだけではなくて)独自に配布しなければならぬ
こう理解したけどこれでいいのかな
522デフォルトの名無しさん:2011/12/20(火) 12:04:43.34
プラグインとかならともかく
動的リンクでも根本機能として必要ならダメだよ
使うのをきっぱりやめた方が早い
523デフォルトの名無しさん:2011/12/20(火) 12:38:42.75
>>520
できるの?
初めて聞いたんだけど
524デフォルトの名無しさん:2011/12/20(火) 14:05:09.96
>>522
それはGPLの話(>>518)だよな?
LGPLの4.d(LGPLv3の場合)では「"Minimal Corresponding Source"と"Corresponding Application Code"の配布」と
「適切な共有ライブラリ機構の使用」のどちらか一つの実行が条件だから
後者を選択した場合はソースの配布は義務付けられないと思うが
525デフォルトの名無しさん:2011/12/20(火) 16:01:16.33
>>521
入手できる手段を保証すれば大丈夫じゃないかな。アクセスできるかが重要なので。
自分は、GitHubとかなら特定リビジョンのリンクの提示だけでいけると解釈してる。
もちろん、配布元が閉鎖とかしちゃったら、自分で配布しなくちゃいけない。
この辺はGPLやLGPLの思想を汲んでおけば、そう大外しはしないと思う。

もちろん、会社の商売でやるなら法務と相談必須だけど。
526デフォルトの名無しさん:2011/12/20(火) 16:23:32.92
一応根拠補足。

LLGPLの最後の段落に"in accordance with the terms and conditions of the LGPL"とあり、
LGPLの6.dでソースコードを同等のアクセス手段、同じ場所で提供すれば良いとされているため。
ダウンロードページに両方のリンクを張っておけば、多分これを満たすと思う。

http://sourceforge.jp/projects/opensource/wiki/licenses%2FGNU_Library_or_Lesser_General_Public_License
527デフォルトの名無しさん:2011/12/20(火) 16:52:20.72
心配ならソースのzipを読み込んだコアを配布すれば?
ある関数実行したらファイルに書きだすようにしといて。
528デフォルトの名無しさん:2011/12/20(火) 16:57:29.14
そんな面倒なことするくらいなら、普通にソースも一緒に配布するだろ……。
529デフォルトの名無しさん:2011/12/20(火) 17:08:30.14
元のお題(>>515)が実行ファイル一つだけにしたいというものだから。
530デフォルトの名無しさん:2011/12/20(火) 17:16:51.41
READMEすら同梱できないとか、>>515のどこにそんなストイックな条件が書いてんだよw
まあ、ある意味そういうのも厨二心をくすぐられてwktkするけど。
531デフォルトの名無しさん:2011/12/20(火) 17:43:22.27
気になったんだけど、common lisp絡みの案件で
ライセンス上問題となった事件は何かある?
それとfranzがllgplをわざわざ設けた経由が知りたい
llgplでなくて修正BSDで実用上十分だと思うんだけど
裏事情があるのかしら
532デフォルトの名無しさん:2011/12/20(火) 18:11:50.54
ソースコードの再利用について考え方が全く違うもので十分という意味がわからない。
533デフォルトの名無しさん:2011/12/21(水) 00:56:24.51
GPL系と商用のデュアルライセンスの話なのか?
534デフォルトの名無しさん:2011/12/21(水) 06:11:56.89
名言来たな。「LLGPLじゃなくて修正BSDで十分」
どうみてもコピーレフトへの宣戦布告です本当にありがとうございました。
535デフォルトの名無しさん:2011/12/21(水) 06:53:08.91
GoogleがV8に修正BSDを採用した経由が知りたい
修正BSDでなくてUnlicenseで実用上十分だと思うんだけど
裏事情があるのかしら
536デフォルトの名無しさん:2011/12/21(水) 12:12:10.46
>>531
修正BSDを開発者の視点から考えてみるといいよ
修正BSDでライセンスされているプログラムは、著作権表示の点をクリアすれば
ソースコードを公開しなくてもいい
そのプログラムを開発した人にとっては自分が作成したコードを見せなくていいが
他の開発者からするとそのプログラムのコードを見る機会がなくなる
誰にとってそのライセンスがいいものかは立ち位置によって変わることには
注意したほうがいいかも
537デフォルトの名無しさん:2011/12/21(水) 14:13:00.71
>>536
>そのプログラムを開発した人にとっては自分が作成したコードを見せなくていいが
いまどきスパゲッティコードを書いているわけでもないだろうよ。
>他の開発者からするとそのプログラムのコードを見る機会がなくなる
見る機会がなくなるのも嘘な気がするなあ。最新技術としての賞味期限過ぎたら
公開しようかなと考える人・団体はかなり存在するんじゃないの。

BSDスタイルライセンスの良いところは公開しない・するといつでも自由に切り替えられる
ところだよ。
538デフォルトの名無しさん:2011/12/21(水) 18:38:52.63
>>537
NDAで公開出来ない物があるからじゃろ、自分のコードが綺麗でないから公開したくないってのとは別の問題。
539デフォルトの名無しさん:2011/12/22(木) 00:06:49.95
>>537
納入するときはツールを使ってわざとスパゲッティコードにしてる俺が来ましたよ
540デフォルトの名無しさん:2011/12/22(木) 02:15:29.56
>>539
そのツールは可逆性があるの?
鍵がないとそのツールを使えば可逆できるなあ。
541デフォルトの名無しさん:2011/12/22(木) 02:29:56.35
何を言ってるんだお前は。
542デフォルトの名無しさん:2011/12/22(木) 07:37:11.95
立て続けに見当外れなことを言ってる奴は釣ってんのか?
543デフォルトの名無しさん:2011/12/22(木) 13:00:00.91
>>539
マクロを全部展開するだけでもスパゲッティー化できるよね
前に見たbiglooのソースもあきらかにやってたし
544デフォルトの名無しさん:2011/12/22(木) 17:16:02.39
おれもコードランダム化させるの作ったよ
自分でハックしてみたが方式が判ってても追跡困難だった
もう二度とやりたくない
545デフォルトの名無しさん:2011/12/22(木) 17:53:04.64
コードランダム化のコードを
誰か公開したりしらいいなあ
546デフォルトの名無しさん:2011/12/22(木) 19:06:20.31
実行速度を落とさないで難読化なら
変数や関数の名前をランダムなものに変えたり
実行されない関数を追加したり
あと他に何があるかな
547デフォルトの名無しさん:2011/12/22(木) 19:33:11.80
実行されないはずの意味ありげな処理追加。
実行されたら、それはそれで異常検出。
548デフォルトの名無しさん:2011/12/22(木) 22:38:44.07
>>546
やっぱりマクロの魔術師でしょう :-)

これRubyちゃうん?
いやCommon Lispさ(ふっ)

とか
549デフォルトの名無しさん:2011/12/22(木) 22:44:35.94
納入先がWindows使ってたら、改行コードをUNIXの改行コードにする
改行してしてなくてもいい場所は改行を削除
コメント部分の日本語を全部文字化けさせる
コメント部分に実行ファイルの機械語をASCIIコードに変換して追加
diffの差分ファイルを納入
550デフォルトの名無しさん:2011/12/22(木) 23:03:45.81
それ途中難読化じゃなく処理系を相手にチキンレースしてるだけでは
551デフォルトの名無しさん:2011/12/22(木) 23:18:29.70
納入しなければならないのはきちんと動くけど人間が読めないコード
相手に解読されたら仕事が来なくなる
552デフォルトの名無しさん:2011/12/23(金) 00:25:44.16
せめてLispのケースで話して(><)
553デフォルトの名無しさん:2011/12/23(金) 00:35:06.37
LISPプログラムを他人に渡すなんて、大学の研究室の後輩に渡すくらいしかなかった
当然、究極のスパゲッティにして渡したけど
554デフォルトの名無しさん:2011/12/23(金) 00:37:44.49
カレーが少し余ったんでスパゲティ茹でて一緒に炒めたらおいしかった
555デフォルトの名無しさん:2011/12/23(金) 01:59:19.41
>>553
先輩のプログラム、センス悪いな。糞じゃん
あのひとエラソーにしてるだけだったよな。いなくてせいぜいだ
とか言われてるかも。
556デフォルトの名無しさん:2011/12/23(金) 02:00:16.59
>>554
次は、麻婆豆腐にスパゲティ入れて上にチーズをかけてオーブンで焼いてみ。
557デフォルトの名無しさん:2011/12/23(金) 02:05:49.39
>>555
そのプログラムを即座に改良できるのが俺だけ という優越感
558デフォルトの名無しさん:2011/12/23(金) 03:45:54.90
まあいいんじゃないの
自分で一から書く気になってくれれば
559デフォルトの名無しさん:2011/12/23(金) 03:55:01.34
先輩がせっかくテーブル拭きプログラムを書いたのに姑のようにまたテーブル拭きプログラムを書いていいか、悩まないか。
そういう先輩に限って卒業も飲み会に参加して、「まだあんな(俺の)プログラムを使っているの」とバカにしつつ顔が
喜んでいたりするんだよなあ。
560デフォルトの名無しさん:2011/12/23(金) 22:32:46.08
難読化したソースなんか納入したら検収で落とすだけだが。
当然納入できなかったんだから違約金は払ってもらう。
561デフォルトの名無しさん:2011/12/24(土) 00:55:59.54
お前みたいな奴はマ板に行ってくれ。
562デフォルトの名無しさん:2011/12/24(土) 06:09:07.85
ちょっと遊びで処理系実装してるのだけど
symbolとquoteの実装方法で参考になるコードどこかにないでしょうか
mosh?
563デフォルトの名無しさん:2011/12/24(土) 06:19:30.02
何で実装しているのか、書けよ
564デフォルトの名無しさん:2011/12/24(土) 06:57:54.59
c
565デフォルトの名無しさん:2011/12/24(土) 06:58:35.92
ホビットが
#define long SCM
とかしててびっくりした
566デフォルトの名無しさん:2011/12/24(土) 07:13:22.47
何を参考にしたいのかによるな。
原理的なとこ知りたいならミニマルな処理系がいいんじゃない? tinyschemeとか。
つーてもsymbolは単に辞書に登録した文字列だし、quoteの処理はもっと高レイヤ
なのでLispで書いてあるevalの実装あたりを見ればいいんじゃないか。
567デフォルトの名無しさん:2011/12/24(土) 11:29:44.73
Schemeって他の処理系の定義重複部分をコピペすると書く所ほとんどないのか。
568デフォルトの名無しさん:2011/12/24(土) 11:41:02.55
>>562
http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-26.html#%_sec_4.1

初学者がqouteの処理だと思っていることは、ほとんどreadがやっている。
569デフォルトの名無しさん:2011/12/24(土) 15:35:57.68
>>568
SICPって何回くらい読むもの?
再来年の年初めぐらいから読み始めようかな。
570デフォルトの名無しさん:2011/12/24(土) 16:09:36.63
難読化なら一度速度優先でコンパイルしてアセンブラをはかせる。
そのコードを今度はCなりLISPなりに戻してやればよいじゃないかと思う。

動けばよいコードを納品って契約ならコンパイラでアセンブラはかせて、
それをそのまま納品でよいじゃないかともおもいます。

昔移植でアセンブラからCへコンパイルするコードは作ったことがあります。
半自動でしたけど9割は自動化して移植してました。
571デフォルトの名無しさん:2011/12/24(土) 16:19:20.59
>>570
環境って何?
572デフォルトの名無しさん:2011/12/24(土) 22:10:55.29
環境は組み込み。
68アセンブラからCへコンバート。
IOは仮想化して対応した。

なのでアセンブラまで落とせればそれを高級言語に再変換してあげれば、
それだけで難読化しているようなもんだと思うよ。

動作の保証はテストを書いておいてそれを通すとある程度担保てきると思います。
573デフォルトの名無しさん:2011/12/24(土) 23:34:26.37
いま難読だい?
574デフォルトの名無しさん:2011/12/24(土) 23:37:57.62
新しい構文を作るマクロって可読性下げてるよね。マクロ禁止みたいなコーディング規約とかある?
575デフォルトの名無しさん:2011/12/24(土) 23:39:19.87
そういうのは規約というよりプロジェクトルールだろ
>>574はマグロ納品禁止な
576デフォルトの名無しさん:2011/12/24(土) 23:42:17.73
一行目がマジレスなのか二行目のギャグを言うためのフェイクなのか分からん
577デフォルトの名無しさん:2011/12/24(土) 23:46:44.33
lispやschemeを使った仕事ってあまりイメージがわかないんだけど
どういった用途に使われているのかな
578デフォルトの名無しさん:2011/12/24(土) 23:47:55.58
他人のソースにdefin-syntaxなんて出てくると
この野郎・・・!て思うわけよ
579デフォルトの名無しさん:2011/12/24(土) 23:50:34.67
つーか複数人でlisp使うプロジェクトなんて実在するのかよ
ゲリラ的に入れちゃいました、って案件ばっかりだぞ
580デフォルトの名無しさん:2011/12/24(土) 23:52:13.24
」なに・・・これ・・・」
「lispですよー知らないんですか哀れ」
581デフォルトの名無しさん:2011/12/24(土) 23:54:26.95
普段からストレスの連続なのに括弧のカタマリなんて出遭ったら発狂するだろ
582デフォルトの名無しさん:2011/12/24(土) 23:55:14.01
なんだ。やっぱプロジェクトで使われないから、そういうルールもないのか

ポール・グレアムはlispでサイト作ってたんでしょ
「 10人のLispハッカーが集められないようなら、 たぶんあなたの会社はソフトウェアを開発するのに適さない都市にいるんだ。」とか言って
結局ヤフーにM&Aされて書き換えられたんだっけ
583デフォルトの名無しさん:2011/12/24(土) 23:59:16.46
組み込むにしてもGCの無い軽い言語入れちゃうし、
あえてlisp入れてもそれほど面白くない
584デフォルトの名無しさん:2011/12/25(日) 00:18:41.49
マクロ禁止してまでLisp使う意味があるか疑問。それなら他の言語使えば良い。
JavaとかPythonとか、自分の足を撃ち抜きづらい言語が他にあるんだし。

具体的に、どんなマクロが可読性を下げると感じるのかには興味がある。
if*が気に喰わないとかならまあ理解できるけど、aifとかなら賛成できない。

あと、旧ITAとかMSIとか、プロジェクトで使っているとされる所は普通に存在するし、
そもそもFranzとかSBCLとかCCLの処理系開発者連中自体が複数人で開発してる。
興味があるならMSIのセミナーでも行ってみれば良いんじゃない。
585デフォルトの名無しさん:2011/12/25(日) 00:21:33.42
>>584
if*ってどんなマクロなの?
586デフォルトの名無しさん:2011/12/25(日) 00:24:30.65
一貫した構文がないこと自体、可読性が低いと思うけど、違うの
587デフォルトの名無しさん:2011/12/25(日) 00:25:22.08
>>585
こういうの。個人的には最高にキモいと思うけど、好みは人それぞれなので否定はしない。

http://cadr.g.hatena.ne.jp/g000001/20100529/1275126086
588デフォルトの名無しさん:2011/12/25(日) 00:41:18.98
まあ普通はPython使うけども、後学のために使ってみた
いずれにせよ書き捨て用だけど
589デフォルトの名無しさん:2011/12/25(日) 01:06:01.08
>>586
関数で抽象化するのと、マクロで抽象化するのと、どう違うかな?
どちらも特定の入力を受け、特定の出力を返すものだけど。
構文特有の話ではなくて、実は抽象化の設計自体が悪かったりしないかな?

もちろん、Cで{ }をBEGINとENDにするような、ああいう単なる置き換えについては、
批判が付いて回るのも当然だと思うけど。こういうの。

http://www.pro.or.jp/~fuji/mybooks/cdiag/cdiag.8.2.html

>>588
Paul Grahamのエッセイでも読んだ?
Lisperの可読性に対するスタンスとかは、そのGrahamのこれなんかが参考になると思う。

http://practical-scheme.net/trans/power-j.html

この著者、しばしばPythonを引き合いに出してdisってるように見えることもあるけど、
別に嫌ってないし、一定以上の評価を与えてるから、それは勘違いしないで。
590デフォルトの名無しさん:2011/12/25(日) 01:16:02.46
お前みたいな抽象化された脳みそでは同じに見えるんだろうけど
名前付きの関数と新しい構文では、普通は次元が違うと捉えるだろう

別にポール・グレアムはPythonをdisってないよ。lisp化してるとか言っちゃってるし
ただPythonにあまり詳しくないだけ
591デフォルトの名無しさん:2011/12/25(日) 01:17:43.42
>>587
ありがとう
うーん、こういう使い方があるのかと驚いた
使い込めばloopのようにしっくり来るようになるかも…?

>>588
Norvigの話をふと思い出した
((Pythonで) 書く (Lisp) インタプリタ)
http://www.aoky.net/articles/peter_norvig/lispy.htm
592デフォルトの名無しさん:2011/12/25(日) 09:55:56.57
>>589
arcを触った後にまた読むと読み方も変わるね。

真面目に(簡潔さの)プログラミング言語の比較をやるのはおもしろいのかもしれないなあ。
「(1)一ヶ月かかるプログラムで比較しろ」と言うけど、「(2)プログラミング言語間の相対
的な力を正確に比べるのはまず不可能だということになる。」とも言っているから(1)を
大きいシステムで試せという話に置き換えて、ちょっと小ぶりだけどLispの処理系作りで
試すのは良いことかもしれない。
So any language comparison where you have to meet a predefined spec is testing
slightly the wrong thing.
(だから、あらかじめ決められた仕様に合わせてコードを書くという形式の言語間の比較は、
少し的を外している。)
とあるけど、slightlyなわけでLispの処理系作りでいいんじゃねえと思った。いや、むしろ
比較しやすいシステムな気がする。
あと最初に仕様がまったくないシステムなんてないだろ。未知の問題があったとしても既存の
解法のベースがあってそれを応用して解くわけだし。天才数学者をさんざん殺してきたフェル
マーの定理クラスの問題を解くという話なのかな。言語で解ける射程距離って意識下/無意識
下で分かって解くことが始まるから仕様って頭の中にあるよね。
593デフォルトの名無しさん:2011/12/25(日) 10:15:39.39
>>591
Lispインタプリタを実装できないPythonは糞だな。
594デフォルトの名無しさん:2011/12/25(日) 15:10:09.06
>>593
誤読も甚だしい。
595デフォルトの名無しさん:2011/12/25(日) 17:38:24.52
PythonでR5RSを実装できんのかよ。
596デフォルトの名無しさん:2011/12/25(日) 18:22:09.88
できないと思う理由は?
597デフォルトの名無しさん:2011/12/25(日) 18:42:17.58
R5RS準拠Schemeすら実装できない汎用言語って存在し得ないだろw
Schemeよりよっぽど複雑なPython処理系をPythonで書いたりしてるのに。
598デフォルトの名無しさん:2011/12/25(日) 19:15:47.95
よっぽど複雑なPython処理系って具体的に何よ。
599デフォルトの名無しさん:2011/12/25(日) 20:00:19.76
>>598
その解釈はこちらの意図と違う。「よっぽど複雑な」が掛かるのはPython。

Pythonで実装してるPythonが知りたいなら、例えば名前がエロいPyPyがそう。
PyPyとかPychinkoとかPython使いエロ過ぎ。

Lisperももっとエロくなる必要があると思う。pgのeroとかじゃエロさが足りねーよ。
600デフォルトの名無しさん:2011/12/25(日) 20:21:19.81
今、man perlして気づいたんだけど、man perl*の充実ぶりってすごいなあ。
日本ローカルだけでman lisp*って充実しないか。manで引けるって便利だよなあ。
ドキュメントの置き方的に問題があるのかもしれないけど。
Overview
perl Perl overview (this section)
perlintro Perl introduction for beginners
perltoc Perl documentation table of contents
Tutorials
perlreftut Perl references short introduction
perldsc Perl data structures intro
perllol Perl data structures: arrays of arrays
perlrequick Perl regular expressions quick start
perlretut Perl regular expressions tutorial
perlboot Perl OO tutorial for beginners
perltoot Perl OO tutorial, part 1
perltooc Perl OO tutorial, part 2
perlbot Perl OO tricks and examples
601デフォルトの名無しさん:2011/12/25(日) 20:21:44.31
600ぺりか
602デフォルトの名無しさん:2011/12/25(日) 20:23:45.48
おらの600ぺりかがあ・・・・
603デフォルトの名無しさん:2011/12/25(日) 22:04:57.56
>>599
ooopyもあるんだぜ。そりゃホルスタインは男の夢だが
604デフォルトの名無しさん:2011/12/25(日) 22:05:57.51
質問です。
'((A B C D) (E F G H) ...) -> '(A B C D E F G H ...)
の加工を行いたいのですが、関数をどのように組めばいいですか?
605デフォルトの名無しさん:2011/12/25(日) 22:06:24.57
>>604
appendか?
606デフォルトの名無しさん:2011/12/25(日) 22:14:51.32
>>604
Common LispかSchemeかは知らないが、appendをapplyすればおk。
ただし、関数の引数の最大数の制限に掛かるから、巨大なリストには他の方法を使うこと。

http://www.aiai.ed.ac.uk/~jeff/lisp/cl-pitfalls から引用すると、

(reduce #'append list-of-lists :from-end t)
(mapcan #'copy-list list-of-lists)

とか。Schemeならfold系の手続きを使えばreduceと同じことができる。
607デフォルトの名無しさん:2011/12/25(日) 22:16:22.30
っと。肝心なapplyの例載せ忘れたよ。

(apply #'append '((0 1 2) (3 4 5)))
;=> (0 1 2 3 4 5)
608デフォルトの名無しさん:2011/12/25(日) 22:23:30.49
とりあえず、LispでエロいっていうとS式を受ける引数によく使われるsexpは外せない。
609デフォルトの名無しさん:2011/12/25(日) 22:30:15.72
>>608
cofee-p のあれからいくと...
610デフォルトの名無しさん:2011/12/25(日) 23:36:00.24
mapappendていう関数があったような
なかったような
611デフォルトの名無しさん:2011/12/25(日) 23:39:39.27
あー、中でapplyしてんのか
失格だ
(define (mapappend func . args)
(if (memv '() args)
'()
(append (apply func (map car args))
(apply mapappend func (map cdr args)))))
612デフォルトの名無しさん:2011/12/25(日) 23:54:23.19
sexp と書くのはためらわれるので、自分で書くときは sxp と書いている。
613デフォルトの名無しさん:2011/12/25(日) 23:58:17.69
>>609 nil って答えられると困るじゃないか
614デフォルトの名無しさん:2011/12/26(月) 00:25:28.38
>>609
同性どうしならヤダな。
615デフォルトの名無しさん:2011/12/26(月) 00:45:26.84
PyPi
PyPy
Pychinko
Pypants
616デフォルトの名無しさん:2011/12/26(月) 00:57:03.26
おいおい。パンツまであるとかレベルたけーな。
617デフォルトの名無しさん:2011/12/26(月) 02:38:10.37
pypanもあるぞ
618デフォルトの名無しさん:2011/12/26(月) 03:04:44.40
行列計算ぐらい統一してほしい
(list 'matrix 数値)
とか
(vector (vector 数値))
とか
(vector 数値)
とか

というか計算が一番速いのはどれ?
619デフォルトの名無しさん:2011/12/26(月) 04:27:35.55
racketに
(define (apply-values proc args-expr)
(call-with-values (lambda () args-expr) proc))
なんてのあるけど、どうせならsrfiかなんかに登録されてほしい。
620デフォルトの名無しさん:2011/12/26(月) 10:49:07.18
>>618
Common LispやSchemeで行列演算とかしたことないけど、
本気で性能を気にするなら、disassembleして生成されるインストラクションを見た方が良い。

リストはインデックスアクセスの計算量的に不利だから、あんま使われんだろうとは思う。
ベクタのベクタと単一のベクタは生成時のコスト以外あんま変わらん気がするけど、
処理系によってベクタの実装に差があると思うから、その処理系で実際試してみないと何とも。
処理系のコード読んでみるのも良いかもしれない。ベクタへのアクセサとかの。
621デフォルトの名無しさん:2011/12/26(月) 16:35:21.51
CommonLispなら組み込みでarrayがあるのにわざわざリストやベクタのベクタ使う意味は?
arrayで型宣言して(speed 3)(safety 0)すればそれなりのコードは出るよ。
Schemeはsrfi-25があるけど、速度はわからん。
622デフォルトの名無しさん:2011/12/26(月) 16:40:12.33
標準で行列演算ならarrayを使うほうが適切だわな。
623デフォルトの名無しさん:2011/12/26(月) 16:57:14.78
キーワードじゃなくて素のシンボル使ってるから多分Schemeっしょ。
Racketはサポートしてるけど、リファレンス実装ぽいなー。
Gaucheはgauche.arrayでSRFI-25とAPIは揃えつつ独自の実装してるっぽいね。
624デフォルトの名無しさん:2011/12/26(月) 17:06:03.87
ところでgauche使いってここに何人いるの?
625デフォルトの名無しさん:2011/12/26(月) 17:07:07.75
gauche以外に何があるんだよ…
626デフォルトの名無しさん:2011/12/26(月) 17:28:08.07
凄い脳味噌
627デフォルトの名無しさん:2011/12/26(月) 19:35:05.74
>>605-
ありがとうございます。
助かりました。
628デフォルトの名無しさん:2011/12/26(月) 21:12:24.95
common lisp(CCL)とgaucheでcdかdが見つかったら続く非空白文字につなげたいのですが
(直後に改行が来ていたら次の行の非空白文字につなぎます)
どういう処理ですればいいのでしょうか。dは一つだけ来て二つ以上は続きません。

a1a2cd b1b2b3
c1c2c3 d1d23d
e1e2e3 f1f2f3

a1a2 cdb1b2b3 ; cd b -> cdb
c1c2c3 d1d23 ; 行末のd -> 次の行へ
de1e2e3 f1f2f3 ; ->行頭にdを追加

ファイルから一文字ずつ読み込んでcdとdが来たら非空白文字まで出力を控え、
非空白が来たときにそれとともに出力という原始的な方法を考えたのですが
もっと効率のよい手法はあるでしょうか
629デフォルトの名無しさん:2011/12/26(月) 21:25:38.35
http://www.suri.cs.okayama-u.ac.jp/servlets2/scm2cpp.rkt
Schme to readable C++
に型推論を導入
まだ未完成だけど時間切れになってしまったのでやもえず公開
630デフォルトの名無しさん:2011/12/26(月) 23:06:07.79
>>628
> もっと効率のよい手法はあるでしょうか

具体的に何の効率なの?
実効速度の事なら、よっぽどまずいコーディングしない限り、
速くなったり遅くなったりする要素は殆どないけれども。
631628:2011/12/26(月) 23:22:59.43
>>630
そうなのですか
わかりました
632はちみつ餃子 ◆8X2XSCHEME :2011/12/26(月) 23:28:53.00
Gauche ならその手のスクリプトでありがちなテキスト処理用の機能が多数用意されてるからよほど速度とかメモリとかにこだわるのでなければ正規表現でマッチさせて置換えでいいんじゃないかな。

(display
(regexp-replace-all
#/(c?d)([ \n])/
"a1a2cd b1b2b3
c1c2c3 d1d23d
e1e2e3 f1f2f3"
(^[m]#`",(m 2),(m 1)")))
633デフォルトの名無しさん:2011/12/26(月) 23:40:59.31
cl-lexでもいけそうだけど、本人案でいいでしょ。
634デフォルトの名無しさん:2011/12/26(月) 23:56:04.87
またお願いします。
define-syntaxを使って
(map proc list) -> (proc (x list))
のように変換したいです。
簡単に言えば、リストにmapを内在させて見てくれを良くしようと思ったのです。
e.g.)
(define plusone (lambda (x) (+ 1 x)))
;;;通常なら
(map plusone '(1 2 3)) ;;;=>'(2 3 4)
;;;やりたい
(plusone (まくろ '(1 2 3))) ;;;=>'(1 2 3)
635デフォルトの名無しさん:2011/12/27(火) 00:05:34.41
最後の'(1 2 3)は誤記です
636デフォルトの名無しさん:2011/12/27(火) 00:08:32.94
call/ccでも使えば
637デフォルトの名無しさん:2011/12/27(火) 00:28:53.24
>>636
使いましたがリスト先頭のみ処理されました。
638デフォルトの名無しさん:2011/12/27(火) 00:33:43.11
>>632-633
ありがとうございます。
639デフォルトの名無しさん:2011/12/27(火) 00:53:13.56
≡≡≡≡ 癶( 癶;:゚;益;゚;)癶 カサカサカサ
640デフォルトの名無しさん:2011/12/27(火) 01:55:16.48
AmazonのプログラミングGauche売れとるな
641デフォルトの名無しさん:2011/12/27(火) 17:28:00.78
プログラミングgaucheの中に出てくるjames clark's notationについて
どこかに詳しい説明はありませんか
http://search.cpan.org/~rbs/XML-Filter-Essex-0.01/lib/XML/Essex/Model.pm
を見るとどうもjames clark's notationは別物のように思えるのですが
642デフォルトの名無しさん:2011/12/27(火) 17:45:55.73
その本は読んでないが、
http://www.jclark.com/xml/xmlns.htm
では足りないのかい?
643デフォルトの名無しさん:2011/12/27(火) 17:49:55.17
俺の記憶にあるのは、
ttp://jp.rubyist.net/magazine/?0012-qwikWeb#l14
これだけだな。

確か高林氏が最初に「わびさび方式」を紹介した時に、氏のコードが生成してるスタイルについて
そのように呼んでた記憶があるんだが、氏の勘違いじゃなかろうかと俺は思っている。

字下げ付けないでべたっと生成してるぶんにはさほどでもないが、字下げを付けようとしたら
割と変態っぽくなった記憶がある(まぁPPなんて複雑になりたがるもんだけど)。
644641:2011/12/27(火) 22:48:00.53
なるほどわかりました
645デフォルトの名無しさん:2011/12/28(水) 00:16:15.10
「プログラミング不器用な」 が売れてるのか。
646デフォルトの名無しさん:2011/12/28(水) 14:29:47.83
http://www.cl.cam.ac.uk/teaching/1011/ConceptsPL/
これのlispのスライドにreflectionとあるのですが
>Fully reflective languages are still just research prototypes
>(e.g. Maude), but limited forms of reflection appear in
>several languages (e.g. LISP, Prolog, Python)
これはどういうことなのでしょうか?
647デフォルトの名無しさん:2011/12/29(木) 13:06:33.10
なんぞ

[腐lisp]腐女子のためのlisp入門 #0 - Oh! Can Not Diary
http://piro.hatenablog.com/entry/2011/12/28/232146
648デフォルトの名無しさん:2011/12/29(木) 13:20:58.48
あのpiro氏とは無関係か。
腐はともかくとして、今時elispってのはこれまた微妙な。
649デフォルトの名無しさん:2011/12/29(木) 14:50:37.28
学生プログラマ日本一決定戦(予選は社会人も参加可)
ttp://codevs.jp/howto.html
現在予選開催中
応募締切 2012.1.6 12:00

おもしろいことやっているじゃん。誰か今から参加しろよ。
650デフォルトの名無しさん:2011/12/29(木) 15:06:15.26
>>649
社会人でも予選は参加可能らしいしやってみれば?

時間制限あるしsbclとか使えば多少有利かもね
651デフォルトの名無しさん:2011/12/29(木) 17:33:07.12
つまらんわ
652デフォルトの名無しさん:2011/12/29(木) 17:37:36.79
ほうしゃのうを除去するプログラム作ってくれ

「ほうしゃのうを除去するプログラム作ってくれ」

「を除去するプログラム作ってくれ」
653デフォルトの名無しさん:2011/12/30(金) 11:42:28.01
R7RSのドラフト読んでみたけど、R6RSは本気で黒歴史にする方向みたいだな。
654デフォルトの名無しさん:2011/12/30(金) 12:07:30.67
>>653
>R6RSは本気で黒歴史にする方向
詳しく聞きたい
655デフォルトの名無しさん:2011/12/30(金) 16:35:22.18
互換性切って捨てられるとかpython3みたいだな。
656デフォルトの名無しさん:2011/12/30(金) 16:59:16.85
rubyよりまし
657デフォルトの名無しさん:2011/12/30(金) 18:50:38.47
Perl6は赦された
658デフォルトの名無しさん:2011/12/30(金) 23:54:15.03
R6RSとかいらないし
659デフォルトの名無しさん:2011/12/31(土) 01:08:33.13
Windows2000と7に挟まれたVista扱いですか…
660デフォルトの名無しさん:2011/12/31(土) 01:16:29.67
7も正直微妙なんだけど8で大コケの予感
UIいじるのは完全に死亡フラグ
661デフォルトの名無しさん:2011/12/31(土) 01:18:26.33
単なるマーケティングの問題と一緒にすんな
662デフォルトの名無しさん:2011/12/31(土) 02:43:46.81
racketに慣れきってしまったので6を黒歴史にされると困る
663デフォルトの名無しさん:2011/12/31(土) 02:55:14.14
RacketはもうArcよろしく我が道を往くことになってるから安心しろ。
あれはLispではあるけど、もうSchemeじゃない。RnRSをサポートしてても。
664デフォルトの名無しさん:2011/12/31(土) 12:10:07.16
iphoneでもluaはちゃんと動く
lua上で動くschemeがあるので
iphoneでも無料でscheme動かすことできる
665デフォルトの名無しさん:2011/12/31(土) 12:44:02.99
de?
666デフォルトの名無しさん:2011/12/31(土) 13:06:19.87
>>663
だとすると、結局のところschemeのエッセンスって何なの?
667デフォルトの名無しさん:2011/12/31(土) 13:21:55.67
>>666
実装して楽しいことじゃね?
668デフォルトの名無しさん:2011/12/31(土) 13:48:45.98
誰かアンドロイドタブレットで動くgaucheインタープリタ作って
669デフォルトの名無しさん:2011/12/31(土) 16:49:22.06
>>666
純粋な計算機科学の話ではなくて、どちらかと言えば政治的な話。

"a dialect of Lisp and a descendant of Scheme"のRacketの処理系であって、
今後もRnRS Schemeをサポートするけど、それは彼らにとって一番の目的じゃない。
670デフォルトの名無しさん:2011/12/31(土) 22:39:05.56
gaucheで
テキストファイルの内容をテキストとしてそのまま出力するcgiと
ダウンロードページのように、アクセスすると指定したtar.gzをダウンロードさせるcgiを作りたいのですが
どういう風にすればいいのでしょうか
671デフォルトの名無しさん:2011/12/31(土) 22:51:56.15
お前 Gauche 以前の問題だろ
672デフォルトの名無しさん:2011/12/31(土) 23:28:54.18
gaucheで
の部分を何に変えても同じことだな
673デフォルトの名無しさん:2011/12/31(土) 23:55:16.29
テキストファイルやtar.gzを読んで適切なhttpヘッダーつけて標準出力に
書き出せばいい。
674デフォルトの名無しさん:2012/01/01(日) 00:06:12.05
>>671-673
ありがとうございました
675デフォルトの名無しさん:2012/01/01(日) 14:58:10.32
iphoneのgambit cが便利。しかしソースの保存先が不明。どこから見れるんだろ
676デフォルトの名無しさん:2012/01/01(日) 15:47:38.47
>>675
アプリつくれるんだっけ?
677デフォルトの名無しさん:2012/01/01(日) 16:03:17.95
>>670
高校生の時を思い出したわ。
今の時代はこんなの中学生か小学生かな。
678デフォルトの名無しさん:2012/01/01(日) 17:05:47.37
>>676
>>675
>アプリつくれるんだっけ?
単にどこでもスキームコードが書けるだけみたい。
679デフォルトの名無しさん:2012/01/01(日) 22:00:21.15
680デフォルトの名無しさん:2012/01/06(金) 15:11:07.42
Gambitの継続をスレッドで実装する方法ってどこかに文献ないのでしょうか
681デフォルトの名無しさん:2012/01/06(金) 15:23:00.76
http://lists.racket-lang.org/users/archive/2008-June/025051.html
結局、どっちの挙動が正しい挙動なの?
682デフォルトの名無しさん:2012/01/06(金) 15:27:02.33
トップレベルの解釈って処理系がそれぞれ適当に決めてるんじゃないの
683デフォルトの名無しさん:2012/01/06(金) 16:50:27.30
処理系作ってみればわかるが
どっちもどっち
684デフォルトの名無しさん:2012/01/06(金) 17:17:36.26
http://axisofeval.blogspot.com/2011/07/some-nice-paperz.html
Some nice paperz on delimited continuations and first-class macros
685デフォルトの名無しさん:2012/01/08(日) 19:45:58.29
schelogでちょっと複雑なプログラム組むと
無限ループから帰ってこなくなるのは
自分の使い方が悪いだけなんだろうか
686デフォルトの名無しさん:2012/01/08(日) 21:34:21.86
>>685
github
687デフォルトの名無しさん:2012/01/08(日) 23:30:34.59
srfi-*とかクソわかりづらいんだけど慣れるもん?
688デフォルトの名無しさん:2012/01/08(日) 23:44:01.52
いや、メモを参照すべきだと思うぞ。
689デフォルトの名無しさん:2012/01/08(日) 23:48:31.33
RFCなんかに比べりゃかわいいもんよ
690デフォルトの名無しさん:2012/01/09(月) 01:21:07.60
>>688
なんのメモを参照しているの?
691デフォルトの名無しさん:2012/01/09(月) 06:07:02.56
srfi とslibの関係がよくわからない
692デフォルトの名無しさん:2012/01/09(月) 07:40:07.85
srfiは仕様案を出してみんなで議論して形にする。一応参考実装があるけど、
「仕様」が本体なので、仕様だけ見て独自実装している処理系も多い。
slibはSCMの作者が中心となってメンテしているライブラリの集合。仕様に
こだわるよりも実装が主体。
両者は基本的に無関係だけど、SCMの作者がslibの一部の仕様をsrfiとして
提出して承認されているものはある。
693デフォルトの名無しさん:2012/01/11(水) 06:38:20.67
racketはシェルとの融合性が悪すぎる
パイプとportつなげたいだけなのに出来ないとか
694デフォルトの名無しさん:2012/01/11(水) 14:24:29.54
(call-with-output-string
(lambda (out)
(call-with-input-string "aaaaaa"
(lambda (in)
(exec-shell-pipe "cat -" in out)
))))
みたいなことしたいのだけどRacketはできないみたい
Gaucheならできる?

695デフォルトの名無しさん:2012/01/11(水) 14:29:27.07
みたいなことはどれでも出来るんじゃね
696デフォルトの名無しさん:2012/01/11(水) 14:47:53.08
shellの標準入力とパイプ入力で扱いが違うらしく
動かないshell コマンドがある
697デフォルトの名無しさん:2012/01/11(水) 16:32:57.47
common lispとscheme(gauche)のソースを見やすくする
javascriptでできたシンタックス・ハイライトはありますか?
webでそれらのソースを見せたいので
698デフォルトの名無しさん:2012/01/11(水) 17:52:28.72
699デフォルトの名無しさん:2012/01/12(木) 08:55:25.13
>>696
なにいってんだ?
700デフォルトの名無しさん:2012/01/12(木) 15:22:37.44
>>699
Racketで694に相当するのが(process "cat")だけど
実行してみると何処がおかしいのかわかると思うよ
701デフォルトの名無しさん:2012/01/13(金) 00:48:18.63
何言ってんだか全くわからん。

$ cat foo.ss
(define-values (p stdout stdin stderr)
(subprocess #f #f #f "/bin/cat"))
(display "aaaaaa\n" stdin)
(close-output-port stdin)
(display (read-line stdout))
(display "\n")
$ racket -f foo.ss
aaaaaa

702デフォルトの名無しさん:2012/01/13(金) 03:34:47.61
>>701
ls, top, cat hoge.log | tail -n 99 | grep abとかは、どうやるの?
703デフォルトの名無しさん:2012/01/13(金) 10:48:07.24
(subprocess #f #f #f "/bin/sh" "-c" "ls | grep ab")でいいんじゃない?
704デフォルトの名無しさん:2012/01/13(金) 20:46:41.56
>>698
すみません、それはpythonでファイルを新たに生成するものではないでしょうか
705デフォルトの名無しさん:2012/01/14(土) 07:08:13.54
706デフォルトの名無しさん:2012/01/14(土) 08:15:50.26
>>704
単独で生成もできるし、jekyllみたいなものから静的なhtml作成
もできるよ。common lisp,scheme,clojure含めて対応言語が多いので、
重宝する。705にも紹介されてるよ。
707デフォルトの名無しさん:2012/01/14(土) 09:23:26.10
環境を変更せず、お手軽にJavaScriptでやりたいんじゃないのかな。
自分もブログサービスで簡単に利用できるのを探したりした。

google-code-prettify
http://code.google.com/p/google-code-prettify/

なんかは、Lisp界隈で何度か使われてるのを見たことがある。
ただ、厳密に構文解析してるわけじゃないみたいなので、
何かのタイミングでハイライトが崩れる場合もあったと記憶してる。
708デフォルトの名無しさん:2012/01/14(土) 12:53:31.40
>>705-707
ありがとうございます。
>>707のおっしゃるとおり手軽に行いたかったのです
あげてもらったものを試してみます
709デフォルトの名無しさん:2012/01/16(月) 16:31:35.37
710デフォルトの名無しさん:2012/01/16(月) 17:13:42.03
ステマスレと間違えたんですね
711デフォルトの名無しさん:2012/01/16(月) 19:28:17.79
http://d.hatena.ne.jp/r-west/20090417/1239972722
大変わかりやすいエントリーなのですが、読んで疑問を持ちました
1.lispやschemeとycombinatorはどういうところで結びつくのでしょうか
2.ところでpaul grahamが設立したy combinatorはy combinatorの意味と何らかの関係があるのですか
712デフォルトの名無しさん:2012/01/17(火) 01:39:33.32
Ycombinator懐かしいな

(define (Y F)
((lambda (s) (F (lambda x (apply (s s) x))))
(lambda (s) (F (lambda x (apply (s s) x))))))

(define length
(Y (lambda (f)
(lambda (ls)
(if (null? ls) 0 (+ 1 (f (cdr ls))))))))
713デフォルトの名無しさん:2012/01/17(火) 10:04:35.84
>>711
2についてはpaulが答えてる。 http://ycombinator.com/faq.html

Why did you choose the name "Y Combinator?"

The Y combinator is one of the coolest ideas in computer science. It's
also a metaphor for what we do. It's a program that runs programs;
we're a company that helps start companies.
714デフォルトの名無しさん:2012/01/17(火) 17:16:22.14
>>712-713
ありがとうございます。わかってすっきりしました。
715デフォルトの名無しさん:2012/01/18(水) 10:37:22.18
Lispには歴史的価値しかない
Lispからはもう新しいものは生まれない
716デフォルトの名無しさん:2012/01/18(水) 12:24:53.66
うん、過去ログを読めない人にとってはそうだな
717デフォルトの名無しさん:2012/01/18(水) 12:40:32.37
2ch監視し続けないと目に触れないようなもん
大したものじゃないな
718デフォルトの名無しさん:2012/01/18(水) 15:36:39.08
>>715
のお勧め言語は?
719デフォルトの名無しさん:2012/01/19(木) 01:07:41.25
別に新しいの生み出さないでも、
俺一人が気分良く使えればそれでいいし。
720デフォルトの名無しさん:2012/01/20(金) 02:51:38.27
schemeで
文字列 "aabb" から同じ名前の変数に何か割り当てたい
(define aabb "some")
string->symbolで変換しても無理だったのだけど何か方法ないのでしょうか
721デフォルトの名無しさん:2012/01/20(金) 06:39:10.99
適当に加工してevalかマクロ
722デフォルトの名無しさん:2012/01/20(金) 09:01:00.29
関数に値を渡す時
vectorとlistは参照渡し
それ以外は値渡し

なんかすっきりしない
723デフォルトの名無しさん:2012/01/20(金) 09:44:03.25
Schemeに参照渡しなんて無い
724デフォルトの名無しさん:2012/01/20(金) 12:58:50.56
(lambda (x) (set! x))は、xが関数の中にあるのか外にあるのか、分からない
(lambda _ (let ((x (car _))) (set! x)))は分かる
パラメータを宣言するのをやめてローカル変数を宣言すればいい
725デフォルトの名無しさん:2012/01/20(金) 13:11:18.05
誰か>>724を翻訳してくれ
726デフォルトの名無しさん:2012/01/20(金) 13:12:42.87
perl大好き
727デフォルトの名無しさん:2012/01/20(金) 13:39:15.59
RnRS にも載っているように let は lambda に変換されるマクロ
ローカル変数を作ってるのは実は lambda の方
728デフォルトの名無しさん:2012/01/20(金) 14:18:10.31
(my-let ((x 1)) x)
から
((lambda (x) x) 1)
に変換するこんなマクロ一度は作るよね
729デフォルトの名無しさん:2012/01/20(金) 14:23:54.29
参照渡しなんて無いほうがいいと思うなら
引数を評価しないで渡すマクロも無いほうがいいと思うだろうな
730デフォルトの名無しさん:2012/01/20(金) 14:56:52.91
参照渡しと参照の値渡しを混同してるやつが居るな
731デフォルトの名無しさん:2012/01/20(金) 14:58:08.78
Lispは他の言語と比べたら
全くと言っていいほど役に立ってないのに
なんでLisperはあんなに威張りくさっていて態度がでかいんだろう
732デフォルトの名無しさん:2012/01/20(金) 15:03:26.05
↑こんな風に
733デフォルトの名無しさん:2012/01/20(金) 15:03:33.38
下から目線キター
734デフォルトの名無しさん:2012/01/20(金) 15:05:07.77
たしかにバカを相手に威張ってもなんの得にもならないし
ろくなことはない。愚かな行為ではあるな
735デフォルトの名無しさん:2012/01/20(金) 15:11:48.97
>>730
その理論でマクロは説明できないの?
quoteの値渡しとか
736デフォルトの名無しさん:2012/01/20(金) 17:10:34.30
値渡しを理解してない初心者がなぜか動かないと疑問に思う例
(define (push stack objct) (set! stack (cons objct stack)))
(define (pop stack) (prog1 (car stack) (set! stack (cdr stack))))

やりたいことはこう
(define (make-stack) (list '()))
(define (push stack objct) (set-car! stack (cons objct (car stack))))
(define (pop stack) (prog1 (caar stack) (set-car! stack (cdar stack))))
737デフォルトの名無しさん:2012/01/20(金) 17:12:42.80
自分の役にたって自分だけ金が儲かれば、
世の中の役になんてたたんでええわ。
738デフォルトの名無しさん:2012/01/20(金) 17:58:32.60
>>737
おまえもぉ〜いつかは〜世の中の〜♪、傘になれよと教えてくれた〜♪
739デフォルトの名無しさん:2012/01/20(金) 18:56:03.80
>>736
thisやselfを渡すOOを理解していない初心者はそういう書き方はしない
stackを自由変数にするだろう
740デフォルトの名無しさん:2012/01/20(金) 22:56:51.52
perlのshiftやjavascriptのargumentsのように外部イテレータで書くのが正解っぽいな
引数で混乱するなら戻り値を使え
内部イテレータはオワコン
741デフォルトの名無しさん:2012/01/21(土) 00:44:30.82
最近のコンテンツ産業はプログラミング言語の機能も扱うのか
742デフォルトの名無しさん:2012/01/21(土) 00:53:55.20
LISPを勉強してよかったことは、片方向リストに強くなった
743デフォルトの名無しさん:2012/01/21(土) 00:56:46.62
コンテナ渡し
コンテンツ渡し
コンテナのコンテンツ渡し
744デフォルトの名無しさん:2012/01/21(土) 23:28:14.88
SICP taught in Python 3
http://www-inst.eecs.berkeley.edu/~cs61a/sp12/book/index.html

SICPがPythonで学べるようになって
Schemeの唯一の存在価値がなくなってしまった
745デフォルトの名無しさん:2012/01/21(土) 23:39:55.85
Python3って異様に普及していないよなあ。
746デフォルトの名無しさん:2012/01/22(日) 00:15:40.26
Gauche の HEAD が Windows でもスレッドを使えるようになったお。
747デフォルトの名無しさん:2012/01/22(日) 03:06:55.51
schemeでpaipに相当する本ってないの?
748デフォルトの名無しさん:2012/01/22(日) 12:50:39.85
vector-set! があってlist-set!がないのは何故だろう
749デフォルトの名無しさん:2012/01/22(日) 14:13:33.04
R7RSにはあるぞ list-set!
750デフォルトの名無しさん:2012/01/22(日) 14:17:06.57
R7RSは大丈夫なの
R6RSみたくならない?
751デフォルトの名無しさん:2012/01/22(日) 14:39:31.01
大丈夫問題ない
752デフォルトの名無しさん:2012/01/22(日) 14:46:33.01
R6RSとは何だったのか
753デフォルトの名無しさん:2012/01/22(日) 15:14:59.27
一部の暴走
754デフォルトの名無しさん:2012/01/22(日) 15:17:03.43
実用重視とか言ってなかったっけ?そんなにダメなん?
755デフォルトの名無しさん:2012/01/22(日) 15:33:41.72
(set! (cadr '(1 2 3 4)) 5)
756デフォルトの名無しさん:2012/01/22(日) 15:35:37.50
Vistaみたいなもんとか
757ハンバーグ餃子 ◆8X2XSCHEME :2012/01/22(日) 15:59:42.38
>>748
vector-set! を無いところから作るのは無理だけど、
list-set! を作るのは難しくないのでそれほど困ることは無いはず。
R5RS の時点では言語コアに入れるほどのものじゃないと思われたんじゃないかな。

R6RS ではペアの破壊は避けて欲しい雰囲気になってる。
set-car! や set-cdr! でさえライブラリの僻地に追い払ったくらいだから、
更に list-set! を追加しようとは思わないだろ。
758デフォルトの名無しさん:2012/01/22(日) 16:09:40.24
O(1)で済む所が全てO(N)になってしまうからな
759ハンバーグ餃子 ◆8X2XSCHEME :2012/01/22(日) 16:22:57.42
srfi-101 があるでよ。
と思ったけど、これはまだ Draft の段階だな。
760デフォルトの名無しさん:2012/01/22(日) 16:23:16.48
PythonでSICPが教えられるようになった
今となってはSchemeでSICPやるのは
時代遅れの教える側の趣味の押しつけでしかない
選択授業でやるならまだしも
必修でやるのは職権乱用だよな
761デフォルトの名無しさん:2012/01/22(日) 19:15:58.88
>>760 クリエイティブコモンズで公開されてることだし、てめぇで翻訳してからでかい口たたけよカスが。
翻訳終わるまで2ちゃんねるには書き込まなくていいからね。さもなくば死ねよ。
762デフォルトの名無しさん:2012/01/22(日) 19:17:48.99
WD先生自重してください
763デフォルトの名無しさん:2012/01/22(日) 19:18:16.48
SICPは日本語訳変だし、
どこも英語でやっているでしょ。
764デフォルトの名無しさん:2012/01/22(日) 21:08:22.16
Lisper教授は野球でいえば、
ピッチャーの球種がストレートとカーブしかなかった時代の強打者。
球種が増えた現代の野球に対応出来ないでいるのに居座っていて、
後進にも時代遅れの打ち方を強要している。
もういい加減引退して野球博物館に展示されるべき。
765デフォルトの名無しさん:2012/01/22(日) 21:22:09.90
何か最近やけに煽りに来る人多いけど、誰か何かしたん?
766デフォルトの名無しさん:2012/01/22(日) 21:23:58.73
脳を患った人がいるだけでわ
767デフォルトの名無しさん:2012/01/22(日) 21:27:08.01
強打者って褒めてるし
768デフォルトの名無しさん:2012/01/22(日) 21:28:58.36
モノスゴイ執念で一人でがんばってる仮説
769デフォルトの名無しさん:2012/01/22(日) 21:33:45.70
みんなが相手してくれるから
770デフォルトの名無しさん:2012/01/23(月) 08:12:20.18
Pythonで拡張できるエディタが普及するのはまだなの?
秀丸はLinuxに移植されないの?
>>760
「中学・高校で古典・漢文は時代遅れの教える側の趣味の押しつけでしかない」と
言っているようなもんだよなあ。
日本人が学校ネタで世代間を越えて語れるようにSchemeでSICPやるのはそういう
面でも意味がある気がするけどなあ。あとLispは文献の資産もたくさんあんだろ。
SchemeでSICPやめたのは失敗だったとあとで気づく気がする。
というか、SICPぐらい高校生のうちに読んでおけよと思うんだが。
771デフォルトの名無しさん:2012/01/23(月) 08:55:38.97
Pythonって規格もないし、後方互換を切り捨てたばかりだろ。
拡張性もschemeより低いし、数年毎に全面改訂必須になりそう。
schemeなら新技術が出てもマクロを足すだけで済む。
772デフォルトの名無しさん:2012/01/23(月) 09:02:22.95
最後の一文だけは妄想の産物だな
773デフォルトの名無しさん:2012/01/23(月) 09:03:18.87
ごめん
最後の一文てのは>>770のことな
774デフォルトの名無しさん:2012/01/23(月) 09:07:01.90
>>771
> Pythonって規格もないし、後方互換を切り捨てたばかりだろ。
> 拡張性もschemeより低いし、数年毎に全面改訂必須になりそう。
> schemeなら新技術が出てもマクロを足すだけで済む。

同意。

何よりもプログラミング言語を構成している基本概念(の中で静的なデータ型を除いて)を
Schemeほど学習者にとって認識しやすくしている言語は他にほとんどないんだよね。
Scheme以外のほとんどの言語は実用を意識し過ぎて最初からシュガーを纏った形であったり
概念の要素ごとでなく複合的な形でしか提供されていない場合が多い。

しかも言語の構文まで拡張する(それも普通の意味でのマクロよりももっと系統的な方法で)のを
可能にしているのはScheme以外には存在しない。

実用プログラムを書くだけならば他の言語でも良い(あるいは他の言語の方が便利)かも知れないが、
プログラミング言語とは何かを一度きちんと理解して、表面的には色々と異なる様々な言語に出くわしても
自在に応用が利くようなレベルまで深く修得するには、Schemeを学んでおくのは時間の無駄ではない。

プログラミング言語やプログラミングに関する優れた教科書でSchemeを採用しているのが何冊もあるのは
何故なのかか?という事をもっと真剣に考えるべきだし、それは偶然ではないんだよね。
775デフォルトの名無しさん:2012/01/23(月) 09:11:44.65
SchemeでなければCommon Lispだな。
SICPのスコープには入ってないが、LispのマクロのパワーはPythonには全く無いからな。
776デフォルトの名無しさん:2012/01/23(月) 10:26:18.36
R6RSのことも思いだしてやってください。> 規格の堅牢さ
777デフォルトの名無しさん:2012/01/23(月) 12:40:55.95
>静的なデータ型を除いて
致命的に駄目じゃん
778デフォルトの名無しさん:2012/01/23(月) 12:45:09.61
他の言語やるならSchemeなんてやらない方がいいだろ
うちの教授なんてLisp脳が酷すぎて他の言語が理解できなくなっているし
779デフォルトの名無しさん:2012/01/23(月) 12:49:32.86
>「中学・高校で古典・漢文は時代遅れの教える側の趣味の押しつけでしかない」と
>言っているようなもんだよなあ。

古典・漢文はいらんだろ。少なくても時間を減らすべき。
780デフォルトの名無しさん:2012/01/23(月) 12:52:41.60
その辺は高校では選択だったから、さわり程度しかやらなかったよ。
781デフォルトの名無しさん:2012/01/23(月) 12:52:56.67
>後方互換を切り捨てたばかりだろ。
後方互換を切り捨てたのは今までで一度だけだし、もうだいぶ前のことだ。
規格が分裂しているSchemeよりかなりましだろ。
782デフォルトの名無しさん:2012/01/23(月) 13:01:42.34
SICPはCSの教科書のふりをした
Schemeを押しつけるための教科書だろ
783デフォルトの名無しさん:2012/01/23(月) 13:29:14.37
>>782
Schemeは静的型付けを押しつけない。
また、文字列処理を押しつけないためにsymbolとconsを使う。
しかしquoteの分かりにくさは文字列を普通に使うよりも酷くなった。
784デフォルトの名無しさん:2012/01/23(月) 13:31:44.06
Schemeに代わるものがあれば使えばいいと思うよ。

構文にあれこれ気を使う必要がなく、ラムダ式や高階関数を使うことのハードルが低く、
関数型パラダイムだけでコードを書くこともできるが、データ構造の破壊的更新も
やろうと思えばできる、という言語が、あればね。

>>782 は具体的にそういう言語があるなら示してみろ。できないなら黙れ。二度と書き込むな。
785デフォルトの名無しさん:2012/01/23(月) 13:35:00.31
Pythonの話が出てるので普通言語ユーザな視点からの質問。

Schemeとかって手続きがデフォルトでポリモーフィックじゃない(オブジェクト指向じゃないから当たり前だが)のが
使いにくいと思ってるんだけど、Schemeを使ってる人達はそんなことは思ってないの?

(vector-ref vec i)より
vec.ref(i)の方が良いと思いません?vecもダブらないし。
786デフォルトの名無しさん:2012/01/23(月) 13:35:06.47
サスマン先生本人がどっかで言ってたけど、SICPの意図は、
抵抗やコンデンサ、トランジスタを集めてきてハンダ付けして実験することで
電子回路を理解するのと同じように、計算のしくみを部品から組み立てて
理解できるようにするものだったそうな。だから敢えて機能が少なく簡単に仕様が
説明できるSchemeを使ったと。最初の講義の30分で言語の説明を終えられる、
だったかな?
けれど今の工学をやるなら、バラバラのパーツを集めてくるだけじゃなくて、
ブラックボックスになっているチップやモジュールを使わざるを得ない。それと
同様に、言語でもありもののライブラリを集めて使うことが重要になってきたと。
787デフォルトの名無しさん:2012/01/23(月) 13:41:59.43
>>785
確かにそれひとつのみを考えたらそうなんだけど、そうやって、素敵機能を
ひとつ追加するごとに新しい構文を追加していったら、結果がどうなるかというと
だいたい見えている。

たいていの言語は、あれもこれも追加するなんてことはしない、という方針によって
カオスになるのを避けているわけだけど、Lisp 一族は、構文を追加しない、という
方針にしたということ。

>>786
これかな?
ttp://d.hatena.ne.jp/leque/20090326/p1
788デフォルトの名無しさん:2012/01/23(月) 13:52:14.00
最初に少し説明に長くかかっても、
言語なんてこの先ずっと使うものだから(Scheme以外は)
ちゃんとしたの選んだ方がいいよな。
789デフォルトの名無しさん:2012/01/23(月) 13:53:17.07
>>785
Lisp語族を使う人の中でもそういう記法を好む人もいるよ。度々見掛けるネタ。

ただ、vec.ref(i)って、(vector-ref vec i)の構文糖以上のものではないから、
大抵はリーダーマクロとか使って、リーダー部分をいじって変換するだけ。
言語仕様に入れるほどのものじゃないと思う。ライブラリや処理系のレイヤ。
790デフォルトの名無しさん:2012/01/23(月) 13:54:57.31
最小限ってのもあまりよくないような
みんなが好き勝手に作ってしまって
言語仕様ですらひとつにまとまらない
791デフォルトの名無しさん:2012/01/23(月) 14:05:20.17
オブジェクト指向のライブラリもけっこうあって、好きな文法が選べる。
デフォルトの文法に従うのではなく、問題領域を簡潔に表記できる言語を作ってから書く。
最小限の部品で言語を作るための言語。文法が多いと専用の言語を作る時に邪魔になる。
但し大量の俺々schemeができて互換性がなくなる問題点がある。
R7RSが解決する予定。
792デフォルトの名無しさん:2012/01/23(月) 14:05:30.04
>>785
横に長くなるのが嫌なら、手続き的に書くだけで充分に縦長になるので
その上に更にOOで幅を狭くしたいとは思わない
793デフォルトの名無しさん:2012/01/23(月) 14:07:12.71
>>788 >>790 そう思うあなたのために Common Lisp があるのに、何が不満だ?
794デフォルトの名無しさん:2012/01/23(月) 14:10:53.58
>>793
SICPの話しているんかと思ったんだけど
SICPにCommon Lisp関係ないしょ
795デフォルトの名無しさん:2012/01/23(月) 14:13:03.24
アホはひとつしか言語が使えないのか。
分野によって使用言語を使い分けるのが常識だと思うけど。
言語の文法は優劣でなくて選択で、ある点で有利な文法は他の点では劣ってるのが普通。
言語の作り方を見せるという点でscheme以上の言語はいまのところない。
796デフォルトの名無しさん:2012/01/23(月) 14:16:12.50
うちの教授はLispしか使えんぞ
797デフォルトの名無しさん:2012/01/23(月) 14:22:53.73
SICPだから言語の作り方でなくて、計算の基礎理論か。
それにSICPはschemeの教科書ではないよ。
あれはCSの教科書。schemeの理由は上にあるように、CSを教える用途に優れてたから使っただけ。
798デフォルトの名無しさん:2012/01/23(月) 14:36:25.38
今ならOcamlとかHaskell使った方がいいよね
799デフォルトの名無しさん:2012/01/23(月) 14:38:47.94
S式ならね
800デフォルトの名無しさん:2012/01/23(月) 14:49:33.45
>>787
Lispは文法の純潔さを選んでいるわけですね。

>>789
あくまで個人的な印象だけど、メッセージ送信の文法は構文糖以上だと思うな。
名前空間も絡んで来るし。

>>791
確かに選べるけど、それらが役に立つのは自分で新しくオブジェクトを書くときか
その文法が使われているライブラリを利用するときだけで、
既存のデータ型を好きな文法でシームレスに扱える訳じゃないから
あまり嬉しくなかったりする。

>>792
長さは置いておいても、意味が同じ手続きをプログラマ側で使い分けないといけないのが
面倒に感じるんだよね。
801785:2012/01/23(月) 15:03:18.43
>>789
ちょい追加。個人的な印象ってのはよくない。

vec.refからvector-refに展開するにはvecの型と対応する手続きを知ってないといけないから、
静的にはできないし構文糖とは言えないんじゃないかな。
802デフォルトの名無しさん:2012/01/23(月) 15:46:58.18
pythonのnumpyに相当するものは欲しい
行列計算や数値計算の枠組みを共通化してほしい
803デフォルトの名無しさん:2012/01/23(月) 15:49:49.77
ついでに
>>618
804デフォルトの名無しさん:2012/01/23(月) 16:08:39.28
共通化よりも変換だ
unicodeとiconvのどっちかを捨てろと言われたらunicodeを捨てる
805デフォルトの名無しさん:2012/01/23(月) 16:20:16.28
その二つを比べてどうする
806デフォルトの名無しさん:2012/01/23(月) 16:33:45.07
>>800
端折り過ぎたというか、言葉が足りなくて色々考えさせたみたいで申し訳ない。

メソッドのディスパッチとか、そういった途中経過も勿論含めての話。
オブジェクトとメソッドへの引数を伴った、単なる手続きの呼び出しと、
最終的に等価になるのは同意してもらえると思うんだけど、どうだろうか。

それで納得してもらえたら、あとは>>789の最後の部分に続く。
807デフォルトの名無しさん:2012/01/23(月) 18:38:29.18
>>802
ベクトル・行列演算ならBLAS
連立一次方程式ならLAPACK

とFotran由来の共通規格があるじゃないか
808デフォルトの名無しさん:2012/01/23(月) 19:24:22.02
>>779
> 古典・漢文はいらんだろ。少なくても時間を減らすべき。
減らさずに土曜日授業もやればいいんだよ。

生物学は物理学との選択で学べず、地学は選択すらできなかった。
大学受験予備校化や実用主義って学問をやる上で邪魔な存在だよ。

実用主義に走りたいなら義務教育が終わったらやる気や才能ある奴が働きやすいようにしたらいい。
就職予備校化している大学は専門学校って名前を変えればいいんだよ。
>>786
なんか作ろうと思ってマイコン関連のスレにずっと常駐しているけど、
ブラックボックスになっているチップやモジュールは好まれず、仕様
公開とか、色々とホワイトボックスになっていないと好まれないじゃん。
オープンなAruduinoがあるけど、どういう位置づけなの?

あと具体的にブラックボックスのモジュールってどういうの?
> 言語でもありもののライブラリを集めて使うことが重要になってきたと。
これってSchemeの得意分野じゃないの。
>>788
そりゃあ、言語選びはもの凄く大事でしょう。
習字の二度書き禁止みたいに無駄に何個も覚えるもんではないからね。

シェルスクリプトbashを覚えちゃったけど、kshを覚えたかったなあ。
809デフォルトの名無しさん:2012/01/23(月) 19:30:53.37
MSが作ったから馬鹿にしてたけど
PowerShellが以外とよかった
810デフォルトの名無しさん:2012/01/23(月) 21:12:30.80
>>808
ブラックボックスって言い方が悪かったか。仕様は公開されてるけど、使う時に
チップの中の電位分布の変化を意識したりしないでしょ。ディスクリートで
組む時のような意味では。インタフェースと定格と限界さえ理解してれば、
中身はブラックボックスとして扱っても良いってこと。

SICPの文脈だと、具体的には、MITでは電気電子情報の学生は初年度に
ロボットを作らせることになったのね。そのくらいの複雑度になると、
全てを把握するってのは無理で、出来合いのユニットのインタフェースを
理解して目的に合わせて使いこなしてゆくってことが重要になってくるって話。

> これってSchemeの得意分野じゃないの。

PythonのライブラリとSchemeのライブラリの量を比べてみれ。
Schemeが教育上の効率(言語の説明が省ける)で選ばれたのと同様、
Pythonが教育上の効率(使えるライブラリが既にたくさんある)で選ばれるわけさ。

この現実に不満があるなら、Schemeのライブラリを同じくらい充実させるしかないねえ。
811デフォルトの名無しさん:2012/01/23(月) 21:30:04.88
SICPをSchemeで教えるかPythonで教えるかって話をしてるところに、
SICPを教えるかライブラリ利用云々を教えるかっていう、関係ありそうで全然別の話を持ち込んでる人が居ますね
812デフォルトの名無しさん:2012/01/23(月) 21:36:19.80
何ヶ月も学習するわけだから
最初にやるSchemeとPythonの言語の大きさの差なんて誤差のうち
むしろ一般人には規模が大きくてもPythonの方が楽に学べそうだ
813デフォルトの名無しさん:2012/01/23(月) 22:43:40.59
全員が高校卒業までに体系的にSchemeを学ぶ必要はないけど、独学でやり込んで来てくれと
いう話じゃないの。
Pythonを一から教えるなら一年かかると思うし、半年で教えるなら色々と前提条件がつくんじゃないの。

MITのロボットの話だって事前に設計図を読めて書けて安価なマイコン・コンデンサ・モジュールを
組んだりとか、してきてねってことじゃないの。やっていないと物凄い苦労するよって。
人権無視で長時間拘束して大学で4年間教えていいなら教えられるけど、人権ありで4年間だと何も
教えられないんじゃないの。
>>812
なんで楽なのにPython3って普及しないの?
Python3.1になったらみんな使い始めるって計画じゃなかった?
今、 Stable release 3.2.2 / September 4, 2011; 4 months ago (2011-09-04)だよ

Pythonに思い入れがなく、ただ覚えやすいという宣伝文句にひっかかって使い出したに過ぎ
ないんじゃないのか。教祖のGuidoが3使えって言っているんだら3使えよ。
教祖に背くと地獄に行くぞ。
814デフォルトの名無しさん:2012/01/23(月) 23:11:51.34
まだやってんのか
815デフォルトの名無しさん:2012/01/23(月) 23:13:15.55
>811
>787 あたりみるとSICP書いて教えてる本人がいってるんじゃね?
816デフォルトの名無しさん:2012/01/23(月) 23:22:31.56
MITはライブラリがないからScheme使うのやめたってことなのか
817デフォルトの名無しさん:2012/01/23(月) 23:41:14.71
sussmanさんの話だとSICPをやめたのは時代遅れだからで
Schemeをやめたのはライブラリがなかったからか
818デフォルトの名無しさん:2012/01/24(火) 00:25:52.86
古い言語は捨てられ新しい言語が次々と作られる
一方、ライブラリは足りないから古いライブラリは生きのこる
819デフォルトの名無しさん:2012/01/24(火) 00:51:48.31
>>818
> 古い言語は捨てられ新しい言語が次々と作られる

かくして世の中は思い付きで作られたポッと出の出来損ない言語とバグだらけの処理系だらけになる。
820デフォルトの名無しさん:2012/01/24(火) 01:05:05.25
出来そこないの処理系の多さではSchemeがダントツでしょうな
821デフォルトの名無しさん:2012/01/24(火) 01:42:18.24
sussmanって人SICPの著者?
822デフォルトの名無しさん:2012/01/24(火) 02:04:31.01
>>818
でもLispにはライブラリがないから、捨てられるね
だれか、QtをSchemeにバインディングしてくれないかな
823デフォルトの名無しさん:2012/01/24(火) 04:25:26.26
Qt程度ならSchemeで実装すりゃいいじゃん
824デフォルトの名無しさん:2012/01/24(火) 06:55:28.14
>>820 はぁ?
そもそも仕様ができそこない、というゴミ言語が山ほどある時点で、
Schemeがダントツとかありえません。おまえの脳みそが出来損ないw
825デフォルトの名無しさん:2012/01/24(火) 07:00:03.59
Schemeのマクロだけを詳しく噛み砕いて解説した本出した
ら売れるよ
826デフォルトの名無しさん:2012/01/24(火) 07:32:29.79
ライブラリの具体例がUIというのはすごいな
全然具体的じゃないがいかにもありそうな話だな
827デフォルトの名無しさん:2012/01/24(火) 09:15:33.73
問題の切り分けができない負けず嫌いが教育を語る
828デフォルトの名無しさん:2012/01/24(火) 09:17:43.99
>>827
救世主現る!
解決お願いします。
829デフォルトの名無しさん:2012/01/24(火) 09:45:11.42
>>824
仕様ができそこないがどんな意味で言ってるのかわからんが
とりあえず実装数の多さじゃSchemeはダントツだな次点はJavascriptか

830デフォルトの名無しさん:2012/01/24(火) 10:33:03.39
みんなで処理系ばかり作っても意味ないだろ
ライブラリ作れっての
831デフォルトの名無しさん:2012/01/24(火) 11:02:53.14
処理系向けのテクニックが開発されていく言語というのがある。
そういう分野では処理系たくさん作られることが重要。
832デフォルトの名無しさん:2012/01/24(火) 11:18:26.33
最近の処理系向けのテクニックってどんなんがある?
833デフォルトの名無しさん:2012/01/24(火) 14:00:49.69
少なくともRacketはライブラリ充実してるぞ

Chikenは既存のC++ライブラリをくっつけやすいから
違う意味で充実している
834デフォルトの名無しさん:2012/01/24(火) 15:45:56.76
racketは名前が駄目だわ
835デフォルトの名無しさん:2012/01/24(火) 15:52:31.82
「ライブラリが充実」で想定しているレベルに齟齬があるような気がする。

本業がプログラマでなく別の専門を持っている人たちが書いたようなもの、
生物屋さんがゲノムデータベースを簡単に検索して実験データと付き合わせるために
作りましたとか、経済学の人たちがセンサスの情報を統計処理しますとか、
言語学で文献のデジタル化をやっててその解析に使える便利ライブラリですよとか、
そのへんの層の厚さなんだよね。決め手になるのは。Schemeにそれが無いとは
言わないけれど。その分野の専門でない人間が聞き齧り、読み齧りで書いた
ライブラリって、専門の現場のフローに合ってなくて使えないこともままあるし。
現場の人が現場の事情に合わせて書いて、それが蓄積されてるってのはでかいよ。

CS教育の話をしてるんだから関係ないと思うかもしれないが、研究にせよ開発にせよ、
今は別の分野の専門家とコラボしてソフトウェア工学を使ってその分野の問題を解決
する重要性が大きいし、今後もそっちが大きくなる一方だから。
836デフォルトの名無しさん:2012/01/24(火) 15:57:02.23
日本の大学では
インタプリタの作り方教えて
リスパーの数を増やすことがCSだから
837デフォルトの名無しさん:2012/01/24(火) 16:17:03.97
そういえば俺の大学には記号処理という名のcommonlispの授業があったな
838デフォルトの名無しさん:2012/01/24(火) 16:20:06.29
つか別にインタプリタの作り方をやらなくて良くなったってわけじゃなくて、
メタサーキュラーインタプリタくらいは基礎教養としてスタート前にやっといてくれ、って
くらいの話だと思う。

おいらは自分で何か書くならLispだし、Lisperが増えて欲しいとも思っているが、
だからこそ「それLispにもあるよ」ってタカをくくってる意見には賛同できない。
839デフォルトの名無しさん:2012/01/24(火) 16:21:37.24
MITの学生は入学前にメタサーキュラーインタプリタ知っていると?
840デフォルトの名無しさん:2012/01/24(火) 16:31:59.82
知ってる学生もいるだろうし、知らなかったら1ヶ月で詰め込める。
http://web.mit.edu/alexmv/6.S184/

てか大学の実験や実習なんて教わってないことだらけで、そんなのは自習するのが前提でしょ。
俺は日本の大学だったけど。

「スタート前にやっといてくれ」はちょっと変か。「講義でやらないけど知らなかったら自分で
やっといてね」くらい。
841デフォルトの名無しさん:2012/01/24(火) 17:16:07.16
chez schemeの開発者の一人が書いた本(mit press)らしいけど、
読んだ人がいるなら感想を聞きたい

The Scheme Programming Language, 4th Edition http://www.scheme.com/tspl4/
842デフォルトの名無しさん:2012/01/24(火) 17:59:11.32
>>835
その辺の層の厚さが一番あるのはRとperl
pythonは正直いまひとつ 劣化matlab
843はちみつ餃子 ◆8X2XSCHEME :2012/01/24(火) 18:59:38.06
>>841
日本語版 (3rd だが) なら読んだことがある。
SICP や Little Schemer と違って、 Scheme の言語機能の解説が多くを占める。
C++ にとっての `The C++ Programming Language' みたいなもの。

4th では R6RS を前提とした内容に大幅に改定されているはず。
844デフォルトの名無しさん:2012/01/24(火) 19:05:02.20
>>835
非本業プログラマはCL一択でいいと思うんだけどね。gccに匹敵する速さだし、
REPLでelispとも親和性が高い。
>>842
PerlってRみたいに統計関連のツールって豊富なの?
Perlでやると遅くてメモリ食うわで最悪な選択な気がするんだけど。
845デフォルトの名無しさん:2012/01/24(火) 19:37:11.83
>R6RSを前提
えーー
846デフォルトの名無しさん:2012/01/24(火) 19:38:49.24
R6RSってR5RSと比べて全体的にどんな感じで変化した(させた)んでしょうか?
847デフォルトの名無しさん:2012/01/24(火) 19:40:16.84
CLは美しくない
848SCHEME餃子 ◆8X2XSCHEME :2012/01/24(火) 20:17:45.36
>>846
色々あるけど、モジュール化をどうするかが一番大きな議題だったように思う。
結果的にライブラリという概念を導入した。

# それさえ出来れば後々の規格改定で機能を追加することになっても、
# ライブラリを分けて共存を図ることもできるという思惑もあったみたいなのに
# R7RS では仕組を変えようとしてるので、おまいらもちつけと言いたい。
# しかも新しい提案も R6RS と劇的な差があるわけでもないし。

それとマクロシステムが拡張されて非健全なマクロ等も書けるようになった。
マクロで問題になる、マクロ展開時にどの環境を使うかという点はフェイズの概念を導入することで解決した。
フェイズはライブラリ単位で決まるので、上述のモジュール化の仕組みとも密接に関連している。

レコードや文字列ポートなど、多くのケースで便利な機能がちょろっと追加された。
R5RS までは小さい言語コアだけ決めて残りは SRFI や各処理系の裁量にお任せという感じだったのが、
ここへ来て方向性が変わった感じがする。

細かいことは↓を参照
http://practical-scheme.net/wiliki/wiliki.cgi?R6RS%3a%E5%A4%89%E6%9B%B4%E7%82%B9
849デフォルトの名無しさん:2012/01/24(火) 21:13:32.52
CL、Scheme(R5RS)、Scheme(R6RS)、Clojure
利用者の割合はどんなんだろ
850デフォルトの名無しさん:2012/01/24(火) 21:14:06.24
>>841
3版と4版を読んだけど、無難な言語解説書。
深い事は書いてないから、なんたらハンドブック系の価値。
3版なら無料で読める。
http://www.scheme.com/tspl3/

>>842
Fortranも忘れてはいかん。科学屋さんが大量に書いてる。
基本的に専門分野ではRやFortranみたいな特化された言語が使われてる気がする。
851デフォルトの名無しさん:2012/01/24(火) 21:24:53.98
???
4版も無料で読めるような気がするけど
気のせい?
852デフォルトの名無しさん:2012/01/24(火) 21:26:23.93
あとでFBIの職員が集金に来ます
853デフォルトの名無しさん:2012/01/24(火) 21:31:12.71
>>851
ごめん、3版しか使ってないから忘れてた。
本文読めるのなら質問しないで良いじゃないか・・・。
854デフォルトの名無しさん:2012/01/24(火) 22:43:30.92
>>847
チンコはデカい方がいいだろ。
emacs子と親和性高いのは重要だよ。
855デフォルトの名無しさん:2012/01/25(水) 02:13:28.44
>>835
> CS教育の話をしてるんだから関係ないと思うかもしれないが、研究にせよ開発にせよ、
> 今は別の分野の専門家とコラボしてソフトウェア工学を使ってその分野の問題を解決
> する重要性が大きいし、

応用プログラムを書くのとCSを専門として学ぶというのとは目的が全く違う。
数学で確率論やルベーグ積分を学ぶのと保険のアクチュアリーになるのが全く違うように。
今のCSは応用に向いた教育ばかりになってしまっていてCSを専門に学んだはずの人が
趣味や独学でプログラミングに上達した人と大して質的な差がなくなっている。

応用としてのプログラミングなんてものは、パソコン1台あれば専門教育なんて受けなくても勉強して身に着けようと思えば着けられるんだよ。
だって、プログラムを書くだけならば必要な知識はカタログ的な平板で雑多かつ多量の知識(ライブラリとかAPIとかね)なんだから。

そうすると、CSの教育を専門的に受けたというアドバンテージをどこに求めるのか、と言えば
体系的な知識、例えば雑多な様々なプログラミング言語を構成している基本概念やそれらの間の関係をきちんと理解しているとか、
それに基づいた様々な技術(プログラム解析とかね)を体系的に身に着けているといった点に求める事になる。

プログラミングに限らず他の分野でもカタログ的な知識は下手をすると素人マニアの方がプロよりも上だったりするわけだ。
例えば鉄道ヲタクの連中は、△△電鉄の3000型のブレーキは初期型は××製だったが後期型車両からは○○製になり
その結果として制動能力がどれだけ上がって云々なんてのを知っていたりする。下手をすると当の△△電鉄の関係者や
その3000型車両を設計・製造した車両メーカーの技術者よりも型番なんかに関しては詳しかったりする。
だけど、そんな知識を持っていても、その鉄ヲタは電鉄会社の整備主任も車両メーカーの設計技師も務まらない。
何故ならば、彼らに必要な知識は体系的なもの、つまり(科学や)工学だからだ。

今のCS教育は同じカタログ知識の教育に偏重していると思う。これでは素人プログラマと変わらない人材しか育てられない。
Schemeの長所は言語概念を体系的に教えるのに非常に適した言語だという事。だからCS教育に向いているんだ。
856デフォルトの名無しさん:2012/01/25(水) 02:21:31.15
>Schemeの長所は言語概念を体系的に教えるのに非常に適した言語だという事。

これLisperの主観でしょ
857デフォルトの名無しさん:2012/01/25(水) 02:29:06.45
今の時代に大学でしか学べないCSって何があるの?
むしろ大学に行くと教える側の専門に縛られたりするんじゃね?
858デフォルトの名無しさん:2012/01/25(水) 02:31:27.55
その大学で扱っている専門を知った上で入るならいいんだけど、
大抵の受験生は自分が受かりそうな中で偏差値が高いとか、
家から近いとかで大学選んでそうだし。
859デフォルトの名無しさん:2012/01/25(水) 02:50:16.59
>>856
どういうことなんだろうな、Schemeだけで言語概念が云々ってのは。
lispが全てS式だからとか、再帰処理が構文解析器とかにマッチするとか、そんなん?
プログラミング言語論の授業では特定の言語に拘らず色んなパラダイムを紹介されたけどねえ
それと実装は別だな。特別に指定されない提出物なら全部pythonで書いてる
楽だから。何より楽だから。
matplotlibも便利でエクセルなんか使わずに結果をプロット出来るし
まあ他の言語もgnuplotとか使えるだろうけどmatplotlibのが楽
860デフォルトの名無しさん:2012/01/25(水) 03:47:33.62
は?抽象構文木を直接扱って、いかなるパラダイムでも実現できるのは、現状Lispしかないだろ。
楽なのが良いならPerlを使うべきだろうな。ライブラリがダントツで、人為的な強制もない。
一つの言語で全て出来るという幻想を持ってるようだけど、長く続けてると言語処理系やOS等の下位層を直接弄る事態になるから。
複数の言語が出来て当然だから。年に一つは新しいプログラミング言語を憶えるべき(特にパラダイムが全く異なる言語を)だから。構文抽象というパラダイムはLispにしかないから。
861デフォルトの名無しさん:2012/01/25(水) 04:00:32.63
誰が、一つで全てなんて幻想を持ってるって???まったく、LisperとPerlerがそうなだろうなあ
最も一つに拘ってるのがLisperだからな、初めから矛盾してる
指定されなければpythonつってるのに、それすらも読めないのかよ
Cを指定されることが多いわ。こだわりが無いからpythonなんだよ
お前みたいな頭がダイヤモンドより固い奴が、完全に思考停止して
毎年プログラミング言語を意味もなく覚えたり、意味もなく弄って何かやってるつもりになってると思うと頭がいたくなるわ
プログラミング言語はツールだろ。いや、お前にとってはオナニーの道具なのかもしれないけどさ
必要に応じて使い分けてるだけなんで、ただやることもなくプログラミング言語の中をウロウロしてる浮浪者に何か言われる筋合いはないです
862デフォルトの名無しさん:2012/01/25(水) 04:14:03.09
長文はやめて3行以内に分けてレスしよう
まるで人が多いかのようにみえるよ!
863デフォルトの名無しさん:2012/01/25(水) 04:15:19.05
議論なら良いけど、喧嘩なら他所でやってくれないかな。
自分の常駐してるスレでそういうのやられたら嫌でしょ?
864デフォルトの名無しさん:2012/01/25(水) 04:44:02.56
Lisperが持ってる「見下し」というスペシャルスキルによって、Lispの実のない権威は支えられている
全てのパラダイムが実現できても、実際のプロジェクトにはほぼ使われない
Lisp万能論車の妄想に付き合うのは面倒だが。少なくとも一般人は自由を強いられたいとは思ってないよ
プログラミング作法があるのならそれに合わせたいの。趣味的な誤差でもね。特に見やすさは強制でなくても重視している、残念ながら。
865デフォルトの名無しさん:2012/01/25(水) 04:50:45.36
必要に応じて使い分けるなら、構文を知るためにはLispが便利なのも分かるだろ。
一年に一つの言語は「達人プログラマ」だよ。もちろん読んでるよな。

最初から議論じゃなくて喧嘩だろ。未踏に落ちたか知らないけど、変なLispアンチ野郎との。
866デフォルトの名無しさん:2012/01/25(水) 05:00:04.25
作法でなくて人為的に一部の操作をやり辛くしているのが問題だと言ってるんだよ。
書きたい事の足を言語が引っぱるの、しかも実装の必要でもない作者の主義とやらで。
Windozeと同じく一般人がやりたい事はやり易いけど、深い事をやろうとすると足を引っぱろうとする。
実際のプロジェクトに使いたいならscheme以外の言語をどうぞ。CLとかどうでしょうか。あるいは自分が頑張ってschemeのライブラリを書いて下さい。R7RSの議論に参加するのも良いのではないでしょうか。
但しLispのみが構文抽象を扱える重要な言語であるという事実は変わりません。
867デフォルトの名無しさん:2012/01/25(水) 05:00:36.66
もちろん最初から今現在に至るまでずっと両方を邪魔に思ってる。
言わせんな恥ずかしい。
868デフォルトの名無しさん:2012/01/25(水) 05:04:32.64
いや無批判に引用すんなよ。一年に一つの言語なんて馬鹿の極み
それくらいも分からないの?本を読んでも意味をなしてないね

だからさあ、構文を知るためにとか大袈裟なんだよね。噴飯物だよ。それも何かの本の引用なの?
Schemeは書けるけど、別に構文を知るためにSchemeを勉強したわけでもなければ
Lispを見たことなくても構文の勉強は出来るし。そうしてる大学も多いだろ
869デフォルトの名無しさん:2012/01/25(水) 05:06:07.82
邪魔らしいので私は消滅、さらばだ。
870デフォルトの名無しさん:2012/01/25(水) 05:09:23.51
>>866
Lisp至上主義の成れの果てだな、視野が極端に狭い
871デフォルトの名無しさん:2012/01/25(水) 05:11:24.33
構文を知るためだけの言語
872デフォルトの名無しさん:2012/01/25(水) 07:24:03.06
むしろ構文が1種類しかない言語なんだが
873デフォルトの名無しさん:2012/01/25(水) 07:47:19.29
Lispは重要な言語じゃないだろw
874デフォルトの名無しさん:2012/01/25(水) 08:21:19.67
わかった。
見下されたい奴は並べ↓
875デフォルトの名無しさん:2012/01/25(水) 08:39:08.59
同じ括弧に見えるけど構文は1個じゃないんだよ
876デフォルトの名無しさん:2012/01/25(水) 08:43:17.70
先頭にあるシンボルを解決した結果が関数かマクロかによって、S式(リスト構造)の
解釈(インタプリテーション)が変わるだけであって、S式を表現するための構文は唯一だ。

あとはアトムのリテラルの記法がいくつかあるだけで。
877デフォルトの名無しさん:2012/01/25(水) 09:05:18.84
言語の話をしてるんじゃないの?
ご自分で言語なんだがーつってるのにw
878855:2012/01/25(水) 11:36:40.67
>>856
> Schemeの長所は言語概念を体系的に教えるのに非常に適した言語だという事。
>
> これLisperの主観でしょ

違います。
ついでに言えばSchemeと他の大多数のLispとは上の一点に於いて全く違います。
ほとんどのLisp(典型はCommon Lisp)は基本的な言語概念が見えにくくなっています。
実用を重んじて言語設計された結果として、あまりにも余分なものや複合的なものが多いので。
(抽象構文木を直接的に表現できるデータ構造を基本データとして持っているという点はもちろんLisp族すべてに共通ですが)

SchemeはGuy Steeleの若き頃のMITレポートの数々を見ても分かるとおり、それまでの言語概念を突きつめて考察した結果から
可能な限り単純な要素概念だけを言語としては提供して、プログラムを書く側はそれらを自在に組み合わせられるようにする
という言語設計哲学に基づいて言語仕様が作られました。その点では他のLisp族言語よりもAlgol 60やAlgol 68の精神を引き継いだ言語です。
(Revised^6で台無しにされてしまいましたが)

Schemeの開発者たちがAlgol 60のシンプルで例外の少ない言語という精神を引き継ごうとしている事は、Schemeの言語仕様の
タイトルにも表されています。

RubyにせよPythonにせよ、もっと他の言語にせよ、実用で広く使われるのを狙って作られた言語は、Scheme以外の他のLisp系言語と同じく
言語概念が基本要素でなく複合的であったり様々なシュガーで最初から修飾された形でプログラマに提供されているケースが多く、
基本要素概念を単独で用いたいと思うと逆に回りくどい書き方をせねばならないようなケースがしばしばあります。
そこがSchemeとは決定的に違うのです。

Schemeは、少なくともRevised^5までは実用よりも言語の基本要素概念を学び理解する為の言語として言語仕様が策定されて来ました。
だからこそ、実用的な構文は最初からは入れずに体系的な構文拡張の方法を導入して、「シュガーが欲しければ自分で好みの言語に仕上げなさい」
というスタイルで実用側からの言語仕様拡大の圧力に対応して来たのです。

856のような人はSchemeをきちんと勉強した事がなく言語の基本要素概念とは何かを真剣に自分で考えようとした事がないのでしょう。

879デフォルトの名無しさん:2012/01/25(水) 12:44:40.41
>>844
CLでgccなみに高速プログラム作るめんどくささは
cで最初から作った方がましな感じ
880デフォルトの名無しさん:2012/01/25(水) 12:48:28.76
SchemeがLex/Yaccでどんな言語にも変換可能なら
あらゆるアルゴリズムをSchemeで書く有用性もあるのだけどねえ
881デフォルトの名無しさん:2012/01/25(水) 12:50:54.29
>実用側からの言語仕様拡大の圧力に対応して来たのです。

対応できてないから廃れてんだよ

>言語の基本要素概念とは何か

その基本概念も絶対的なものじゃないでしょ
882デフォルトの名無しさん:2012/01/25(水) 13:17:10.43
>>881
最後の行は内容ある反論できずに相対主義持ち出して議論から逃げた典型だなw
883デフォルトの名無しさん:2012/01/25(水) 13:45:30.40
Schemeが廃れた原因って10年ちょい前からのプログラミング言語論とかプログラミング論教育の軽視だろ
ACMのカリキュラムでもその手の科目が消えるとかインディアナのFelleisenとか騒いでたし
ACMのカリキュラムも881みたいな
知ったかプログラマに合わせたってことだろ

881も自分に内容あるって言いたきゃ
Schemeとは全然ちがうけど
同じように見かけもフォーマルなセマンティクスも単純な
コンセプトや構文だけで構成されてる
実用言語の具体例あげろよ
878の主張は実用言語は実用めざすから否応なしに複雑になっちまうってことだろ
884デフォルトの名無しさん:2012/01/25(水) 17:35:29.21
言語の基本要素概念とはなんなのか?
まずは855以外の人に聞きたいな
885デフォルトの名無しさん:2012/01/25(水) 17:42:51.26
>>884
おおざっぱだけど言語仕様と言語の基本要素概念は同じものっていう定義でいいだろ。
886デフォルトの名無しさん:2012/01/25(水) 17:50:17.74
>>885

>言語概念が基本要素でなく複合的であったり様々なシュガーで最初から修飾された形でプログラマに提供されているケースが多く、
>基本要素概念を単独で用いたいと思うと逆に回りくどい書き方をせねばならないようなケースがしばしばあります。

855の人の意見だと違うものだと取れるけど
887デフォルトの名無しさん:2012/01/25(水) 18:18:04.18
コレはアレから導出できる、みたいなのを突き詰めていった時に
最後に残る要素はなんだろうみたいな話では。
888デフォルトの名無しさん:2012/01/25(水) 18:31:03.57
最後に残る要素は何?
889デフォルトの名無しさん:2012/01/25(水) 18:37:32.86
Lispの簡易実装を読んだらJavaScriptの動作が腑に落ちた。
てかJavaScriptじゃなくてLispにしてくれたらよかったのになあ。

つかHTMLがS式だったらよかったのになあ(笑
890デフォルトの名無しさん:2012/01/25(水) 18:38:41.00
>>888
愛だろ、愛
891デフォルトの名無しさん:2012/01/25(水) 18:40:58.82
>>889
世の中の人が欲しているのは
DartとかCoffeeScriptでLispではない
892デフォルトの名無しさん:2012/01/25(水) 18:48:34.55
(define (f) 3)

int f(void) { return 3; }
は意味論的には同じだけど、
(define (f) 3) => (define f (lambda (x) 3))
で、これはSchemeがCにない無名関数という基本概念要素を持っている。
とか
(define (f x) x)
をCでやることはできない
これはSchemeがCにない動的型付けという基本概念要素(?)を持っているから、とか?

言語仕様のなかでユーザーが利用できる概念のうちsyntax sugarでないもの?
で、Schemeの基本概念要素は標準的なな言語が持ちうる概念を網羅している、という主張?
ちゃんと考えると(怪しい)論文ができあがりそう。
893デフォルトの名無しさん:2012/01/25(水) 18:51:23.81
仕様が50ページだから基本要素概念とはなんなのかって突き止められるし、実感できるけど。
www.unixuser.org/~euske/doc/r5rs-ja/r5rs-ja.pdf

仕様が500ページあると精読するだけで何日もかかるし、実感するには何ヶ月もかかるし、
全部突き止められるのか、怪しい。実装をみるとなると500ページに相当するコードも
読むハメになって、ゲロ吐きたくなる。そして言語の再実装をする奴ほとんどいないだろ。
894デフォルトの名無しさん:2012/01/25(水) 18:55:05.65
実用言語を題材にしても全部の仕様を扱うわけじゃないでしょ
Ocamlのサブセットのmini-Ocamlはたった2000行だっていうし
895デフォルトの名無しさん:2012/01/25(水) 19:03:26.90
処理系実装時のコード量の話なんてしてないのに
896デフォルトの名無しさん:2012/01/25(水) 19:05:51.84
>>895
>実装をみるとなると500ページに相当するコードも
>読むハメになって、ゲロ吐きたくなる。
897デフォルトの名無しさん:2012/01/25(水) 19:14:50.51
>>894
7行スレに3行でLispっぽいものがあがってたけどw
898デフォルトの名無しさん:2012/01/25(水) 19:22:16.92
そんなこと言ったらLispでそのままeval1行じゃん
Camlのサブセットも似たような事をしてる
そういうズルを見て言語を理解したと言えるのかよ
899デフォルトの名無しさん:2012/01/25(水) 19:37:27.53
ルールが一個というのは馬鹿らしいが、ちなみにLispのBNF記法
http://cui.unige.ch/db-research/Enseignement/analyseinfo/LISP/BNFindex.html

なるほど確かに小さい
このサイトにあるJavaや、Python公式ドキュメントに置いてあるものと比べるまででもなく
根本的に少機能なんだよね。これで全ての機能を実現出来ると反論すかも知れないが
そんなの他の言語でも言えること。結局これが実装は出来ても実用は出来ない理由
そもそもプログラミングする上で(Lispでも)仕様を全部読む必要なんていない。ゲロ吐きたくなる
900デフォルトの名無しさん:2012/01/25(水) 19:42:54.49
BNF記法がなくてコードが仕様の言語とかあったな
901デフォルトの名無しさん:2012/01/25(水) 19:43:27.91
Schemeはlambdaが多機能・高機能すぎて細かい所でネックになる印象
902デフォルトの名無しさん:2012/01/25(水) 19:44:16.12
>>893
その50ページは言い換えれば客寄せパンダ
Scheme特有の概念を普通に説明したら数倍の分量にはなるだろうし
平易な言葉で書き直せば500ページ超えも夢じゃない
903デフォルトの名無しさん:2012/01/25(水) 19:49:07.44
BNF見ても言語は理解できない
C++の例外だけで本になるように
継続だけで本になる
マクロだけで本になる
末尾再帰だけで本になる
904デフォルトの名無しさん:2012/01/25(水) 19:49:11.93
>>900 parse.y を読んだこともない馬鹿です、って自白しなくていいのにw
905デフォルトの名無しさん:2012/01/25(水) 20:02:55.57
parse.yで対応できるのは簡単な文法だけ
いまの流行りは手書きだろ
906デフォルトの名無しさん:2012/01/25(水) 20:05:17.97
LISPはパースとかそういう「どうでもいい部分」をほぼ省略できるのが魅力なんだよ
907デフォルトの名無しさん:2012/01/25(水) 20:08:10.24
>>906
言語を使う側からしたら関係ない話だな
908デフォルトの名無しさん:2012/01/25(水) 20:15:05.09
それが言語の仕様読み解くのに関係してるって話だろ
ちょっと前ぐらい読め
909デフォルトの名無しさん:2012/01/25(水) 20:31:40.03
schelogでパースしようとしたら無限ループから返ってこなかった
仕方ないのであきらめた
910デフォルトの名無しさん:2012/01/25(水) 20:35:14.97
>>899
> そもそもプログラミングする上で(Lispでも)仕様を全部読む必要なんていない。ゲロ吐きたくなる
仕様を全部読む必要ないと言うけど、一つの言語を体系的に深く理解して、言語
とはどんなものなのかとか、どういうのが作れるのかとか、ある程度の言語のイ
メージを捉えているから新しい言語でも判断できる話でしょ。

チュートリアルに沿って学習したり、雑務をこなすためにちょっとした雑多な処
理を書いて言語を理解するアプローチも大切だけど、概念を理解してトップダウ
ンで組むのも言語の理解が進む。
>>902
それだと500ページの仕様の言語が5,000ページという話になるじゃん。
pg御大が数学の論文を読むのには時間がかかる。それは一個一個が表現力が豊か
という話で数式とはそういうものだ。
911デフォルトの名無しさん:2012/01/25(水) 20:45:40.04
BNFで読み解ける言語仕様って構文レベルでそ。
>>899のBNFみて分かることって、
LISPって括弧がいっぱいあって入れ子になってるんだなーぐらいじゃん。
912デフォルトの名無しさん:2012/01/25(水) 20:59:30.75
LISPの失敗
・S式をXMLみたいに標準化しなかった(分派ごとに微妙にバラバラ、慢心、環境の違い)
・種類が多い割に今風の静的型とか型推論とか型方面が思考停止状態
その他の欠陥
・括弧がいっぱいあって人を寄せ付けない(見た目が怖い)
・readが成功するまで言語として構文解析できない
913デフォルトの名無しさん:2012/01/25(水) 21:16:56.42
>>912
> ・S式をXMLみたいに標準化しなかった(分派ごとに微妙にバラバラ、慢心、環境の違い)
XMLが絶対善みたいな言い方だな。
> ・括弧がいっぱいあって人を寄せ付けない(見た目が怖い)
htmlのタグ<>が人を寄せ付けないという話は聞いたことないけどなあ。
食わず嫌いな怠惰人間の屁理屈にしか聞こえない。
914デフォルトの名無しさん:2012/01/25(水) 21:21:09.05
<html <head <body <p blah >>>>> とかだったら怖いよ…
915デフォルトの名無しさん:2012/01/25(水) 21:25:10.34
・使われないことをユーザのせいにする
916デフォルトの名無しさん:2012/01/25(水) 21:26:45.54
htmlはネストしてはいるけど、あまり深刻ではないんだよな
冗長な終了タグがあるからだけど
何が終わったかが判るから、閉じ括弧の連続よりは心理的ダメージがが少ない
917デフォルトの名無しさん:2012/01/25(水) 21:28:56.94
角括弧[]のお陰で心理的ダメージ軽減したんじゃなかったんですか!?
918デフォルトの名無しさん:2012/01/25(水) 21:32:36.51
ちょっとつけたし
そこにある名前を見るだけで何が終わったかが判るから、
閉じ括弧の連続よりは心理的ダメージが少ない
名前を利用してエラー検出もできる

S式だと閉じ括弧から開き括弧の横の名前へという目線移動が発生する

919デフォルトの名無しさん:2012/01/25(水) 21:36:03.55
冗長なのは括弧を数えるのにエディタ使えと言うのと同じだから
手書き派以外には受け入れられる
属性ズラズラ並べられるのは嫌いだけど
920デフォルトの名無しさん:2012/01/25(水) 21:56:05.25
>>914
> <html <head <body <p blah >>>>> とかだったら怖いよ…
(html (head (body (p blah ))))
こうすると普通だけどなあ。

vim, emacsだったら(html (head (body (p blah ))))の方が扱いやすいし、冗長な終了タグが
問題なんじゃないの。冗長な終了タグが必要な時ってある? インデントもあるんだし。
921デフォルトの名無しさん:2012/01/25(水) 21:58:31.13
Cの中括弧は複文インデントの文化とネストが比較的緩いから
}}}}}}}}}}こんな連続で閉じて数える事は少ない
つまりLISPは括弧でずいぶん損をしてるという話
922デフォルトの名無しさん:2012/01/25(水) 22:05:08.79
>>920
なんか別スレで迷惑かけてる人と同じ匂いがした
923デフォルトの名無しさん:2012/01/25(水) 22:07:27.06
連続括弧 ))))) とかは、DrRacketみたいなLISP対応エディタ使わないとキツいよね。
924デフォルトの名無しさん:2012/01/25(水) 22:07:54.86
そういえばこんなスレがあった

【ヤパーリ】XMLをS式に置換えていくスレ【LISP最強】
http://toro.2ch.net/test/read.cgi/tech/1140006937/
925デフォルトの名無しさん:2012/01/25(水) 22:08:12.88
>>920
(html (head (body (p
blah
))))
いくら慣れてもどの閉じ括弧が何と対応するかは瞬時に判らないでしょ

<html><head><body><p>
blah
</p></body></head></html>

これだと3行目だけ見て判る
926デフォルトの名無しさん:2012/01/25(水) 22:08:23.12
S式の方がやっぱりスッキリしていない? あとがんばれば1ページで表示できちゃうぞ。
そして、文字の色付けすればもっと文句言えなくなるだろ。

XML
ttp://toro.2ch.net/test/read.cgi/tech/1140006937/4
S式
ttp://toro.2ch.net/test/read.cgi/tech/1140006937/17
>>921
エディタにやってもらって数えないから。
エディタなしでもカッコが一つ少ないとかは、なんとなくわかるけど。
927デフォルトの名無しさん:2012/01/25(水) 22:09:17.32
>>921
文末に;の方がうざくね?
928デフォルトの名無しさん:2012/01/25(水) 22:13:40.84
すっきりしてるけどもw
いくら単純でも)))))))))))))))うわあああって人もいるよ
色弱な人は色分けされても困るし
929デフォルトの名無しさん:2012/01/25(水) 22:15:10.36
見慣れない人は、これでもかと連打される閉じカッコには狂気を感じると思うw
930デフォルトの名無しさん:2012/01/25(水) 22:50:15.02
短いが正義ならあれだ、みなまで言わない
931デフォルトの名無しさん:2012/01/25(水) 22:53:47.26
>>925
> <html><head><body><p>
> blah
> </p></body></head></html>
(html
(head
(body
(p blah)
)
)
)
でも
(html (head (body
(p blah ))))
でもいいんじゃないの。

本文これだけなら個人的には(html (head (body (p blah ))))でいいかな。
932デフォルトの名無しさん:2012/01/25(水) 22:58:18.49
あとそもそも論だけど、ある開始タグ・終了タグを変更したいときって開始タグを変更して、
終了タグを変更するわけでしょ? 面倒くさくない?
933デフォルトの名無しさん:2012/01/25(水) 23:00:47.66
で、さっき思いついたけどS式でも任意オプションで
終了タグを入れられるようにしたらどうかな

(html (head (body (p
blah
/p)))/html)
readのエラー検出は向上すると思う
934デフォルトの名無しさん:2012/01/25(水) 23:14:50.76
うむ、]で半端に区別するよりは良いな
935デフォルトの名無しさん:2012/01/25(水) 23:22:55.71
>>933
うざいだけじゃね?
適切なインデントと対応する括弧へのジャンプができるエディタがあれば括弧なんか無いのも同然じゃろ
936デフォルトの名無しさん:2012/01/25(水) 23:26:11.95
問題は、lengthとかリスト数えるとこでいちいち考慮しないとダメな点だな
readとwriteの対称も維持するとreadで省くのもあれだし
まあ却下だなw
937デフォルトの名無しさん:2012/01/25(水) 23:32:55.78
半端に入れるぐらいなら終了タグ強制のS式と別のデータ構造にした方がいいか
もうこの話はやめるわ
938デフォルトの名無しさん:2012/01/25(水) 23:46:21.31
>>937
現状、>>926のS式がエレガントって話でしょ。
939デフォルトの名無しさん:2012/01/25(水) 23:46:40.43
括弧無しでは格好がつかない
940デフォルトの名無しさん:2012/01/26(木) 00:03:00.75
インデント(タブ)もカッコも同じようなもんだけどね
html
head
body
p blah
941デフォルトの名無しさん:2012/01/26(木) 00:05:03.87
>>940
YAMLかよ!
942デフォルトの名無しさん:2012/01/26(木) 01:19:29.01
>>901
> Schemeはlambdaが多機能・高機能すぎて細かい所でネックになる印象

別にSchemeのlambdaは多機能でも高機能でもない。
単にCやJavaや多くの言語みたいに一度しか使わない関数(手続き)に
わざわざ名前を付ける必要はなくて、関数(手続き)を直書きできるというだけ。

Cの場合、関数には必ず名前を付けなければならない。つまり関数は名前を付けた一種の定数tなわけだ。
ところがそれへのポインタは変数に入れられる。
さらにデータの型(関数の引数や結果の型)として関数へのポインタという「型」もあって他のintなどの型と
同じように使えるかに見える。

つまりCでは整数とか浮動小数点数とか構造体とか関数とかポインタいったデータの種類と記憶域属性(auto, static, extern, constなど)とが
自由に組み合わせられないという意味で直交しておらず、関数に関しては妙な制約がある(constしかダメ)ということ。

そういう制約があるのでCではデータの種類や記憶域属性を基本要素概念として理解するのが面倒になる。
Schemeには基本要素概念同士の組み合わせに関してそういう奇妙な制約がほとんどない。(すぐには思いつかない)
そういう意味で個々の基本要素概念は独立で、各々の概念を理解すれば後は自在に組み合わせて使えば良いから明快なのだ。
943デフォルトの名無しさん:2012/01/26(木) 01:52:26.35
Javaは次のバージョンからlambda使えるようになるみたいだよ
944デフォルトの名無しさん:2012/01/26(木) 02:08:36.17
その前にJavaって関数内関数を定義できたっけ?
その関数内だけでよく使う手続きが、関数の外に宙ぶらりんになってるの見るとイラッとくるよね(´・ω・`)
945デフォルトの名無しさん:2012/01/26(木) 02:09:05.31
>>887
CTMを思い出した。そのパラダイムを実現するための
ギリギリ最小の構文は何かという観点から、
宣言的プログラミングに始まり、構文を少しずつ付け足して世界を広げていく本

記述はOzとかいう言語で、同じような話をLispでもできるだろうけど、
Lispで行うべき必然性もないような気がする
946デフォルトの名無しさん:2012/01/26(木) 08:04:58.59
>>943
C#3.0「ラムダ式があれば匿名メソッドなんていらんかったんや……」
C++11「Javaはラムダ式見送ったの?俺もう入れちゃったんだけど」
ECMAScript5「俺はまだ本当のラムダ式を導入していない、この意味が分かるな?」
947デフォルトの名無しさん:2012/01/26(木) 08:39:32.65
>>855
きちがいは下手下手連呼せずに黙ってろ
948デフォルトの名無しさん:2012/01/26(木) 09:02:00.45
>>947 反論できなくなると黙ってろしか言えない馬鹿は死ね
949デフォルトの名無しさん:2012/01/26(木) 11:56:44.56
>>944
おれもCやC++使うとき、関数内関数が書けなくてイラってするときがよくある。
昔CかC++で関数内関数を書いた気がしたんだがきのせいだったんかな(笑
950デフォルトの名無しさん:2012/01/26(木) 11:58:49.49
GCC拡張じゃないの
951デフォルトの名無しさん:2012/01/26(木) 12:20:11.55
>>949
Pascalならあったな
952デフォルトの名無しさん:2012/01/26(木) 12:25:25.15
最近はclangならblocksっていうのがある。
953デフォルトの名無しさん:2012/01/26(木) 12:50:56.14
>>949
C++なら関数内structでstatic関数定義すればいい。
954デフォルトの名無しさん:2012/01/26(木) 12:56:42.89
>>953
それはやったことあるけど、書くのもアクセスするのも面倒だよなー(笑
955デフォルトの名無しさん:2012/01/26(木) 13:02:43.07
struct xxx{static }
書くときに増えるのは20文字。呼び出しで増えるのは4文字。
それを面倒といわれても。

名前なしで定義できないのは確かに面倒。
名付けに必要なエネルギーはbodyを書くそれを上回ることが多い。
956デフォルトの名無しさん:2012/01/26(木) 13:09:29.92
> 書くときに増えるのは20文字。呼び出しで増えるのは4文字。
書くときに増えるのは20文字。呼び出しで増えるのは5文字。
957デフォルトの名無しさん:2012/01/26(木) 15:09:51.28
>>953
こいつでC++コードを生成すればいいだろ
http://www.suri.cs.okayama-u.ac.jp/servlets2/scm2cpp.rkt
958デフォルトの名無しさん:2012/01/26(木) 18:05:36.22
最近meta circular evaluator絡みでは、
Javascript/SpiderMonkeyのRiverTrail拡張が面白かった。
Lisp, Schemeの言語拡張だと、Racketの#langがアドホックだけど面白いね。
このスレではRacketを酷評する人もいるけどw
959デフォルトの名無しさん:2012/01/26(木) 21:05:59.20
>>958
Racketは独自の道を歩んでいる感がなぁ(大抵のlisp族はそうだけどさ)
960デフォルトの名無しさん:2012/01/26(木) 21:15:04.79
Racketって日本語の扱いはどんな具合なの?
961デフォルトの名無しさん:2012/01/27(金) 23:40:50.41
>>960
データの処理はUnicodeの範囲で標準でサポート。iconvを利用できるので、
エンコーディングの変換もほぼ問題ない。

http://docs.racket-lang.org/guide/encodings.html
http://docs.racket-lang.org/reference/bytestrings.html

UIについては全部英語だったと思うけど、Racketになってからは触ってないので知らん。

聞くよりは試した方が手っ取り早いと思う。
962デフォルトの名無しさん:2012/01/28(土) 09:24:20.85
愛昆布
963デフォルトの名無しさん
Schemeでclisp位の機能を持った処理系は有りますか?
Racketは高機能すぎてもう少しシンプルなのがよいのですが・・・
guileやgausheはタブコンプリーションや矢印キーが使えなくて使い難いです。