トップページ⇒tech
1001コメント327KB

Lisp Scheme Part33

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2011/10/09(日) 17:58:58.06
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/
0002デフォルトの名無しさん2011/10/09(日) 18:00:51.76
>>1
おつおつ
0003デフォルトの名無しさん2011/10/09(日) 23:25:08.72
>>984 前スレ
> おれquicklispには非常に期待してるんだ。ネイティブコンパイラのある言語で、
> ああいうライブラリ管理がある言語って、実は少ないんじゃないかしら。
どういうこと?
機能としてのadsfとの違いがわからない。
quicklispの方がインストールできる率が高いぐらいの認識だわ。
Linuxディストリのパッケージ管理ソフトのapt系やyum系やemerge系やArchLinuxのpacman(yaourt)系みたいなことってadsfでできないの?
Perlとかはどうなん?
0004SCHEME餃子 ◆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
0005デフォルトの名無しさん2011/10/10(月) 02:09:04.89
>>3
パッケージ管理で気に入ってるのはLeiningenのclojarsリポジトリかな
もの凄く楽
0006デフォルトの名無しさん2011/10/10(月) 09:14:13.99
>>3
quicklispは依存するライブラリをリポジトリからネットワーク経由して勝手に取ってくるよ。
(要はyumとかaptみたいに)
asdfってそんなことできたっけ?
0007デフォルトの名無しさん2011/10/10(月) 12:57:52.63
>>6
それはさすがにできる。
検索機能があったかは、ようわからん。

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

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

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

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

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

そのASDFの枠組みに乗っかって、ライブラリの導入を自動化するのが、
ASDF-InstallやQuicklisp。こちらはCPANやRubyGemsとかと同じ層の枠組み。
ライブラリの自動ダウンロードや検索をするのはこっち。
0022デフォルトの名無しさん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.

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

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

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

構造体はそれ1つを知ってればいいが、
多値は関数それぞれが何を返すのか知ってないといけないのに加えて、
その順番には何の根拠もないから仕様変更に弱い
後で何か付け足す場合とか考えないのかな?
普通に考えれば積極的に使う物ではないという判断に至ると思う
0031デフォルトの名無しさん2011/10/15(土) 17:15:52.57
だから多値を推すなら名前付きにしろって思うんだよ
関数引数にも言える事だけど
0032デフォルトの名無しさん2011/10/15(土) 17:21:13.23
まあ、関数の引数が見逃されてきたのは、
呼び出し側のインターフェースで引数を強制してるからだけどね
可変長引数の使いにくさを見れば多値がいかに迂闊なインターフェースか判ると思う
0033デフォルトの名無しさん2011/10/15(土) 17:46:07.45
多値のせいで例外処理みたいなすっ飛んでく処理とか複雑になってしまわない?
例外受け取っても何が入ってるか判らんとか
R6RS以降追ってないけど
0034デフォルトの名無しさん2011/10/15(土) 17:46:34.57
順番に依存よくないな!Scheme みたいな狭い世界じゃなくて、
数学の世界を名前付き引数に改革しようぜ!
0035デフォルトの名無しさん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
嫌んなっちゃうな
0036デフォルトの名無しさん2011/10/15(土) 18:03:24.20
おっと、括弧が1たりないw
0037デフォルトの名無しさん2011/10/15(土) 18:06:35.96
つまり多値がファーストクラスでないのがいけねえんだってことね
0038デフォルトの名無しさん2011/10/15(土) 18:50:21.53
>>35
何でdestructuringするマクロ使わんのだ。
単にreceiveとかcall-with-valuesの下でリストやベクタ、
構造体を使えば良いだけで、他からは隠蔽できる。

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

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

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

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

なんとなく、ブレークポイントを設定してローカルな変数を見たいのかな、
とか思うんだけど、どうなんだろう。
0052デフォルトの名無しさん2011/10/16(日) 13:40:15.08
>>51
大域変数を確認したいです。
0053デフォルトの名無しさん2011/10/16(日) 14:31:14.00
最初はcondないの内部処理は、各条件ごとの内容をそれそれ別関数にまとめて
作って、ひとつの関数から、cond条件わけの関数とそれぞれの関数に分けて作った
ほうが最初はいいよ。そのほうが読みやすくなるので。
何もかも一つでやらそうとするのはあまりいい傾向だとは思えない。
0054SCHEME餃子 ◆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 だけじゃなくていくつかのバリエーションがあるみたいだね。
0055デフォルトの名無しさん2011/10/16(日) 22:34:38.91
>>53-54
くわしくありがとうございました。
0056デフォルトの名無しさん2011/10/16(日) 23:05:42.50
余談ではありますが、
call/ccとdelayを用いてpromiseを返却し、逐一動作が出来ました。
0057デフォルトの名無しさん2011/10/17(月) 01:32:57.33
gambitcやchikenでvalues使うと大幅に速度が上がるっていうなら
できるだけ使うように心がけるかな
0058デフォルトの名無しさん2011/10/18(火) 11:18:56.17
>>54
糞コテは巣に帰れ
0059デフォルトの名無しさん2011/10/18(火) 17:32:08.25
>>58
SCHEME餃子の巣はやっぱSchemeスレなんじゃね?
0060デフォルトの名無しさん2011/10/23(日) 09:16:03.19
shibuya.lisp はどーだった?
0061デフォルトの名無しさん2011/10/23(日) 10:59:49.40
クロージャスレから引越しというか。
授業が奥乃先生と複数担当態勢だったりしたのは引き継ぎの目的もあったのかな。

最終講義のアナウンスがあるとしたら年明けかな?
0062デフォルトの名無しさん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
0063デフォルトの名無しさん2011/10/23(日) 14:03:45.42
某氏と某氏のトラブルも収まったのかな。 Shibuyaでは喋らんと言ってたけど
良かったんじゃない?
0064デフォルトの名無しさん2011/10/23(日) 15:11:06.90
一応当時、熱くなって申し訳ない、みたいな感じで本人謝罪してたよ。
あとは、相手もう運営側から手を引いてるし。

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

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

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

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

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

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

racketでは動くけど、他の処理系ではやっちゃいけない?
0090デフォルトの名無しさん2011/10/29(土) 22:34:59.75
そもそもdefine-macro自体がRnRSにないので、
あんま気にしても仕方ないと思う。
0091SCHEME餃子 ◆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 を使う方が楽ではあるだろうね。
0092デフォルトの名無しさん2011/10/30(日) 00:29:23.88
なんだよボーイズラブって
0093デフォルトの名無しさん2011/10/30(日) 03:34:57.41
限定継続使われてないからメモリーリークしてたんかね
http://groups.google.com/group/plt-scheme/browse_thread/thread/a310b7cba8fae651/fa85558e8a5115bf
0094デフォルトの名無しさん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 '+)
)
)
0095デフォルトの名無しさん2011/10/30(日) 12:47:34.04
>>91
各処理系がdefine-macroをどう実装してるかが問題なんだから、
RnRSでdefine-macroをどう実装するかはこの場合関係ないだろ。
独自の定義でオリジナルを上書きして差異を吸収するってんなら別だけど。
0096942011/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))
0097デフォルトの名無しさん2011/10/30(日) 14:12:11.24
何を期待してるのか判らんから助言しようもないが、
matchの仕様を見るにpat部分は普通の評価はされない場所だから
何か勘違いしてるんだろ。例えばパターンの最初の2行は
[(- z) (list z '-)]
[(/ z) (list z '/)]
でいいんじゃないかと。
tmplもそう書き直せば多分動くでしょ。
全く確認してないが。
0098デフォルトの名無しさん2011/10/30(日) 14:13:55.83
あ、だからpat部分は評価されないからダメだよ
出てくるシンボルは「パターン変数」になるそうだから。仕様よく読め。
0099デフォルトの名無しさん2011/10/30(日) 18:50:28.04
おまいらそんなに括弧が好きなの?
かっこつけんなよ。
0100SCHEME餃子 ◆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式で書く意味はあんまり無いと思う。
見難いと感じないならデメリットも特に無いとは思うけど。
0101デフォルトの名無しさん2011/10/30(日) 21:23:48.25
templated match macroとか作ったら論文になるんだろうか
どんな雑誌に投稿するのか知らないけど
0102SCHEME餃子 ◆8X2XSCHEME 2011/10/30(日) 23:31:17.46
ずいぶん前の話だけど、 Active Basic スレで正規表現ベースの構文定義を提案してた奴がいたなぁ。
あんまりフリーダムでも困るけど、 Lisp の場合は結局はS式だから、それがちょうどいい枷にもなってる気がする。
0103デフォルトの名無しさん2011/10/31(月) 00:16:26.42
個人的には、演算子の優先順位をなくせるという利点も推したい。

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

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

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

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

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

継続を活用したウェブ開発をする場合、CGIだと厳しいと思う。
0118SCHEME餃子 ◆8X2XSCHEME 2011/11/04(金) 00:23:44.47
>>106
意味的な単位と表記上の単位が一致しやすいってことですね。
Lisp だと小さい単位で書きがちということもあって納得です。
0119デフォルトの名無しさん2011/11/04(金) 03:42:10.30
継続の道はまだ始まったばかりだぜ
第一級継続先生の次回作にご期待ください

http://www.google.co.jp/search?hl=ja&q=%22delimited+control%22+scheme+filetype%3Apdf&oq=%22delimited+control%22+scheme+filetype%3Apdf
http://www.google.co.jp/search?hl=ja&q=%22%E9%99%90%E5%AE%9A%E7%B6%99%E7%B6%9A%22+web%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3+filetype%3Apdf
http://www.google.co.jp/search?hl=ja&q=%22%E9%99%90%E5%AE%9A%E7%B6%99%E7%B6%9A%22+filetype%3Apdf&oq=%22%E9%99%90%E5%AE%9A%E7%B6%99%E7%B6%9A%22+filetype%3Apdf
0120デフォルトの名無しさん2011/11/04(金) 03:53:38.35
racketでも検索した方がいい。
http://www.google.co.jp/search?hl=ja&q=delimited+control+racket
http://community.schemewiki.org/?composable-continuations-tutorial
0121デフォルトの名無しさん2011/11/04(金) 19:37:26.64
宇宙全体をシリアライズできなくても
地球全体をシリアライズすれば十分
0122デフォルトの名無しさん2011/11/04(金) 21:10:14.05
ありんことみじんこじゃ全然違うと思いますけどー
永続化する場合こんどはインスタンスの管理の問題があるけど
0123SCHEME餃子 ◆8X2XSCHEME 2011/11/04(金) 22:32:53.69
何を言いたいのかわかんねーよ。
比喩を持込むのはなるべく避けろってのは議論の基礎だろ。
もうちょっと具体的に言ってくれんか。
0124デフォルトの名無しさん2011/11/05(土) 00:35:36.71
餃子がそれを言うのかw
0125デフォルトの名無しさん2011/11/05(土) 00:44:10.21
餃子でもシュウマイでもいいじゃないか。by Lispトムヤンクン
0126デフォルトの名無しさん2011/11/05(土) 08:42:02.91
もしかし継続って、外出しできてこそ本領発揮するんじゃないのか?
最初から仕様にもりこんでおけば今頃は超有名になってたよ
0127SCHEME餃子 ◆8X2XSCHEME 2011/11/05(土) 12:55:12.57
>>124-125
行者って書こうとして間違えたんじゃないんだからねっ!!
0128デフォルトの名無しさん2011/11/05(土) 12:59:27.30
行者だと無条件であぼんされそうだから餃子でよかったと思う
0129デフォルトの名無しさん2011/11/05(土) 13:03:13.19
>>123
なんでときどきDQN口調になるんだよw
0130SCHEME餃子 ◆8X2XSCHEME 2011/11/05(土) 13:22:34.67
>>129
煽らないとすぐに過疎るからだよ。
極論を書いたりするのも反論してみろっていう煽りだよ。
言わせんな恥ずかしい
0131デフォルトの名無しさん2011/11/05(土) 14:40:38.83
餃子のせいで昨日の夜餃子食べたくて大変だった。

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

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

規格にするならあとはその制限をどのレベルにするのが妥当かって話ですよね。
0139SCHEME餃子 ◆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! したら既に書き出したクロージャにも波及したりしたら面白いとか思った。
面白いだけで使いどころがないし非現実的だけど。

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

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

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

ガキは家へ帰ってパパのチンポでもしゃぶってろ
0153SCHEME餃子 ◆8X2XSCHEME 2011/11/06(日) 14:11:56.96
いや…その書込みは別に意味はねえ ただの悪意よ
0154デフォルトの名無しさん2011/11/06(日) 14:37:34.53
処理系がシステム巻き込んでクラッシュするようなプログラムを出してこそ、悪意。
0155デフォルトの名無しさん2011/11/07(月) 15:54:39.42
>>153
悪意はある反面あなたの精神的な未熟さだけは理解できました。
By Lispトムヤンクン
0156デフォルトの名無しさん2011/11/07(月) 16:06:06.82
>>149
当事者としてはすこぶる不愉快だが、2ちゃんだからこの程度のことは書く
人がいてもおかしくはないですからね。トムヤンクン
実際に対面して同じ事を目の前で言えるような人とは思えないし、
そこまで肝がある人じゃないだろう。それができるのが2チャンです。
心理的に不安定な人という印象だけが残ってしまったのも事実なのです。
これ以上は時間を捨てるようなものであり、オフトピでもあるので
これで失礼します。
0157デフォルトの名無しさんNGNG?2BP(0)
>>156
何この粘着君。
空気読まない奴だと思ったらわかった上で乱してんのか。
タチ悪いわー
0158デフォルトの名無しさん2011/11/07(月) 20:18:07.26
>>157
自己紹介してんじゃねえよ
0159デフォルトの名無しさん2011/11/07(月) 22:01:30.77
30過ぎるとタチ悪くなるよ
0160デフォルトの名無しさん2011/11/08(火) 21:59:49.89
数ある(のかどうかわからないけど)関数型言語であえてLISPを選ぶ理由って何?
それと関数型って言うとLISPの他はMLっぽいのが多い気がするけど他の系統ってどんなのがある?
0161デフォルトの名無しさん2011/11/08(火) 22:03:20.53
LISPをマルチパラダイムやで?
0162デフォルトの名無しさん2011/11/08(火) 22:03:29.71
LISP「は」
0163SCHEME餃子 ◆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) を好む理由です。 下手するとカオスになるというデメリットと隣りあわせではありますけどね。
0164デフォルトの名無しさん2011/11/09(水) 00:56:34.33
>>163
そのトリップ、SCHEMEはともかく8X2Xって何?
0165デフォルトの名無しさん2011/11/09(水) 01:09:43.02
>>163
JavaとかCだと、文と式があって、言語の拡張=文の追加・変更が難しい。
LispはS式で統一されてるので、Lisp自身の拡張が容易、ってのが大きいんじゃないかな?
0166デフォルトの名無しさん2011/11/09(水) 01:09:51.42
>>164
あまりだろ。
0167SCHEME餃子 ◆8X2XSCHEME 2011/11/09(水) 07:19:31.37
>>164
16倍ってことだよ
0168デフォルトの名無しさん2011/11/09(水) 07:42:05.03
16bit
0169デフォルトの名無しさん2011/11/09(水) 12:10:28.17
理屈ではそうだけど
現実世界で圧倒的に役に立っているのは
JavaやC++なんだけどな
0170デフォルトの名無しさん2011/11/09(水) 12:15:21.47
ずいぶん狭い現実世界だな
0171デフォルトの名無しさん2011/11/09(水) 13:20:04.76
餃子の相手をする人の相手をすることはない
0172デフォルトの名無しさん2011/11/09(水) 15:31:18.24
やあ、言語の寿命が心配なのか?

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

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

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

http://random-state.net/log/3529868963.html
0188デフォルトの名無しさん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

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

>>190みたいに副作用で破壊的に変更しても良いし、
map-unionとかで走査して、置き換えても良いし。
0192デフォルトの名無しさん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
0193デフォルトの名無しさん2011/11/13(日) 10:01:22.66
取り込まれてるレベルじゃなくて、
この分野はJavascriptがJavaと
一緒に最先端を形成してる。
pluginによる言語機能も
メタサーキュラーJITに組み込まれる
実装が広く出回り始めたり。
0194デフォルトの名無しさん2011/11/13(日) 10:58:26.37
Gaucheのtext.html-liteで
特定の条件を満たした時に
複数のHTML:p手続きを実行?するにはどうすればいいのでしょうか
例を出すと
(when test (HTML:p "foo") (HTML:p "bar"))
のように書くと、最後のbarのみが出力されてしまいます
意図しているのはどちらも出力させることです
0195デフォルトの名無しさん2011/11/13(日) 11:42:13.97
>>194
どうせ最終的に write-tree するんだろうから、↓でいいんじゃないか?

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

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

Fruity Wrapper ってソフトを使っているみたいだけど、
takの再帰処理毎に3和音を生成->アルペッジョを生成てなことをしているのかな
tak関数のこういう使い方は思ってもいなかったので面白い
0199デフォルトの名無しさん2011/11/13(日) 23:11:59.47
ほかの使い方は思っているのかよ
0200デフォルトの名無しさん2011/11/13(日) 23:44:45.49
>>199
普通のプログラマがtak関数の応用について1%考えているとして、
がんばって考えた人が2%だとすると、98%ぐらい考えられていないからなあ。
0201デフォルトの名無しさん2011/11/14(月) 00:08:19.53
まあどうでもいい
0202デフォルトの名無しさん2011/11/14(月) 03:15:01.10
>>198
メガデモ的でもあるな、なんかちょっと感動した
0203デフォルトの名無しさん2011/11/14(月) 06:40:13.56
インタプリタとかで、関数の再帰呼び出しの性能を評価する
マイクロベンチマークとしては割と見かける部類だと思う
0204デフォルトの名無しさん2011/11/14(月) 08:42:59.60
ベンチマークとしてならGabrielベンチマークとしてLisp界隈だとド定番だし、
他の言語のベンチマークでも見かけるくらいにはメジャー。
0205デフォルトの名無しさん2011/11/14(月) 09:04:53.88
そーなのCAR
0206デフォルトの名無しさん2011/11/14(月) 11:37:05.16
EclipseのSchemeのプラグインってないのかな。
エンジンはGauheを使えたらさらにうれしいのだけど。
0207デフォルトの名無しさん2011/11/14(月) 11:51:54.50
ggrks

http://sourceforge.net/apps/wordpress/schemeway/
0208デフォルトの名無しさん2011/11/14(月) 11:53:30.09
やっぱSchemeWayしかないのかな。
ぜんぜん日本語情報がないよね。
0209デフォルトの名無しさん2011/11/14(月) 12:02:47.64
ただでさえ人口が少ないSchemeで、さらに人口が少ないEclipseでの開発者で、
さらにさらに人口が少ない日本語話者による日本語の解説を期待しても始まらないよ。
日本語情報が欲しいならEmacs使わないと。マイノリティを貫くならそれなりの覚悟が必要。

そもそも英語の情報だって、最悪辞書見ながら読めば普通に意味が分かる程度には読める。
日本人なら誰でも長年英語勉強してるんだから。
0210デフォルトの名無しさん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以外の日本語
環境はどうだったの?
0211SCHEME餃子 ◆8X2XSCHEME 2011/11/14(月) 17:59:50.55
>>210
おいおい。 それを方言としてまとめるのは無茶すぎだろ。 jk
0212デフォルトの名無しさん2011/11/14(月) 18:50:46.58
>>192-193
Javaってひょっとして静的型推定なのでGCがある以外はC++とあんま変わらない?
確かに高速になったとは聞いたけど
0213デフォルトの名無しさん2011/11/14(月) 19:07:56.88
Javaは速くなければならないというお金に直結する緊急課題が昔からあった
LISPには特に無かった

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

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

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

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

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

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

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

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

逆に、>>224は人が十分に多いと思う何らかの根拠があると思うんだけど、それは何?
思考停止してると思うなら、別の原因に何らかの心当たりがあるんじゃないのか?
0226デフォルトの名無しさん2011/11/15(火) 05:05:39.95
>>219
は
>>218
のベンチマークにRacketがあるのにGaucheがない理由を想像できるかい?
0227デフォルトの名無しさん2011/11/15(火) 05:09:13.11
>>225
人が少ないと言えるのは何人ぐらいがいればいいの?
 ↓訂正
人が少なくないと言えるのは何人ぐらいがいればいいの?

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

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

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

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

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

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

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

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

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

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

数学者が日本の品格みたいな本出すようになるともうヤキが回った状態であることが
わかるのと同じようなもので。
0253デフォルトの名無しさん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に興味を持つのは普通だと思うんだけどなあ。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

0348デフォルトの名無しさん2011/11/26(土) 13:10:38.02
Luaが形なし言語で最速と聞いて
LispやSchemeからの変換機あるかなと思ったら
以外と誰も作ってない。Stalinと速度比較したかった。
0349デフォルトの名無しさん2011/11/26(土) 13:41:07.50
>>348 LuaJIT がだろ?
ついでに言っとくと Lisp 系言語は変数側に型がないだけで
変数に代入されるオブジェクトには結構厳しい型付がある
0350デフォルトの名無しさん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
0351デフォルトの名無しさん2011/11/26(土) 18:43:29.05
>>348
SBCLの圧勝です。
0352デフォルトの名無しさん2011/11/27(日) 00:00:34.74
http://attractivechaos.github.com/plb/
http://shootout.alioth.debian.org/u32/which-programming-languages-are-fastest.php
http://shootout.alioth.debian.org/u64/which-programming-languages-are-fastest.php
fixnumとunsafe使えばsbclの方が速いかな?
0353デフォルトの名無しさん2011/11/27(日) 00:03:50.29
Luaの場合は小細工なしで速いから
0354デフォルトの名無しさん2011/11/27(日) 00:57:49.97
Scheme subset -> Luaならantlrあたり使って簡単にできそうなのになあ
Schemeでambとかマクロ展開してからLuaに変換できたら高速だし最高なのに
0355デフォルトの名無しさん2011/11/27(日) 03:20:49.77
lisperが妄言はいてる間にlua最速!
いいうさぎとかめですね
0356デフォルトの名無しさん2011/11/27(日) 05:10:08.81
小細工とか妄言とかえらい攻撃的な人が来てるね。
というより主張だけが必死で話を聞いてない
この2つの考察から
スルーするのが適当じゃなかろうか。
0357デフォルトの名無しさん2011/11/27(日) 05:32:36.83
小細工と妄言は別の人なのだが
妄想が激しい人なのな
0358デフォルトの名無しさん2011/11/27(日) 05:35:02.00
Luaは速度を速くするための
特別な書き方しなくても速いんだが
0359デフォルトの名無しさん2011/11/27(日) 05:55:52.20
luaはschemeと似てるけどcall/ccみたいな厄介なのはないし
言語実装が1つだから無駄なリソースをあまり使わずに進化できたんじゃないかな
あんま知らんけど
0360デフォルトの名無しさん2011/11/27(日) 08:31:33.05
機械語最速最強、とか言ってるのとたいして変わらんしw
0361デフォルトの名無しさん2011/11/27(日) 12:41:29.83
まあ、LuaとかJavaScriptが近年速度面で頑張ってるのは事実だし、
Lispも他に置いてかれないように頑張りましょう、ってことで。

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

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

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

(translate-logical-pathname "home:")

を評価して表示された場所。
0375デフォルトの名無しさん2011/11/28(月) 13:43:19.86
Lisp -> C -> 機械語
Lua -> JIT -> 機械語
だとLuaの方が速いんだよな
0376デフォルトの名無しさん2011/11/28(月) 13:59:02.19
じゃあ tarai で比較するか
0377デフォルトの名無しさん2011/11/28(月) 14:00:07.69
実用性のない何の価値もないコードで比較してどうする
0378デフォルトの名無しさん2011/11/28(月) 14:02:00.71
>>377
文句言うなら代替案を出せよ。
代替案ない批判は何の価値もないよ。
0379デフォルトの名無しさん2011/11/28(月) 14:08:36.34
ここは核融合プラズマシミュレーションで
0380デフォルトの名無しさん2011/11/28(月) 14:21:30.36
http://shootout.alioth.debian.org/u64/benchmark.php?test=all&lang=sbcl&lang2=lua
0381デフォルトの名無しさん2011/11/28(月) 14:31:36.26
>>380
Luaってどん亀Gaucheより遅そうだな
0382デフォルトの名無しさん2011/11/28(月) 14:39:59.84
型指定したコードと比べてどうすんだよ
馬鹿か
0383デフォルトの名無しさん2011/11/28(月) 14:43:35.40
出たものはとりあえず叩く人が居座ってるよな
0384デフォルトの名無しさん2011/11/28(月) 14:44:43.14
ドヤ顔で型指定しているコード持ってきて
Gaucheより遅そうって
馬鹿以外の何物でもないだろ
0385デフォルトの名無しさん2011/11/28(月) 14:47:54.23
何も出せずに文句しか言えない奴は哀れだねぇ
0386デフォルトの名無しさん2011/11/28(月) 14:50:59.55
馬鹿な発言しか出来ない奴よりはまし
0387デフォルトの名無しさん2011/11/28(月) 14:59:20.86
馬鹿はお前だろうw
http://shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=racket&lang2=lua
0388デフォルトの名無しさん2011/11/28(月) 15:11:30.43
なぜJITの付いてないバージョンのLuaと比べるんだよ
0389デフォルトの名無しさん2011/11/28(月) 18:03:06.62
http://luajit.org/performance_x86.html
0390デフォルトの名無しさん2011/11/28(月) 18:41:59.63
luajitでようやく比較対象になったレベルでしょ?
しかも組み込み用の糞言語w
0391デフォルトの名無しさん2011/11/28(月) 18:52:17.99
どん亀racketよりは速いお
0392デフォルトの名無しさん2011/11/28(月) 19:56:21.62
こんなところで油を打ってないで、一つでもマクロや関数の使い方
の理解を深めろって。^^; さもないと成長せんぞ。
0393デフォルトの名無しさん2011/11/28(月) 22:37:16.30
>>374
ありがとうございます!
0394デフォルトの名無しさん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/
0395デフォルトの名無しさん2011/11/29(火) 00:06:47.55
LuaJITだと2〜3倍どころ10倍くらいになってるな
保守性はともかくポータビリティは問題なさそう
0396デフォルトの名無しさん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あたりは置いていかれてる感はあるかもしれないね。
0397デフォルトの名無しさん2011/11/29(火) 08:52:41.78
.NET→MS実装は知らないが、MonoはLLVMバックエンドがある
Ruby→Rubinius
Perl→ParrotにLLVMプラグインがあるので、RakudoもLLVMを使える
PHP→PHP.rebootならHotSpot効くんじゃね?多分
0398デフォルトの名無しさん2011/11/30(水) 14:06:16.64
lispのprin1やprincにある"1"や"c"は
何を意味しているのでしょうか?
0399デフォルトの名無しさん2011/11/30(水) 16:53:13.14
prin1 の 1 は適当につけただけだと思う。改行するのが print で改行しないのが
prin1 だったんだけど、read できるかどうかを考慮してさらに prin2 とか prin3
とかが作られていった。でも方言ごとに意味がバラバラだった。

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

>>402
いいえ、別人です
0405デフォルトの名無しさん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.
だったはず。
04063982011/11/30(水) 23:27:54.17
なるほど、分かりました
HyperSpecではそこまで言及されていなかったので勉強になります
CLHS: Function WRITE, PRIN1, PRINT, PPRINT...
http://www.lispworks.com/documentation/HyperSpec/Body/f_wr_pr.htm
0407デフォルトの名無しさん2011/12/01(木) 08:52:19.28
確かprin1が生まれた当初は
一引数関数でアトムしか印字できなかったはず。
いわばprint下請け関数。

けどLisp interpreterは任意数引数関数にするの簡単だから…
0408デフォルトの名無しさん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
ググったら十年前の質問が出てきた。
0409デフォルトの名無しさん2011/12/02(金) 01:20:36.63
KMPが回答していたのですか
知りませんでした
なるほど
0410デフォルトの名無しさん2011/12/03(土) 02:16:04.15
渋谷lispみたいなイベントってもうないの?
ちょっと発表してみたい内容できそうなんだけど
0411デフォルトの名無しさん2011/12/03(土) 02:41:55.54
ついこの間あったばっかじゃねーか。
次まで待て。
0412デフォルトの名無しさん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
0413デフォルトの名無しさん2011/12/03(土) 09:30:23.56
東京でしか無いから、残念だよね。
0414デフォルトの名無しさん2011/12/03(土) 09:48:05.61
小規模開催じゃ売名できないだろ
0415デフォルトの名無しさん2011/12/03(土) 10:07:42.42
コルーチンはリスト処理ではない
スタックやレジスタの処理だ
リストはメモリ割り当てが頻繁に起こって遅くなりそう
0416デフォルトの名無しさん2011/12/03(土) 10:08:54.08
誤爆
0417デフォルトの名無しさん2011/12/03(土) 11:43:25.32
>>413
道府県庁所在地でやれば5人ぐらい集まるんじゃないの?
文句を言わずに動け。
他分野の話だけど地方の県庁所在地で活発にやっている所があるよ。あと関数言語とプログ
ラミング教育とemacsと英語ぐらいのテーマでNPOってできるんじゃないのかね。原文(英語)
ハンドブックを教材に使って、辞書を片手にプログラミングさせるのが良いと思う。
全然訳せなくて使い方が分からない場合に手助けする感じだと人は伸びるよ。

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

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

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

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

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

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

ヘタレlisper/schemmerでいいから代表として誰かが立てば、忙しい
lisper/schemmerも参加しやすくなるんじゃないの。代表に求められるのは、
lispの能力より雑用処理能力だよね。
0424デフォルトの名無しさん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にはどういう関係があるのですか?
0425デフォルトの名無しさん2011/12/04(日) 00:31:00.58
往年のMCLファンの俺が答えるよ。
つ http://en.wikipedia.org/wiki/SK8
0426デフォルトの名無しさん2011/12/04(日) 00:44:48.44
 ̄ ̄ ̄ ̄ ̄ ̄ ̄l/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     ∧_∧
    ( ´・ω・`)     ∧_∧
    /     \   (    )何言ってんだこいつ
.__| |    .| |_ /      ヽ
||\  ̄ ̄ ̄ ̄   / .|   | |
||\..∧_∧    (⌒\|__./ ./
||.  (    )     ~\_____ノ|   ∧_∧
  /   ヽ 空気読めよ   \|   (    )
  |     ヽ           \/     ヽ. オマエ馬鹿だろ
  |    |ヽ、二⌒)        / .|   | |
  .|    ヽ \∧_∧    (⌒\|__./ /
0427デフォルトの名無しさん2011/12/04(日) 00:47:00.11
これ、昔からソース公開してるんだけど、
sitアーカイブだからMacないと展開に苦労するし、
ライセンスはここ読めってページがなくなってるしw
http://sk8.research.apple.com
0428デフォルトの名無しさん2011/12/04(日) 00:50:13.95
つ ttp://www.vector.co.jp/soft/dl/win95/util/se140653.html
0429デフォルトの名無しさん2011/12/05(月) 19:14:05.58
普段の雑多な処理(bashで書くと64行以上のスクリプト)ってlisp(schemeも可)で書く? bashで書く?
あと64行未満だったらどうされますか? 行の量レベルによっての取り組み方の違いとかをご教授して
いただけませんか?
LispでもLinuxディストリ間ぐらいだったら可搬性も楽に高められるかな? Lispだと他の人が読めないよ
というクレームが来たら最悪違う言語で書き直せば良いんだよね。そのスクリプトは製品ではなく数ヶ月
後までに書き直しておけば問題なしという条件で。

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

書きやすい方の道具使うべきなんであってLispありきってのは間違いじゃろ
0436デフォルトの名無しさん2011/12/06(火) 02:26:25.51
せっかくだから、どんな小さなスクリプトもLispで書くことにするぜッ
0437デフォルトの名無しさん2011/12/06(火) 07:30:19.88
>>435
bash等と比べると書きやすいで言えばLispだし、ブログのネタにしやすいのもlispでしょ。
つまりはLispありきでいいんじゃないか。
0438デフォルトの名無しさん2011/12/06(火) 17:39:58.04
Lisp 1000tips wiki つくろか
0439デフォルトの名無しさん2011/12/06(火) 17:54:14.86
>>438
期待してる。
0440デフォルトの名無しさん2011/12/07(水) 00:05:07.89
common lispのmapcにあたるのは
schemeではmapになるのでしょうか?
そして、common lisp のmapcarにあたる関数は何でしょうか
0441デフォルトの名無しさん2011/12/07(水) 00:27:18.03
mapc => for-eachでmapcar => map。
ただし、mapcと違ってfor-eachが返す値は未定義。
0442デフォルトの名無しさん2011/12/07(水) 00:41:59.82
ありがとうございます 勘違いしていました
気になったのですが、common lispのdolistとmapcは何が違うのでしょうか
0443デフォルトの名無しさん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
0444デフォルトの名無しさん2011/12/07(水) 01:34:56.54
>>443
すっきりと腑に落ちました。
これで使い道に迷うことはなさそうです。
0445デフォルトの名無しさん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は引数で渡すからこの問題は起きないはず。これは覚えておいた方が良いかも。
0446デフォルトの名無しさん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 文を使うことはできないんでしょうか?
0447デフォルトの名無しさん2011/12/08(木) 12:21:55.04
>>446
(define a 0)
(case 0 ((a) 1))
-> ()
(case 'a ((a) 1))
-> 1
0448デフォルトの名無しさん2011/12/08(木) 19:06:31.53
>>446
case の条件部分はただのデータで、評価されない。
なのでその書き方は 0 という整数と (if #t 0) というリストを比較している。
0449デフォルトの名無しさん2011/12/08(木) 20:18:39.48
>>446
今度からそういうときはcondを使ってね
0450デフォルトの名無しさん2011/12/08(木) 20:30:54.67
ウズウズ
0451デフォルトの名無しさん2011/12/08(木) 21:34:09.97
>>447-449
レスありがとうございます。
condを使えば思ったとおりに動かすことが出来ました。
0452デフォルトの名無しさん2011/12/09(金) 19:26:16.97
この英語2chはなんなんだ。微妙に活気があるんだよなあ。
ttp://dis.4chan.org/tech/
0453デフォルトの名無しさん2011/12/09(金) 19:36:34.40
海外のオタクが双葉を元にしたサイトだよ
0454デフォルトの名無しさん2011/12/10(土) 00:23:20.84
schemeで画像扱う時って普通にvectorのvectorにするものなの?
0455デフォルトの名無しさん2011/12/10(土) 03:12:38.88
u8vectorで
0456デフォルトの名無しさん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の説明の図がわかりやすいです
画像ならまだしも、テキストでセルの要素を表現できることに驚きました
このような図を作成するにはどういうツールを使えばよいのでしょうか
0457デフォルトの名無しさん2011/12/11(日) 00:18:56.26
そのサイトの管理人に聞いたほうが早いんじゃね?
0458デフォルトの名無しさん2011/12/11(日) 01:33:40.73
まあたぶんテキストエディタで手書きだと思うけど
0459デフォルトの名無しさん2011/12/11(日) 02:15:31.71
xyzzyの罫線モードとかじゃないの
0460デフォルトの名無しさん2011/12/11(日) 04:05:42.47
lispはHaskellなんかと比べるとちゃんとした関数型言語じゃないって言う人がいますが、どうですか
0461デフォルトの名無しさん2011/12/11(日) 04:49:30.79
>>460
副作用のある関数が普通に書けるからじゃろ
0462デフォルトの名無しさん2011/12/11(日) 12:42:42.40
Haskellは副作用をする部分を隔離してるもんな。そこで副作用させてる
から、あるなし論争があるけど、ML系でも異色でちょっと取り扱いづらい
けど人気があるよね。モナド信仰なんだろうかな。サクサク作っていける
部分もある。
0463デフォルトの名無しさん2011/12/11(日) 17:43:52.85
c++とlispはマルチパラダイム言語
0464デフォルトの名無しさん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として保存する関数を作成したいのですが
可能でしょうか?
0465SCHEME餃子 ◆8X2XSCHEME 2011/12/11(日) 20:04:04.39
>>464
read
0466はちみつ餃子 ◆8X2XSCHEME 2011/12/11(日) 20:28:21.93
>>460
関数型とは何かという明確な定義は無いので、ちゃんとしたというのがどの程度のことを言うのかで判断が分かれると思いますね。
Haskell が「純粋関数型」と呼ばれることからもわかるように、その逆の純粋でない関数型もあるわけで。
純粋でないことを以ってちゃんとしてないというのであれば「そうですね」という感じかなぁ。

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

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

あなたがそうしたければ純粋関数型的な語彙を組立ててそのスタイルを貫く自由は与えられています。
0467デフォルトの名無しさん2011/12/11(日) 23:36:25.04
>>465
ありがとうございます
0468デフォルトの名無しさん2011/12/12(月) 06:30:20.68
lispの特徴はS式構文でしょ。
0469デフォルトの名無しさん2011/12/12(月) 11:33:48.29
昔はGCとかSchemeの継続とか強力なOOシステム(Flavors, CLOS)も特徴だったけど、
今は他の言語でも見られるしね。S式+マクロはLisp族だけだね。
0470デフォルトの名無しさん2011/12/12(月) 11:34:43.39
ADTを直接記述出来る事かと。
0471デフォルトの名無しさん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)))
というふうに後ろに挿入したいのですが、
どういう操作をすればよいでしょうか
0472デフォルトの名無しさん2011/12/12(月) 14:57:15.97
>>471
そういうことをやりたくなるってことは、リストが分かってないってこと。
0473デフォルトの名無しさん2011/12/12(月) 19:27:28.75
深いすなあ
0474デフォルトの名無しさん2011/12/12(月) 21:30:27.25
(set-cdr! (last-pair (caddr ls)) (cons ls7 '()))
0475デフォルトの名無しさん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)))
0476デフォルトの名無しさん2011/12/12(月) 22:24:46.15
>>474
意図した通りに動きました!ありがとうございます
0477デフォルトの名無しさん2011/12/12(月) 22:31:47.17
>>475
副作用無しのその動作も魅力的です
ありがとうございます
04784752011/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))
0479デフォルトの名無しさん2011/12/12(月) 22:52:01.53
>>471
リストをひとつのオブジェクトに見立ててるように見えるけど、
そういう場合は、各要素へのアクセサを定義した方が良いよ。
単純になるし、保守性が良くなる。

あるいは、素直にクラスとか構造体、レコードで定義した方が楽。
単なる演習とかならどんな書き方しても良いと思うけど。
04804752011/12/12(月) 23:42:26.08
>>471
具体的に書いてよ。
中高一貫校の中学1年生が英作文の問題を必死こいて解いている子に関係代名詞を使うとシンプルな文章になって
読みやすいよと言われても語彙や文法を知らないのですよ。Web参考書は揃っているんだけどw
0481デフォルトの名無しさん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参考書読んでくれ。
0482デフォルトの名無しさん2011/12/13(火) 00:23:05.99
いや、イディオムってのも変か。パターンとか常套手段でひとつ。

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

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

マジレスすると、CLerだった場合はset-car!をrplacaに読み替えれば分かると思います。
普通は汎変数使うと思うけど。
0486デフォルトの名無しさん2011/12/13(火) 03:25:02.31
schemeは教養だから
CLerは当然schemeぐらい読めるから
0487デフォルトの名無しさん2011/12/13(火) 07:57:52.15
Cは教養だから万行デバッキングできるよね
0488デフォルトの名無しさん2011/12/13(火) 09:49:08.78
racketはset-car!がありません
0489デフォルトの名無しさん2011/12/13(火) 09:50:25.93
set-mcar! があるだろ。
0490デフォルトの名無しさん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
0491デフォルトの名無しさん2011/12/14(水) 08:06:59.33
Racket 速いな。
0492デフォルトの名無しさん2011/12/14(水) 09:29:29.96
そりゃ、JIT搭載だもの。

http://docs.racket-lang.org/guide/performance.html#%28part._.J.I.T%29
0493デフォルトの名無しさん2011/12/14(水) 10:04:57.25
やだ Racket 格好いい……
0494デフォルトの名無しさん2011/12/14(水) 13:17:09.14
既出した気がするけどこういうのもあるよ。
ttp://www.cs.utah.edu/~mflatt/benchmarks-20100126/log1/Gambit_20benchmarks.html
ttp://www.cs.utah.edu/~mflatt/benchmarks-20100126/log2/Benchmarks.html
0495デフォルトの名無しさん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
0496デフォルトの名無しさん2011/12/15(木) 17:39:51.40
http://lisp.soup.io/post/8879455/Still-from-Serial-Experiments-Lain-via-lain
これって、life関数を呼び出すたびにworldを作っているのか…
0497デフォルトの名無しさん2011/12/15(木) 18:37:41.57
>>488
sicpプラグインではあるけど、set-mcar!をエイリアスしてるみたい
0498デフォルトの名無しさん2011/12/16(金) 21:43:56.97
Lisperがgcc on LinuxでCの手習いで何かの分野の処理をやるとしたら何の分野がいいかな?
コーディングがマゾい奴はやりたくない。うひょー、コーディング楽しいって感じの週末にしたい。
0499デフォルトの名無しさん2011/12/16(金) 22:48:59.80
LISPインタープリタの原始的なやつを作る。
0500デフォルトの名無しさん2011/12/16(金) 23:05:37.17
つまらん
0501SCHEME餃子 ◆8X2XSCHEME 2011/12/16(金) 23:17:28.13
そしてその LISP で本格的な LISP 処理系を作る。
0502デフォルトの名無しさん2011/12/16(金) 23:20:12.36
つまらん
0503デフォルトの名無しさん2011/12/17(土) 04:11:27.04
>>498
マルチ死ね
0504デフォルトの名無しさん2011/12/17(土) 04:39:57.42
>>499
だからマゾいの嫌だって言っているでしょ。インタプリタならlispで書いた方が楽でしょ。
Cで文字列処理はしない方が良いと思っているんだけど、偏見かな。
>>501
つまらないし、目的がみえてこない。
0505デフォルトの名無しさん2011/12/17(土) 04:47:17.36
自分で考えたら?
0506デフォルトの名無しさん2011/12/17(土) 04:55:38.30
>504
おまえは499を否定しているがハードウェアべったりの処理系でGC付き言語を組むとかなり楽しいのだが。
GCは奥が深いぞ
0507デフォルトの名無しさん2011/12/17(土) 06:08:02.26
>>504
どうせなにも出来ないから黙っとけ。
0508デフォルトの名無しさん2011/12/17(土) 13:38:40.94
>>504
マゾいのが嫌だっていうから原始的なやつって書いたのに。
そもそも手習いが目的なのに「〜の方が楽」とかアホだろ。
0509デフォルトの名無しさん2011/12/18(日) 00:07:58.23
>>504
>Cで文字列処理はしない方が良いと思っているんだけど、偏見かな。

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

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

;;;仕事でもプライベートでもプログラムを書くのを楽しくするコツは2行目ね
0512デフォルトの名無しさん2011/12/18(日) 02:20:46.27
ずいぶん参考になった
ほんとうにありがとう
0513デフォルトの名無しさん2011/12/19(月) 07:27:48.68
schelogってGPLなの?
schelogをrequireしたらソース公開しないといけないの?
0514デフォルトの名無しさん2011/12/19(月) 09:12:28.02
http://wiki.call-cc.org/eggref/3/schelog
これを見る限りではLGPL
LGPLは(GPLも)プライベートな利用では何の条件も要求しない
頒布する場合に条件が要求されるが、具体的な条件はお前のコードとSchelogを「リンク」する方法による
0515デフォルトの名無しさん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
0516デフォルトの名無しさん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ライセンスの本文を含めれば良いんじゃないのかなー。あと著作権表示。
0517デフォルトの名無しさん2011/12/20(火) 00:32:23.27
>>516
まさに探していた説明です
アプリケーションには任意のライセンスを設定できるのですね
そのうえで使ったライブラリのソースコードのありかとライセンスを表示する
すべきことがわかりました
0518デフォルトの名無しさん2011/12/20(火) 01:55:11.33
ということは
biglooやgambit-CでGPLなライブラリをuseやrequireしたものをCに変換して
Cをバイナリーにした場合はソース公開の義務はないってことでいいのかな
0519デフォルトの名無しさん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
0520デフォルトの名無しさん2011/12/20(火) 03:30:15.93
chickenはeggの分割コンパイルできるんじゃないの?
動的リンクにできそうな予感が
0521デフォルトの名無しさん2011/12/20(火) 11:04:08.18
>>519の最後のリンク先を見ると
LLGPLのライブラリを静的リンクして実行ファイルを作った人は
使ったライブラリのソースコードを(公式サイトだけではなくて)独自に配布しなければならぬ
こう理解したけどこれでいいのかな
0522デフォルトの名無しさん2011/12/20(火) 12:04:43.34
プラグインとかならともかく
動的リンクでも根本機能として必要ならダメだよ
使うのをきっぱりやめた方が早い
0523デフォルトの名無しさん2011/12/20(火) 12:38:42.75
>>520
できるの?
初めて聞いたんだけど
0524デフォルトの名無しさん2011/12/20(火) 14:05:09.96
>>522
それはGPLの話(>>518)だよな?
LGPLの4.d(LGPLv3の場合)では「"Minimal Corresponding Source"と"Corresponding Application Code"の配布」と
「適切な共有ライブラリ機構の使用」のどちらか一つの実行が条件だから
後者を選択した場合はソースの配布は義務付けられないと思うが
0525デフォルトの名無しさん2011/12/20(火) 16:01:16.33
>>521
入手できる手段を保証すれば大丈夫じゃないかな。アクセスできるかが重要なので。
自分は、GitHubとかなら特定リビジョンのリンクの提示だけでいけると解釈してる。
もちろん、配布元が閉鎖とかしちゃったら、自分で配布しなくちゃいけない。
この辺はGPLやLGPLの思想を汲んでおけば、そう大外しはしないと思う。

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

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

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

とか
0549デフォルトの名無しさん2011/12/22(木) 22:44:35.94
納入先がWindows使ってたら、改行コードをUNIXの改行コードにする
改行してしてなくてもいい場所は改行を削除
コメント部分の日本語を全部文字化けさせる
コメント部分に実行ファイルの機械語をASCIIコードに変換して追加
diffの差分ファイルを納入
0550デフォルトの名無しさん2011/12/22(木) 23:03:45.81
それ途中難読化じゃなく処理系を相手にチキンレースしてるだけでは
0551デフォルトの名無しさん2011/12/22(木) 23:18:29.70
納入しなければならないのはきちんと動くけど人間が読めないコード
相手に解読されたら仕事が来なくなる
0552デフォルトの名無しさん2011/12/23(金) 00:25:44.16
せめてLispのケースで話して(><)
0553デフォルトの名無しさん2011/12/23(金) 00:35:06.37
LISPプログラムを他人に渡すなんて、大学の研究室の後輩に渡すくらいしかなかった
当然、究極のスパゲッティにして渡したけど
0554デフォルトの名無しさん2011/12/23(金) 00:37:44.49
カレーが少し余ったんでスパゲティ茹でて一緒に炒めたらおいしかった
0555デフォルトの名無しさん2011/12/23(金) 01:59:19.41
>>553
先輩のプログラム、センス悪いな。糞じゃん
あのひとエラソーにしてるだけだったよな。いなくてせいぜいだ
とか言われてるかも。
0556デフォルトの名無しさん2011/12/23(金) 02:00:16.59
>>554
次は、麻婆豆腐にスパゲティ入れて上にチーズをかけてオーブンで焼いてみ。
0557デフォルトの名無しさん2011/12/23(金) 02:05:49.39
>>555
そのプログラムを即座に改良できるのが俺だけ という優越感
0558デフォルトの名無しさん2011/12/23(金) 03:45:54.90
まあいいんじゃないの
自分で一から書く気になってくれれば
0559デフォルトの名無しさん2011/12/23(金) 03:55:01.34
先輩がせっかくテーブル拭きプログラムを書いたのに姑のようにまたテーブル拭きプログラムを書いていいか、悩まないか。
そういう先輩に限って卒業も飲み会に参加して、「まだあんな(俺の)プログラムを使っているの」とバカにしつつ顔が
喜んでいたりするんだよなあ。
0560デフォルトの名無しさん2011/12/23(金) 22:32:46.08
難読化したソースなんか納入したら検収で落とすだけだが。
当然納入できなかったんだから違約金は払ってもらう。
0561デフォルトの名無しさん2011/12/24(土) 00:55:59.54
お前みたいな奴はマ板に行ってくれ。
0562デフォルトの名無しさん2011/12/24(土) 06:09:07.85
ちょっと遊びで処理系実装してるのだけど
symbolとquoteの実装方法で参考になるコードどこかにないでしょうか
mosh?
0563デフォルトの名無しさん2011/12/24(土) 06:19:30.02
何で実装しているのか、書けよ
0564デフォルトの名無しさん2011/12/24(土) 06:57:54.59
c
0565デフォルトの名無しさん2011/12/24(土) 06:58:35.92
ホビットが
#define long SCM
とかしててびっくりした
0566デフォルトの名無しさん2011/12/24(土) 07:13:22.47
何を参考にしたいのかによるな。
原理的なとこ知りたいならミニマルな処理系がいいんじゃない? tinyschemeとか。
つーてもsymbolは単に辞書に登録した文字列だし、quoteの処理はもっと高レイヤ
なのでLispで書いてあるevalの実装あたりを見ればいいんじゃないか。
0567デフォルトの名無しさん2011/12/24(土) 11:29:44.73
Schemeって他の処理系の定義重複部分をコピペすると書く所ほとんどないのか。
0568デフォルトの名無しさん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がやっている。
0569デフォルトの名無しさん2011/12/24(土) 15:35:57.68
>>568
SICPって何回くらい読むもの?
再来年の年初めぐらいから読み始めようかな。
0570デフォルトの名無しさん2011/12/24(土) 16:09:36.63
難読化なら一度速度優先でコンパイルしてアセンブラをはかせる。
そのコードを今度はCなりLISPなりに戻してやればよいじゃないかと思う。

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

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

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

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

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

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

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

http://cadr.g.hatena.ne.jp/g000001/20100529/1275126086
0588デフォルトの名無しさん2011/12/25(日) 00:41:18.98
まあ普通はPython使うけども、後学のために使ってみた
いずれにせよ書き捨て用だけど
0589デフォルトの名無しさん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ってるように見えることもあるけど、
別に嫌ってないし、一定以上の評価を与えてるから、それは勘違いしないで。
0590デフォルトの名無しさん2011/12/25(日) 01:16:02.46
お前みたいな抽象化された脳みそでは同じに見えるんだろうけど
名前付きの関数と新しい構文では、普通は次元が違うと捉えるだろう

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

>>588
Norvigの話をふと思い出した
((Pythonで) 書く (Lisp) インタプリタ)
http://www.aoky.net/articles/peter_norvig/lispy.htm
0592デフォルトの名無しさん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の処理系作りでいいんじゃねえと思った。いや、むしろ
比較しやすいシステムな気がする。
あと最初に仕様がまったくないシステムなんてないだろ。未知の問題があったとしても既存の
解法のベースがあってそれを応用して解くわけだし。天才数学者をさんざん殺してきたフェル
マーの定理クラスの問題を解くという話なのかな。言語で解ける射程距離って意識下/無意識
下で分かって解くことが始まるから仕様って頭の中にあるよね。
0593デフォルトの名無しさん2011/12/25(日) 10:15:39.39
>>591
Lispインタプリタを実装できないPythonは糞だな。
0594デフォルトの名無しさん2011/12/25(日) 15:10:09.06
>>593
誤読も甚だしい。
0595デフォルトの名無しさん2011/12/25(日) 17:38:24.52
PythonでR5RSを実装できんのかよ。
0596デフォルトの名無しさん2011/12/25(日) 18:22:09.88
できないと思う理由は?
0597デフォルトの名無しさん2011/12/25(日) 18:42:17.58
R5RS準拠Schemeすら実装できない汎用言語って存在し得ないだろw
Schemeよりよっぽど複雑なPython処理系をPythonで書いたりしてるのに。
0598デフォルトの名無しさん2011/12/25(日) 19:15:47.95
よっぽど複雑なPython処理系って具体的に何よ。
0599デフォルトの名無しさん2011/12/25(日) 20:00:19.76
>>598
その解釈はこちらの意図と違う。「よっぽど複雑な」が掛かるのはPython。

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

Lisperももっとエロくなる必要があると思う。pgのeroとかじゃエロさが足りねーよ。
0600デフォルトの名無しさん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
0601デフォルトの名無しさん2011/12/25(日) 20:21:44.31
600ぺりか
0602デフォルトの名無しさん2011/12/25(日) 20:23:45.48
おらの600ぺりかがあ・・・・
0603デフォルトの名無しさん2011/12/25(日) 22:04:57.56
>>599
ooopyもあるんだぜ。そりゃホルスタインは男の夢だが
0604デフォルトの名無しさん2011/12/25(日) 22:05:57.51
質問です。
'((A B C D) (E F G H) ...) -> '(A B C D E F G H ...)
の加工を行いたいのですが、関数をどのように組めばいいですか?
0605デフォルトの名無しさん2011/12/25(日) 22:06:24.57
>>604
appendか?
0606デフォルトの名無しさん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と同じことができる。
0607デフォルトの名無しさん2011/12/25(日) 22:16:22.30
っと。肝心なapplyの例載せ忘れたよ。

(apply #'append '((0 1 2) (3 4 5)))
;=> (0 1 2 3 4 5)
0608デフォルトの名無しさん2011/12/25(日) 22:23:30.49
とりあえず、LispでエロいっていうとS式を受ける引数によく使われるsexpは外せない。
0609デフォルトの名無しさん2011/12/25(日) 22:30:15.72
>>608
cofee-p のあれからいくと...
0610デフォルトの名無しさん2011/12/25(日) 23:36:00.24
mapappendていう関数があったような
なかったような
0611デフォルトの名無しさん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)))))
0612デフォルトの名無しさん2011/12/25(日) 23:54:23.19
sexp と書くのはためらわれるので、自分で書くときは sxp と書いている。
0613デフォルトの名無しさん2011/12/25(日) 23:58:17.69
>>609 nil って答えられると困るじゃないか
0614デフォルトの名無しさん2011/12/26(月) 00:25:28.38
>>609
同性どうしならヤダな。
0615デフォルトの名無しさん2011/12/26(月) 00:45:26.84
PyPi
PyPy
Pychinko
Pypants
0616デフォルトの名無しさん2011/12/26(月) 00:57:03.26
おいおい。パンツまであるとかレベルたけーな。
0617デフォルトの名無しさん2011/12/26(月) 02:38:10.37
pypanもあるぞ
0618デフォルトの名無しさん2011/12/26(月) 03:04:44.40
行列計算ぐらい統一してほしい
(list 'matrix 数値)
とか
(vector (vector 数値))
とか
(vector 数値)
とか

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

リストはインデックスアクセスの計算量的に不利だから、あんま使われんだろうとは思う。
ベクタのベクタと単一のベクタは生成時のコスト以外あんま変わらん気がするけど、
処理系によってベクタの実装に差があると思うから、その処理系で実際試してみないと何とも。
処理系のコード読んでみるのも良いかもしれない。ベクタへのアクセサとかの。
0621デフォルトの名無しさん2011/12/26(月) 16:35:21.51
CommonLispなら組み込みでarrayがあるのにわざわざリストやベクタのベクタ使う意味は?
arrayで型宣言して(speed 3)(safety 0)すればそれなりのコードは出るよ。
Schemeはsrfi-25があるけど、速度はわからん。
0622デフォルトの名無しさん2011/12/26(月) 16:40:12.33
標準で行列演算ならarrayを使うほうが適切だわな。
0623デフォルトの名無しさん2011/12/26(月) 16:57:14.78
キーワードじゃなくて素のシンボル使ってるから多分Schemeっしょ。
Racketはサポートしてるけど、リファレンス実装ぽいなー。
Gaucheはgauche.arrayでSRFI-25とAPIは揃えつつ独自の実装してるっぽいね。
0624デフォルトの名無しさん2011/12/26(月) 17:06:03.87
ところでgauche使いってここに何人いるの?
0625デフォルトの名無しさん2011/12/26(月) 17:07:07.75
gauche以外に何があるんだよ…
0626デフォルトの名無しさん2011/12/26(月) 17:28:08.07
凄い脳味噌
0627デフォルトの名無しさん2011/12/26(月) 19:35:05.74
>>605-
ありがとうございます。
助かりました。
0628デフォルトの名無しさん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が来たら非空白文字まで出力を控え、
非空白が来たときにそれとともに出力という原始的な方法を考えたのですが
もっと効率のよい手法はあるでしょうか
0629デフォルトの名無しさん2011/12/26(月) 21:25:38.35
http://www.suri.cs.okayama-u.ac.jp/servlets2/scm2cpp.rkt
Schme to readable C++
に型推論を導入
まだ未完成だけど時間切れになってしまったのでやもえず公開
0630デフォルトの名無しさん2011/12/26(月) 23:06:07.79
>>628
> もっと効率のよい手法はあるでしょうか

具体的に何の効率なの?
実効速度の事なら、よっぽどまずいコーディングしない限り、
速くなったり遅くなったりする要素は殆どないけれども。
06316282011/12/26(月) 23:22:59.43
>>630
そうなのですか
わかりました
0632はちみつ餃子 ◆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)")))
0633デフォルトの名無しさん2011/12/26(月) 23:40:59.31
cl-lexでもいけそうだけど、本人案でいいでしょ。
0634デフォルトの名無しさん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)
0635デフォルトの名無しさん2011/12/27(火) 00:05:34.41
最後の'(1 2 3)は誤記です
0636デフォルトの名無しさん2011/12/27(火) 00:08:32.94
call/ccでも使えば
0637デフォルトの名無しさん2011/12/27(火) 00:28:53.24
>>636
使いましたがリスト先頭のみ処理されました。
0638デフォルトの名無しさん2011/12/27(火) 00:33:43.11
>>632-633
ありがとうございます。
0639デフォルトの名無しさん2011/12/27(火) 00:53:13.56
≡≡≡≡ 癶( 癶;:゚;益;゚;)癶 カサカサカサ
0640デフォルトの名無しさん2011/12/27(火) 01:55:16.48
AmazonのプログラミングGauche売れとるな
0641デフォルトの名無しさん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は別物のように思えるのですが
0642デフォルトの名無しさん2011/12/27(火) 17:45:55.73
その本は読んでないが、
http://www.jclark.com/xml/xmlns.htm
では足りないのかい?
0643デフォルトの名無しさん2011/12/27(火) 17:49:55.17
俺の記憶にあるのは、
ttp://jp.rubyist.net/magazine/?0012-qwikWeb#l14
これだけだな。

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

字下げ付けないでべたっと生成してるぶんにはさほどでもないが、字下げを付けようとしたら
割と変態っぽくなった記憶がある(まぁPPなんて複雑になりたがるもんだけど)。
06446412011/12/27(火) 22:48:00.53
なるほどわかりました
0645デフォルトの名無しさん2011/12/28(水) 00:16:15.10
「プログラミング不器用な」 が売れてるのか。
0646デフォルトの名無しさん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)
これはどういうことなのでしょうか?
0647デフォルトの名無しさん2011/12/29(木) 13:06:33.10
なんぞ

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

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

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

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

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

0695デフォルトの名無しさん2012/01/11(水) 14:29:27.07
みたいなことはどれでも出来るんじゃね
0696デフォルトの名無しさん2012/01/11(水) 14:47:53.08
shellの標準入力とパイプ入力で扱いが違うらしく
動かないshell コマンドがある
0697デフォルトの名無しさん2012/01/11(水) 16:32:57.47
common lispとscheme(gauche)のソースを見やすくする
javascriptでできたシンタックス・ハイライトはありますか?
webでそれらのソースを見せたいので
0698デフォルトの名無しさん2012/01/11(水) 17:52:28.72
>>697
see demo at http://pygments.org/
0699デフォルトの名無しさん2012/01/12(木) 08:55:25.13
>>696
なにいってんだ?
0700デフォルトの名無しさん2012/01/12(木) 15:22:37.44
>>699
Racketで694に相当するのが(process "cat")だけど
実行してみると何処がおかしいのかわかると思うよ
0701デフォルトの名無しさん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

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

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

なんかは、Lisp界隈で何度か使われてるのを見たことがある。
ただ、厳密に構文解析してるわけじゃないみたいなので、
何かのタイミングでハイライトが崩れる場合もあったと記憶してる。
0708デフォルトの名無しさん2012/01/14(土) 12:53:31.40
>>705-707
ありがとうございます。
>>707のおっしゃるとおり手軽に行いたかったのです
あげてもらったものを試してみます
0709デフォルトの名無しさん2012/01/16(月) 16:31:35.37
ttp://d.hatena.ne.jp/higepon/20120116/1326674950
0710デフォルトの名無しさん2012/01/16(月) 17:13:42.03
ステマスレと間違えたんですね
0711デフォルトの名無しさん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の意味と何らかの関係があるのですか
0712デフォルトの名無しさん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))))))))
0713デフォルトの名無しさん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.
0714デフォルトの名無しさん2012/01/17(火) 17:16:22.14
>>712-713
ありがとうございます。わかってすっきりしました。
0715デフォルトの名無しさん2012/01/18(水) 10:37:22.18
Lispには歴史的価値しかない
Lispからはもう新しいものは生まれない
0716デフォルトの名無しさん2012/01/18(水) 12:24:53.66
うん、過去ログを読めない人にとってはそうだな
0717デフォルトの名無しさん2012/01/18(水) 12:40:32.37
2ch監視し続けないと目に触れないようなもん
大したものじゃないな
0718デフォルトの名無しさん2012/01/18(水) 15:36:39.08
>>715
のお勧め言語は?
0719デフォルトの名無しさん2012/01/19(木) 01:07:41.25
別に新しいの生み出さないでも、
俺一人が気分良く使えればそれでいいし。
0720デフォルトの名無しさん2012/01/20(金) 02:51:38.27
schemeで
文字列 "aabb" から同じ名前の変数に何か割り当てたい
(define aabb "some")
string->symbolで変換しても無理だったのだけど何か方法ないのでしょうか
0721デフォルトの名無しさん2012/01/20(金) 06:39:10.99
適当に加工してevalかマクロ
0722デフォルトの名無しさん2012/01/20(金) 09:01:00.29
関数に値を渡す時
vectorとlistは参照渡し
それ以外は値渡し

なんかすっきりしない
0723デフォルトの名無しさん2012/01/20(金) 09:44:03.25
Schemeに参照渡しなんて無い
0724デフォルトの名無しさん2012/01/20(金) 12:58:50.56
(lambda (x) (set! x))は、xが関数の中にあるのか外にあるのか、分からない
(lambda _ (let ((x (car _))) (set! x)))は分かる
パラメータを宣言するのをやめてローカル変数を宣言すればいい
0725デフォルトの名無しさん2012/01/20(金) 13:11:18.05
誰か>>724を翻訳してくれ
0726デフォルトの名無しさん2012/01/20(金) 13:12:42.87
perl大好き
0727デフォルトの名無しさん2012/01/20(金) 13:39:15.59
RnRS にも載っているように let は lambda に変換されるマクロ
ローカル変数を作ってるのは実は lambda の方
0728デフォルトの名無しさん2012/01/20(金) 14:18:10.31
(my-let ((x 1)) x)
から
((lambda (x) x) 1)
に変換するこんなマクロ一度は作るよね
0729デフォルトの名無しさん2012/01/20(金) 14:23:54.29
参照渡しなんて無いほうがいいと思うなら
引数を評価しないで渡すマクロも無いほうがいいと思うだろうな
0730デフォルトの名無しさん2012/01/20(金) 14:56:52.91
参照渡しと参照の値渡しを混同してるやつが居るな
0731デフォルトの名無しさん2012/01/20(金) 14:58:08.78
Lispは他の言語と比べたら
全くと言っていいほど役に立ってないのに
なんでLisperはあんなに威張りくさっていて態度がでかいんだろう
0732デフォルトの名無しさん2012/01/20(金) 15:03:26.05
↑こんな風に
0733デフォルトの名無しさん2012/01/20(金) 15:03:33.38
下から目線キター
0734デフォルトの名無しさん2012/01/20(金) 15:05:07.77
たしかにバカを相手に威張ってもなんの得にもならないし
ろくなことはない。愚かな行為ではあるな
0735デフォルトの名無しさん2012/01/20(金) 15:11:48.97
>>730
その理論でマクロは説明できないの?
quoteの値渡しとか
0736デフォルトの名無しさん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))))
0737デフォルトの名無しさん2012/01/20(金) 17:12:42.80
自分の役にたって自分だけ金が儲かれば、
世の中の役になんてたたんでええわ。
0738デフォルトの名無しさん2012/01/20(金) 17:58:32.60
>>737
おまえもぉ〜いつかは〜世の中の〜♪、傘になれよと教えてくれた〜♪
0739デフォルトの名無しさん2012/01/20(金) 18:56:03.80
>>736
thisやselfを渡すOOを理解していない初心者はそういう書き方はしない
stackを自由変数にするだろう
0740デフォルトの名無しさん2012/01/20(金) 22:56:51.52
perlのshiftやjavascriptのargumentsのように外部イテレータで書くのが正解っぽいな
引数で混乱するなら戻り値を使え
内部イテレータはオワコン
0741デフォルトの名無しさん2012/01/21(土) 00:44:30.82
最近のコンテンツ産業はプログラミング言語の機能も扱うのか
0742デフォルトの名無しさん2012/01/21(土) 00:53:55.20
LISPを勉強してよかったことは、片方向リストに強くなった
0743デフォルトの名無しさん2012/01/21(土) 00:56:46.62
コンテナ渡し
コンテンツ渡し
コンテナのコンテンツ渡し
0744デフォルトの名無しさん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の唯一の存在価値がなくなってしまった
0745デフォルトの名無しさん2012/01/21(土) 23:39:55.85
Python3って異様に普及していないよなあ。
0746デフォルトの名無しさん2012/01/22(日) 00:15:40.26
Gauche の HEAD が Windows でもスレッドを使えるようになったお。
0747デフォルトの名無しさん2012/01/22(日) 03:06:55.51
schemeでpaipに相当する本ってないの?
0748デフォルトの名無しさん2012/01/22(日) 12:50:39.85
vector-set! があってlist-set!がないのは何故だろう
0749デフォルトの名無しさん2012/01/22(日) 14:13:33.04
R7RSにはあるぞ list-set!
0750デフォルトの名無しさん2012/01/22(日) 14:17:06.57
R7RSは大丈夫なの
R6RSみたくならない?
0751デフォルトの名無しさん2012/01/22(日) 14:39:31.01
大丈夫問題ない
0752デフォルトの名無しさん2012/01/22(日) 14:46:33.01
R6RSとは何だったのか
0753デフォルトの名無しさん2012/01/22(日) 15:14:59.27
一部の暴走
0754デフォルトの名無しさん2012/01/22(日) 15:17:03.43
実用重視とか言ってなかったっけ?そんなにダメなん?
0755デフォルトの名無しさん2012/01/22(日) 15:33:41.72
(set! (cadr '(1 2 3 4)) 5)
0756デフォルトの名無しさん2012/01/22(日) 15:35:37.50
Vistaみたいなもんとか
0757ハンバーグ餃子 ◆8X2XSCHEME 2012/01/22(日) 15:59:42.38
>>748
vector-set! を無いところから作るのは無理だけど、
list-set! を作るのは難しくないのでそれほど困ることは無いはず。
R5RS の時点では言語コアに入れるほどのものじゃないと思われたんじゃないかな。

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

同意。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

この現実に不満があるなら、Schemeのライブラリを同じくらい充実させるしかないねえ。
0811デフォルトの名無しさん2012/01/23(月) 21:30:04.88
SICPをSchemeで教えるかPythonで教えるかって話をしてるところに、
SICPを教えるかライブラリ利用云々を教えるかっていう、関係ありそうで全然別の話を持ち込んでる人が居ますね
0812デフォルトの名無しさん2012/01/23(月) 21:36:19.80
何ヶ月も学習するわけだから
最初にやるSchemeとPythonの言語の大きさの差なんて誤差のうち
むしろ一般人には規模が大きくてもPythonの方が楽に学べそうだ
0813デフォルトの名無しさん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使えよ。
教祖に背くと地獄に行くぞ。
0814デフォルトの名無しさん2012/01/23(月) 23:11:51.34
まだやってんのか
0815デフォルトの名無しさん2012/01/23(月) 23:13:15.55
>811
>787 あたりみるとSICP書いて教えてる本人がいってるんじゃね?
0816デフォルトの名無しさん2012/01/23(月) 23:22:31.56
MITはライブラリがないからScheme使うのやめたってことなのか
0817デフォルトの名無しさん2012/01/23(月) 23:41:14.71
sussmanさんの話だとSICPをやめたのは時代遅れだからで
Schemeをやめたのはライブラリがなかったからか
0818デフォルトの名無しさん2012/01/24(火) 00:25:52.86
古い言語は捨てられ新しい言語が次々と作られる
一方、ライブラリは足りないから古いライブラリは生きのこる
0819デフォルトの名無しさん2012/01/24(火) 00:51:48.31
>>818
> 古い言語は捨てられ新しい言語が次々と作られる

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

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

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

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

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

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

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

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

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

4th では R6RS を前提とした内容に大幅に改定されているはず。
0844デフォルトの名無しさん2012/01/24(火) 19:05:02.20
>>835
非本業プログラマはCL一択でいいと思うんだけどね。gccに匹敵する速さだし、
REPLでelispとも親和性が高い。
>>842
PerlってRみたいに統計関連のツールって豊富なの?
Perlでやると遅くてメモリ食うわで最悪な選択な気がするんだけど。
0845デフォルトの名無しさん2012/01/24(火) 19:37:11.83
>R6RSを前提
えーー
0846デフォルトの名無しさん2012/01/24(火) 19:38:49.24
R6RSってR5RSと比べて全体的にどんな感じで変化した(させた)んでしょうか?
0847デフォルトの名無しさん2012/01/24(火) 19:40:16.84
CLは美しくない
0848SCHEME餃子 ◆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
0849デフォルトの名無しさん2012/01/24(火) 21:13:32.52
CL、Scheme(R5RS)、Scheme(R6RS)、Clojure
利用者の割合はどんなんだろ
0850デフォルトの名無しさん2012/01/24(火) 21:14:06.24
>>841
3版と4版を読んだけど、無難な言語解説書。
深い事は書いてないから、なんたらハンドブック系の価値。
3版なら無料で読める。
http://www.scheme.com/tspl3/

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

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

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

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

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

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

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

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

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

あとはアトムのリテラルの記法がいくつかあるだけで。
0877デフォルトの名無しさん2012/01/25(水) 09:05:18.84
言語の話をしてるんじゃないの?
ご自分で言語なんだがーつってるのにw
08788552012/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をきちんと勉強した事がなく言語の基本要素概念とは何かを真剣に自分で考えようとした事がないのでしょう。

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

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

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

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

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

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

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

つかHTMLがS式だったらよかったのになあ(笑
0890デフォルトの名無しさん2012/01/25(水) 18:38:41.00
>>888
愛だろ、愛
0891デフォルトの名無しさん2012/01/25(水) 18:40:58.82
>>889
世の中の人が欲しているのは
DartとかCoffeeScriptでLispではない
0892デフォルトの名無しさん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の基本概念要素は標準的なな言語が持ちうる概念を網羅している、という主張?
ちゃんと考えると(怪しい)論文ができあがりそう。
0893デフォルトの名無しさん2012/01/25(水) 18:51:23.81
仕様が50ページだから基本要素概念とはなんなのかって突き止められるし、実感できるけど。
www.unixuser.org/~euske/doc/r5rs-ja/r5rs-ja.pdf

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

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

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

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

0919デフォルトの名無しさん2012/01/25(水) 21:36:03.55
冗長なのは括弧を数えるのにエディタ使えと言うのと同じだから
手書き派以外には受け入れられる
属性ズラズラ並べられるのは嫌いだけど
0920デフォルトの名無しさん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 ))))の方が扱いやすいし、冗長な終了タグが
問題なんじゃないの。冗長な終了タグが必要な時ってある? インデントもあるんだし。
0921デフォルトの名無しさん2012/01/25(水) 21:58:31.13
Cの中括弧は複文インデントの文化とネストが比較的緩いから
}}}}}}}}}}こんな連続で閉じて数える事は少ない
つまりLISPは括弧でずいぶん損をしてるという話
0922デフォルトの名無しさん2012/01/25(水) 22:05:08.79
>>920
なんか別スレで迷惑かけてる人と同じ匂いがした
0923デフォルトの名無しさん2012/01/25(水) 22:07:27.06
連続括弧 ))))) とかは、DrRacketみたいなLISP対応エディタ使わないとキツいよね。
0924デフォルトの名無しさん2012/01/25(水) 22:07:54.86
そういえばこんなスレがあった

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

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

これだと3行目だけ見て判る
0926デフォルトの名無しさん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
エディタにやってもらって数えないから。
エディタなしでもカッコが一つ少ないとかは、なんとなくわかるけど。
0927デフォルトの名無しさん2012/01/25(水) 22:09:17.32
>>921
文末に;の方がうざくね?
0928デフォルトの名無しさん2012/01/25(水) 22:13:40.84
すっきりしてるけどもw
いくら単純でも)))))))))))))))うわあああって人もいるよ
色弱な人は色分けされても困るし
0929デフォルトの名無しさん2012/01/25(水) 22:15:10.36
見慣れない人は、これでもかと連打される閉じカッコには狂気を感じると思うw
0930デフォルトの名無しさん2012/01/25(水) 22:50:15.02
短いが正義ならあれだ、みなまで言わない
0931デフォルトの名無しさん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 ))))でいいかな。
0932デフォルトの名無しさん2012/01/25(水) 22:58:18.49
あとそもそも論だけど、ある開始タグ・終了タグを変更したいときって開始タグを変更して、
終了タグを変更するわけでしょ? 面倒くさくない?
0933デフォルトの名無しさん2012/01/25(水) 23:00:47.66
で、さっき思いついたけどS式でも任意オプションで
終了タグを入れられるようにしたらどうかな

(html (head (body (p
blah
/p)))/html)
readのエラー検出は向上すると思う
0934デフォルトの名無しさん2012/01/25(水) 23:14:50.76
うむ、]で半端に区別するよりは良いな
0935デフォルトの名無しさん2012/01/25(水) 23:22:55.71
>>933
うざいだけじゃね?
適切なインデントと対応する括弧へのジャンプができるエディタがあれば括弧なんか無いのも同然じゃろ
0936デフォルトの名無しさん2012/01/25(水) 23:26:11.95
問題は、lengthとかリスト数えるとこでいちいち考慮しないとダメな点だな
readとwriteの対称も維持するとreadで省くのもあれだし
まあ却下だなw
0937デフォルトの名無しさん2012/01/25(水) 23:32:55.78
半端に入れるぐらいなら終了タグ強制のS式と別のデータ構造にした方がいいか
もうこの話はやめるわ
0938デフォルトの名無しさん2012/01/25(水) 23:46:21.31
>>937
現状、>>926のS式がエレガントって話でしょ。
0939デフォルトの名無しさん2012/01/25(水) 23:46:40.43
括弧無しでは格好がつかない
0940デフォルトの名無しさん2012/01/26(木) 00:03:00.75
インデント(タブ)もカッコも同じようなもんだけどね
html
head
body
p blah
0941デフォルトの名無しさん2012/01/26(木) 00:05:03.87
>>940
YAMLかよ!
0942デフォルトの名無しさん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には基本要素概念同士の組み合わせに関してそういう奇妙な制約がほとんどない。(すぐには思いつかない)
そういう意味で個々の基本要素概念は独立で、各々の概念を理解すれば後は自在に組み合わせて使えば良いから明快なのだ。
0943デフォルトの名無しさん2012/01/26(木) 01:52:26.35
Javaは次のバージョンからlambda使えるようになるみたいだよ
0944デフォルトの名無しさん2012/01/26(木) 02:08:36.17
その前にJavaって関数内関数を定義できたっけ?
その関数内だけでよく使う手続きが、関数の外に宙ぶらりんになってるの見るとイラッとくるよね(´・ω・`)
0945デフォルトの名無しさん2012/01/26(木) 02:09:05.31
>>887
CTMを思い出した。そのパラダイムを実現するための
ギリギリ最小の構文は何かという観点から、
宣言的プログラミングに始まり、構文を少しずつ付け足して世界を広げていく本

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

名前なしで定義できないのは確かに面倒。
名付けに必要なエネルギーはbodyを書くそれを上回ることが多い。
0956デフォルトの名無しさん2012/01/26(木) 13:09:29.92
> 書くときに増えるのは20文字。呼び出しで増えるのは4文字。
書くときに増えるのは20文字。呼び出しで増えるのは5文字。
0957デフォルトの名無しさん2012/01/26(木) 15:09:51.28
>>953
こいつでC++コードを生成すればいいだろ
http://www.suri.cs.okayama-u.ac.jp/servlets2/scm2cpp.rkt
0958デフォルトの名無しさん2012/01/26(木) 18:05:36.22
最近meta circular evaluator絡みでは、
Javascript/SpiderMonkeyのRiverTrail拡張が面白かった。
Lisp, Schemeの言語拡張だと、Racketの#langがアドホックだけど面白いね。
このスレではRacketを酷評する人もいるけどw
0959デフォルトの名無しさん2012/01/26(木) 21:05:59.20
>>958
Racketは独自の道を歩んでいる感がなぁ(大抵のlisp族はそうだけどさ)
0960デフォルトの名無しさん2012/01/26(木) 21:15:04.79
Racketって日本語の扱いはどんな具合なの?
0961デフォルトの名無しさん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になってからは触ってないので知らん。

聞くよりは試した方が手っ取り早いと思う。
0962デフォルトの名無しさん2012/01/28(土) 09:24:20.85
愛昆布
0963デフォルトの名無しさん2012/01/28(土) 11:52:11.03
Schemeでclisp位の機能を持った処理系は有りますか?
Racketは高機能すぎてもう少しシンプルなのがよいのですが・・・
guileやgausheはタブコンプリーションや矢印キーが使えなくて使い難いです。
0964デフォルトの名無しさん2012/01/28(土) 12:23:14.04
>>963
それは処理系の機能というより環境の話だなあ。
gaucheなら、Emacsで誰かが補完つきのgauche-modeってのを書いてた気がする。
矢印のヒストリならコマンドラインでrlwrap使ってもいいし。
swankは誰か書いてたっけ?
まあ、そういうのを自分で揃えなくちゃならないのが面倒ってのはわかる。
09659632012/01/28(土) 13:22:32.06
rlwrapをインストールしてみましたがこれは便利です!
有り難う御座いました。

emacsだと便利な機能は豊富そうですがemacsは使っていませんし、此れだけの為にインストールしたくありません。
0966デフォルトの名無しさん2012/01/28(土) 14:11:04.32
>>963
guile1系とgaucheを使えばいいいんだよ。
0967デフォルトの名無しさん2012/01/28(土) 14:46:34.09
readlineをwrapすればいいんだよ
0968デフォルトの名無しさん2012/01/28(土) 15:04:53.75
windowsでschemeのパーサー機能を利用したプログラムを配布したいです
clispならこうするようですが
http://stackoverflow.com/questions/25046/lisp-executable
schemeでexe化できるのはありますか?
0969デフォルトの名無しさん2012/01/28(土) 15:22:44.60
Chickenかbiglooが便利。
gaucheでもgauche-statifierを使えば一応は出来る。
0970デフォルトの名無しさん2012/01/28(土) 16:24:19.87
>>965
rlwrap gauche でぐぐれば、gaucheの関数名補完できるようにする方法も出てくるよ。
0971SCHEME餃子 ◆8X2XSCHEME 2012/01/28(土) 17:03:30.76
>>968
exe って言うからには Windows での話ってことでいいのかな。
Gauche のソースコードの中にある mingw-exify が使えると思う。
これは見ればわかる通りコードを文字列のまま埋め込むだけのものなので期待しているものかどうか。
http://gauche.git.sourceforge.net/git/gitweb.cgi?p=gauche/Gauche;a=blob_plain;f=src/mingw-exify;hb=HEAD
Windows では gauche-install や gauche-config 等が exe になってないと使い勝手が悪いので用意したということみたい。

ライブラリをプリコンパイルするための機構である precomp を使う方法もある。
http://gauche.git.sourceforge.net/git/gitweb.cgi?p=gauche/Gauche;a=blob_plain;f=src/precomp;hb=HEAD
これは C のコードを生成するのでそのまま gcc 等でコンパイルすることは出来る。
(C のコードと言っても Gauche VM 用のバイトコードが形式として C になるだけ。)

どちらの方法でも VM やライブラリの結合までは面倒見てくれない。
exe 化というのがどの程度のことを期待しているかにもよるけど、
今のところコマンドひとつ、関数ひとつで全工程をやってくれるような都合の良いものは無い。
Gauche のソースコード自体をいじることも含めればどんなことでも出来る可能性はあるわけだけど、
それが出来るくらいならこんなところで訊きもしないだろうしなぁ。

自分が作ったプログラムに必要な部分をピックアップして同梱するのが手っ取り早い配布方法じゃないかな。
0972デフォルトの名無しさん2012/01/28(土) 17:21:13.49
>>969
ありがとうございます。
gnupackのcygwin経由でchickenをインストールし
http://www.h7.dion.ne.jp/~samwyn/ChickenDoc/Getting%20started.html
にしたがってcsc -o palindrome palindrome.scmとしたら実行バイナリができました

ですが、chickenを入れていないパソコン用に
静的リンクしたスタンドアロン型実行バイナリを作ろうとして
csc -o palindrome -static palindrome.scm
とすると gcc: /usr/bin/libchicken.a: no such file or directoryとなります
調べたら/usr/lib/libchicken.aがあったのでこれを使うようchickenのコンパイラに伝えたいのですが
http://www.h7.dion.ne.jp/~samwyn/ChickenDoc/Using%20the%20compiler.html
を見てもどう設定するかわかりませんでした
どうすればよいでしょうか
0973デフォルトの名無しさん2012/01/28(土) 17:27:11.38
>>971
はい。windowsを想定してました。
そうなるとcのコードで書き出してgccでexe化することが
無難かと思うようになりました。
0974デフォルトの名無しさん2012/01/28(土) 17:38:20.72
>>972
マニュアルの「コンパイラの使い方」の中の「生成された C ファイルを配布する」の節。
Cのソースを吐かせて、gccでコンパイル。
0975デフォルトの名無しさん2012/01/28(土) 17:41:53.68
>>974
そうするしかなさそうですね。ありがとうございました。
09769632012/01/28(土) 17:44:10.34
>>970
関数名補完も出来る様になり凄く便利に成りました。
有り難う御座いました!
0977デフォルトの名無しさん2012/01/28(土) 18:21:35.65
>>975
ごめん、-L<DIR> でcscに直接渡せるっぽい。
http://www.h7.dion.ne.jp/~samwyn/ChickenDoc/csc.html
chickenはドキュメントがそれなりに揃っているのに、リンクや参照が悪いんだよな。
マニュアルもチュートリアルで検索に不便だから、何とかならないものか。
0978デフォルトの名無しさん2012/01/29(日) 15:05:24.39
slimeみたいにタグジャンプをschemeでもしたい
0979デフォルトの名無しさん2012/01/29(日) 15:20:52.13
gambit-c もcを生成してくれるな
0980デフォルトの名無しさん2012/01/29(日) 15:37:17.44
次
Lisp Scheme Part34
http://toro.2ch.net/test/read.cgi/tech/1327819028/
0981デフォルトの名無しさん2012/01/29(日) 15:39:53.88
大儀であった
0982デフォルトの名無しさん2012/01/29(日) 23:24:23.00
racketもバイナリ吐いてくれるな
0983デフォルトの名無しさん2012/01/30(月) 09:50:35.68
>>977
キーワード site:wiki.call-cc.org/manでググる
0984デフォルトの名無しさん2012/01/30(月) 10:42:52.41
gaucheって日本語も普通に使えるけど、日本語のsymbolもeq?で判定出来ますよね?
0985デフォルトの名無しさん2012/01/30(月) 11:14:16.69
>>983
ググれば出るけど、マニュアルはもっと構造的に作るべき。
無いと思って調べなかった機能が別のページで見つかったりする。
0986デフォルトの名無しさん2012/01/30(月) 16:13:42.46
ここじゃなくて開発者の目の届く場所で指摘するべき
0987デフォルトの名無しさん2012/01/31(火) 00:47:34.95
SICPの時代は Pascal < Scheme だったようだが結局両方駄目になりそうだ
争いは同じレベルの者同士なんだな
0988デフォルトの名無しさん2012/01/31(火) 01:06:59.30
>>987
くわしく
0989デフォルトの名無しさん2012/01/31(火) 01:40:00.84
易しくするのが教育だと思ってるような教育用言語は駄目だ
0990デフォルトの名無しさん2012/01/31(火) 02:23:12.02
>>987にはPascalのどこが駄目だったかわかるまいな
0991デフォルトの名無しさん2012/01/31(火) 03:29:24.98
どこがダメだったかと言われると、
なかなか難しいかもしれない
0992デフォルトの名無しさん2012/01/31(火) 03:40:50.07
C言語に似せればPascalはまだまだいけるよ
0993デフォルトの名無しさん2012/01/31(火) 06:24:04.59
プリプロセッサマクロを駆使した、Pascal に似ている C言語なら、見たことがあるなぁ…。
0994デフォルトの名無しさん2012/01/31(火) 11:44:42.80
>>993
それをCだからメンテしてっていわれたときは死んだわw
0995デフォルトの名無しさん2012/01/31(火) 12:57:36.93
ようやっとLisp慣れしてきたらxml系のマークアップが苦痛になってもうた
なんであんなめんどくさい書式なんじゃー!

;;;と絶叫したくなったので書いた、ちょっとだけ反省している
0996デフォルトの名無しさん2012/01/31(火) 13:04:56.69
VisualStudioみたいな自動補完環境がないとxmlみたいなものは無理
0997デフォルトの名無しさん2012/01/31(火) 13:59:32.26
マークアップが多いのではなく
少ない生データを無駄に水増しするマークアップが苦痛だ
0998デフォルトの名無しさん2012/01/31(火) 14:09:17.74
sxmlで書いて変換するんだ。何バレやしないさ。
0999デフォルトの名無しさん2012/01/31(火) 14:42:31.08
((lambda(x)(x x))(lambda(x)(x x)))
1000デフォルトの名無しさん2012/01/31(火) 14:44:19.45
その後のメンテを考えるとねぇ……
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。