2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

Lisp Scheme Part33

1 :デフォルトの名無しさん: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/

2 :デフォルトの名無しさん:2011/10/09(日) 18:00:51.76
>>1
おつおつ

3 :デフォルトの名無しさん:2011/10/09(日) 23:25:08.72
>>984 前スレ
> おれquicklispには非常に期待してるんだ。ネイティブコンパイラのある言語で、
> ああいうライブラリ管理がある言語って、実は少ないんじゃないかしら。
どういうこと?
機能としてのadsfとの違いがわからない。
quicklispの方がインストールできる率が高いぐらいの認識だわ。
Linuxディストリのパッケージ管理ソフトのapt系やyum系やemerge系やArchLinuxのpacman(yaourt)系みたいなことってadsfでできないの?
Perlとかはどうなん?

4 :SCHEME餃子 ◆8X2XSCHEME :2011/10/10(月) 00:05:26.51
システムがどうこうよりも結局はリポジトリのメンテナンスにどれだけ手間をかけれられるかって話だよね。
Scheme だと
http://home.gna.org/dorodango/
http://snow.iro.umontreal.ca/
あたりがそれなりに使えるかな。
使ったこと無いけど。

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

そういや higepon 氏の言ってた SPON ってどうなったんだろ。
http://wiki.monaos.org/pukiwiki.php?R6RS%2F%BD%B8%C0%D1%BD%EA%2F%A5%A2%A5%A4%A5%C7%A5%A2

5 :デフォルトの名無しさん:2011/10/10(月) 02:09:04.89
>>3
パッケージ管理で気に入ってるのはLeiningenのclojarsリポジトリかな
もの凄く楽

6 :デフォルトの名無しさん:2011/10/10(月) 09:14:13.99
>>3
quicklispは依存するライブラリをリポジトリからネットワーク経由して勝手に取ってくるよ。
(要はyumとかaptみたいに)
asdfってそんなことできたっけ?

7 :デフォルトの名無しさん:2011/10/10(月) 12:57:52.63
>>6
それはさすがにできる。
検索機能があったかは、ようわからん。

というか、他の仕事でSBCLを触れていなくて、どんどん忘れていく。
作りたいもの、いっぱいあるのになあ。

8 :デフォルトの名無しさん:2011/10/10(月) 14:54:53.33
Clojureだけど、仕事で使える自分は幸せなんだなぁ


9 :デフォルトの名無しさん:2011/10/11(火) 19:33:47.11
Common Lisp では型宣言出来るみたいだけど、Scheme で型宣言出来るような方言ある?

10 :デフォルトの名無しさん:2011/10/11(火) 19:45:32.63
Chickenならforeign-lambdaの戻り値に型指定が必要だから似たようなことができる

11 :デフォルトの名無しさん:2011/10/11(火) 20:36:23.21
Typed Scheme なんてのも

12 :デフォルトの名無しさん:2011/10/11(火) 20:49:06.85
>>11
今は Typed Racket になってるみたいだな。
http://docs.racket-lang.org/ts-guide/index.html

Racket は敬遠してたけど、ちょっと手を出してみる。

13 :デフォルトの名無しさん:2011/10/12(水) 01:35:30.13
>>9
KawaいいよKawa

14 :デフォルトの名無しさん:2011/10/12(水) 01:58:11.38
>>12
へー、Type Inference(型推論)がある。暗黙変換あるのかな。

15 :デフォルトの名無しさん:2011/10/14(金) 19:12:51.52
関数の返値を

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

values って何のためにあるの?

16 :デフォルトの名無しさん:2011/10/14(金) 19:20:18.20
>>15
http://practical-scheme.net/wiliki/wiliki.cgi?Scheme%3A%E5%A4%9A%E5%80%A4

17 :デフォルトの名無しさん:2011/10/14(金) 19:32:10.44
>>15
卑近な例だと整数の除算とかだと便利
CLだとtruncate


18 :デフォルトの名無しさん:2011/10/14(金) 19:40:14.29
>15
ハッシュを扱った例を調べてみな。nilがデータ内のnilかデータ内で無いことを
返すためのnilかで使われとる。
たちを扱えるようになってきたら初級から脱却ぢょ。

19 :デフォルトの名無しさん:2011/10/14(金) 21:41:44.00
動的言語の最適化がしにくい関係で使うものっぽい?

20 :デフォルトの名無しさん:2011/10/15(土) 00:32:43.06
ほとんどのコンパイラはvaluesの結果をリストにせずスタックに積んで返すだけ。
だから明示的にリストにして返すよりメモリ消費が少ない。
だからリフティングにも便利。

21 :デフォルトの名無しさん:2011/10/15(土) 02:13:36.59
>>7
ちょっと遅い反応だけど。

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

そのASDFの枠組みに乗っかって、ライブラリの導入を自動化するのが、
ASDF-InstallやQuicklisp。こちらはCPANやRubyGemsとかと同じ層の枠組み。
ライブラリの自動ダウンロードや検索をするのはこっち。

22 :デフォルトの名無しさん:2011/10/15(土) 03:01:38.28
>>15
性能が必要なとき、コンシングを避けるために使える。
>>16のリンク先にもあるけど、意味論上の理由を無視すれば、
単に性能への要求が全て。同じことは大体はリストでもできる。
Schemeでの(values)とかの例外を除いて。

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

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

って言ってる。

23 :デフォルトの名無しさん:2011/10/15(土) 03:43:18.97
普通に考えれば構造体でも定義して返せばいいわけだし、
わざわざ特殊なものを積極的に使う理由にはならないなあ
>>18の例にしてもnilと区別したいならノードを返すとか他にいくらでも方法はあるわけで

24 :デフォルトの名無しさん:2011/10/15(土) 05:45:53.17
>>23 何かにラップして返すと、受ける側でアンラップしなきゃならん。
変数に束縛する場合はdestructuring-bindとかパターンマッチが使えるが、
最初の値だけそのまま他の関数に渡したい場合などは一手間余分にかかるし。
それから、APIの互換性を保ったまま後付けで余分な値を返すようにできるのは
仕事でコード書いてると重宝する。単独の値→構造体へと戻り値を変更したら
呼び出してるところ変えて回らないとならないからなあ。

Schemeの多値は二番目以降の値を無視するような使い方ができないので
性能上の要求以外で使うメリットはあまり感じないが。


25 :デフォルトの名無しさん:2011/10/15(土) 08:20:06.53
CLの多値は使わない分を捨てられたり、足らない分をnilで補ってくれて嬉しいんだけど、
たまに、一部の値を返し忘れてるのをnilにされちゃって、バグの原因に気付けずに頭がおかしくなって死ぬ。

26 :デフォルトの名無しさん:2011/10/15(土) 10:18:16.19
>>23
特殊かなぁ? 謎だ。Haskellのように、Maybe/Eitherを定義すればできるけど


27 :デフォルトの名無しさん:2011/10/15(土) 11:11:16.05
>>23
「わざわざ××でなくても○○でいい」という主張は説得力に欠けると思う。
××と○○のどちらに重みを置くかで簡単に逆転するもの。
実際、「わざわざ多値でなくても構造体でいい」という主張に対して >>24 は「わざわざ構造体を使うより多値」って反論だろう。
だけどこの反論は「手間」に焦点をあてて重みを具体的に主張してるのでそれなりに説得力がある。

こういうときには構造体の方が手間が小さいとか、こういうときは手間をかけてもなお構造体の方がいいとか、
「多値を使う理由がない」よりも「構造体を使う理由がある」で主張してくれた方が良い議論になりそうな気がする。

28 :デフォルトの名無しさん:2011/10/15(土) 14:27:36.16
じゃ言うけど、
多値で返す値は順番に依存してるのが良くないんだよ
構造体は名前を使えるぶん間違いが少ないし順序を変えたりするのも楽
それとSchemeで性能とか言われても説得力がない
構造体返しても最適化のレヴェルはほぼ同じだし
どうすかね

29 :デフォルトの名無しさん:2011/10/15(土) 15:59:30.79
下らねえ。

30 :デフォルトの名無しさん:2011/10/15(土) 17:11:17.71
↑そういう応えしか返ってこないんなら反論無しと受け取るよ

構造体はそれ1つを知ってればいいが、
多値は関数それぞれが何を返すのか知ってないといけないのに加えて、
その順番には何の根拠もないから仕様変更に弱い
後で何か付け足す場合とか考えないのかな?
普通に考えれば積極的に使う物ではないという判断に至ると思う

31 :デフォルトの名無しさん:2011/10/15(土) 17:15:52.57
だから多値を推すなら名前付きにしろって思うんだよ
関数引数にも言える事だけど

32 :デフォルトの名無しさん:2011/10/15(土) 17:21:13.23
まあ、関数の引数が見逃されてきたのは、
呼び出し側のインターフェースで引数を強制してるからだけどね
可変長引数の使いにくさを見れば多値がいかに迂闊なインターフェースか判ると思う

33 :デフォルトの名無しさん:2011/10/15(土) 17:46:07.45
多値のせいで例外処理みたいなすっ飛んでく処理とか複雑になってしまわない?
例外受け取っても何が入ってるか判らんとか
R6RS以降追ってないけど

34 :デフォルトの名無しさん:2011/10/15(土) 17:46:34.57
順番に依存よくないな!Scheme みたいな狭い世界じゃなくて、
数学の世界を名前付き引数に改革しようぜ!

35 :デフォルトの名無しさん:2011/10/15(土) 18:01:15.40
(set! result (lambda() (values 1 2 3)))
result => 1
(ref-values result 0) => 1
(ref-values result 1) => 2
(ref-values result 2) => 3

とかw
嫌んなっちゃうな

36 :デフォルトの名無しさん:2011/10/15(土) 18:03:24.20
おっと、括弧が1たりないw

37 :デフォルトの名無しさん:2011/10/15(土) 18:06:35.96
つまり多値がファーストクラスでないのがいけねえんだってことね

38 :デフォルトの名無しさん:2011/10/15(土) 18:50:21.53
>>35
何でdestructuringするマクロ使わんのだ。
単にreceiveとかcall-with-valuesの下でリストやベクタ、
構造体を使えば良いだけで、他からは隠蔽できる。

この辺の話は全部>>16と参照元に書いてるよ。

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

40 :デフォルトの名無しさん:2011/10/15(土) 19:22:02.14
>>28 >>30
Schemeでの性能の話に説得力がないとか言われてもなー。
現実で業務とかに使ってる人もいるし、StalinとかはCLの処理系と戦えると思うけど。

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

41 :デフォルトの名無しさん:2011/10/15(土) 19:32:30.73
被ったw

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

関数の引数と同じで、固定できる部分は複数の値で、他は抽象化されたものを。
そんなにおかしい話かな?

42 :デフォルトの名無しさん:2011/10/15(土) 19:58:36.30
すっごく素朴な疑問で悪いんだが、多値で使われなかった値って、
そのうちGCされる、って理解で正しい?

43 :デフォルトの名無しさん:2011/10/15(土) 20:01:41.48
>>42
CLの場合だとスタックに戻されるような実装(コンパイラ)が多数を占めてるからGC対象ですらない。


44 :デフォルトの名無しさん:2011/10/15(土) 21:12:49.10
値渡ししかできないわけじゃないんだし
効率重視なら多値なんて使わない方がいいけどな

45 :デフォルトの名無しさん:2011/10/15(土) 21:18:53.43
関数から戻るたびにmake-*するよりはましかと。

46 :デフォルトの名無しさん:2011/10/15(土) 21:37:39.88
副作用を使っちゃうと、状態を変更する関数を呼んだ後に以前の状態を必要とする可能性がある場合、
オブジェクトをコピーしないといけないから、副作用を伴わない多値のが効率が良いこともあると思うよ。

47 :デフォルトの名無しさん:2011/10/15(土) 21:42:48.51
多値についてたちが悪い議論はもうやめようよ。

48 :デフォルトの名無しさん:2011/10/16(日) 02:23:55.43
call/ccで単純に関数の中途で大域脱出し、
デバッグ用途(イミディエイト機能のような)に使いたいのですが、
例を教えていただけませんか。
いまいちcall/ccを使うタイミングがわからないのです

49 :デフォルトの名無しさん:2011/10/16(日) 08:48:09.05
>>48
イミディエイト機能って何? ググってもわからなんだ。
Chez Scheme とかではエラーのときにデバッグモードになるけど、あんな感じのこと?
汎用的に作るのは難しいか出来ないと思うけど、とりあえず使用例みたいなので目的とするところを示してくれんか。


50 :デフォルトの名無しさん:2011/10/16(日) 11:24:47.21
>>49
ベクターを操作する巨大な関数です。
一ループごとに文字列を読み込み、見合った操作をして文字列の先頭を削り再帰します。
(define interprit
(lambda (program memory offset)
(cond
((eqv? programの先頭 #\a) 処理)
...
)
;*ここで脱出*
(interprit 削ったprogram memory offset)
)
)
ループする毎に継続をset!して脱出し、
処理を確認したら戻りたいです

51 :デフォルトの名無しさん:2011/10/16(日) 12:18:26.79
>>50
「処理を確認」をもう少し詳しく。

なんとなく、ブレークポイントを設定してローカルな変数を見たいのかな、
とか思うんだけど、どうなんだろう。

52 :デフォルトの名無しさん:2011/10/16(日) 13:40:15.08
>>51
大域変数を確認したいです。

53 :デフォルトの名無しさん:2011/10/16(日) 14:31:14.00
最初はcondないの内部処理は、各条件ごとの内容をそれそれ別関数にまとめて
作って、ひとつの関数から、cond条件わけの関数とそれぞれの関数に分けて作った
ほうが最初はいいよ。そのほうが読みやすくなるので。
何もかも一つでやらそうとするのはあまりいい傾向だとは思えない。

54 :SCHEME餃子 ◆8X2XSCHEME :2011/10/16(日) 15:49:08.11
>>50
その処理を一般化すると「ループからジェネレータへの変換」と考えられる。
これがそのまま使えると思う。
http://practical-scheme.net/wiliki/wiliki.cgi?Scheme%3agenerator%E3%81%A8do%E3%81%A8while#H-3put3dsr6wpqj
call/cc を使う典型的な例なので call/cc の解説の中では似たようなコードはよくある。

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

そういや限定継続って規格に入ってないし、 srfi にもなってないっぽいなぁ。
racket には shit と reset だけじゃなくていくつかのバリエーションがあるみたいだね。

55 :デフォルトの名無しさん:2011/10/16(日) 22:34:38.91
>>53-54
くわしくありがとうございました。

56 :デフォルトの名無しさん:2011/10/16(日) 23:05:42.50
余談ではありますが、
call/ccとdelayを用いてpromiseを返却し、逐一動作が出来ました。

57 :デフォルトの名無しさん:2011/10/17(月) 01:32:57.33
gambitcやchikenでvalues使うと大幅に速度が上がるっていうなら
できるだけ使うように心がけるかな


58 :デフォルトの名無しさん:2011/10/18(火) 11:18:56.17
>>54
糞コテは巣に帰れ

59 :デフォルトの名無しさん:2011/10/18(火) 17:32:08.25
>>58
SCHEME餃子の巣はやっぱSchemeスレなんじゃね?

60 :デフォルトの名無しさん:2011/10/23(日) 09:16:03.19
shibuya.lisp はどーだった?

61 :デフォルトの名無しさん:2011/10/23(日) 10:59:49.40
クロージャスレから引越しというか。
授業が奥乃先生と複数担当態勢だったりしたのは引き継ぎの目的もあったのかな。

最終講義のアナウンスがあるとしたら年明けかな?

62 :デフォルトの名無しさん:2011/10/23(日) 11:51:45.52
>>60
Shibuya.lisp TT#7の動画をニコニコ動画とYouTubeにアップしました。
http://www.nicovideo.jp/mylist/28336529
http://www.youtube.com/playlist?list=PLEAB9C327450DA7D3

63 :デフォルトの名無しさん:2011/10/23(日) 14:03:45.42
某氏と某氏のトラブルも収まったのかな。 Shibuyaでは喋らんと言ってたけど
良かったんじゃない?

64 :デフォルトの名無しさん:2011/10/23(日) 15:11:06.90
一応当時、熱くなって申し訳ない、みたいな感じで本人謝罪してたよ。
あとは、相手もう運営側から手を引いてるし。

何にせよ、また出てくれたのは良かったね。

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

それと、映像はもう直接PCに繋げちゃってもいいような気がする。

66 :デフォルトの名無しさん:2011/10/23(日) 21:16:06.97
でかい会場のスクリーンでは見えるけど、中継では見づらい、という場面で
ズームしたり、身振りが入った説明をしてるのでカメラを振ったり、という時に
中継担当者の手間が増えるので、そのへんは微妙かも。

67 :デフォルトの名無しさん:2011/10/23(日) 23:00:51.42
>>66
多くは発表資料も公開してるからそっち見ながらでだいたい問題ないかもな。

68 :デフォルトの名無しさん:2011/10/23(日) 23:25:29.76
これだけ後からスライドの画像を入れてるけど、こういうのはやっぱ結構手間かかるのかな。
http://www.nicovideo.jp/watch/sm5008319
見易さ的には好ましいとは思うけど、
資料見ながら聞けば済む話ではあるからそこまでするほどのもんでもないって言えばそうだしなぁ。

69 :デフォルトの名無しさん:2011/10/24(月) 01:45:38.40
なあ、Monaの開発は順調さ build5
http://hibari.2ch.net/test/read.cgi/os/1314741952/

70 :デフォルトの名無しさん:2011/10/24(月) 06:22:17.84
スライド画像で差し替えるのは、ページ送りをプレゼン時と同じタイミングにするのが結構難しいです。
元映像見ながらだとなんか微妙にずれるので、わずかに入っているスペースキーを叩く音とかを手がかりにしてました。

あと、音声についてはいつも悩ましくて、人により声質やマイクの持ち方が違うのでなかなか安定しません。
あまりに聞き取りづらいのは、編集時にボリューム変えてますけど、あまりやり過ぎると雑音まみれの変な音になるので悩ましいところです。
発表者の机の上にボイスレコーダを置いておいて、あとから合成するのがいいと思うけど、これもマーカーみたいなのがないと合わせるのがちょっと難しかったり。


71 :デフォルトの名無しさん:2011/10/24(月) 08:23:17.05
UST中継では入力オーバーっぽいノイズ入ったりしてたよね。

72 :デフォルトの名無しさん:2011/10/24(月) 08:41:33.58
音割れしてるのがひとつあって、体調も悪かったからそのまま切っちゃったんだけど、
あれは音量の調整のミスなのか、発表者の声が大きすぎたのか。

さておき、いつも動画アップロードお疲れ様です。

73 :デフォルトの名無しさん:2011/10/24(月) 10:02:52.03
ヘッドセットやピンマイクで強制するとか?
いや、そういう面倒な事こそLISPを活用してだな

74 :デフォルトの名無しさん:2011/10/24(月) 10:23:17.45
どう頑張ろうと声の大きさを一定にすることは無理でしょ。声出してるのが
プロのアナウンサーとかじゃないんだから。

最初のAD変換で音が割れたりしてたらリカバリーのしようがないので、
そこの機材で入力レベルの調整をすればいいんだけども。

75 :デフォルトの名無しさん:2011/10/24(月) 11:01:09.37
・マイクを違う距離に数台用意してマルチトラック録音して後で選別する
・音圧拾ってレールかなんかで距離を自動調節する装置を作る

76 :デフォルトの名無しさん:2011/10/24(月) 14:07:01.53
PCMレコーダーに自動レベル調整機能が付いてるものがあるようだけど、
PCだと難しいんかな?

77 :デフォルトの名無しさん:2011/10/25(火) 00:08:48.51
細かいこと気にすんなよ
音割れしてたら見るのやめる程度の内容なんだから

78 :デフォルトの名無しさん:2011/10/25(火) 06:29:44.08
RIP

79 :デフォルトの名無しさん:2011/10/25(火) 06:45:30.26
ご冥福を祈ります。

80 :デフォルトの名無しさん:2011/10/25(火) 07:57:08.33
ジョブス、リッチーに続いてマッカーシーまでもか。

R.I.P.

81 :デフォルトの名無しさん:2011/10/25(火) 08:07:00.76
ttp://jp.techcrunch.com/archives/20111024creator-of-lisp-john-mccarthy-dead-at-84/
えええええ

82 :デフォルトの名無しさん:2011/10/25(火) 08:19:07.05
こんどはマッカーシーが天寿を全うしたのか。
RIP

83 :デフォルトの名無しさん:2011/10/25(火) 13:07:35.50
>>77
 発 者 同         . 。_   ____           争
 生 同 .じ     .    /´ |  (ゝ___)          い
 .し 士 .レ      .__/'r-┴<ゝi,,ノ   ro、      は、
 .な で .ベ      ∠ゝ (ゝ.//`   ./`|  }⌒j
 .い し .ル        } ⌒ /`ヽ、_∠l,ノ ・ヽ´
 .! ! か の       /  ´..:.} >、、___,  .r、 ソ、`\
             /   ..:.:.}   /   |∨ ` ̄
            /   ..:.:./    |   丶
           / _、 ..:.:.:.{    .{.:.:.   \
          {   ..:Y  .ゝ、   {.:.:.:.:.    ヽ
          |、  ..:/ 丿 .:〉   >.- ⌒  .  ヽ
          / {. ..:./ ソ ..:./  .(    ..:.:.:`  ..:}
         ./..:.:}.:.:./ ヘ、 ..:./   .\ ..:.:r_,ノ、.:.:}
        ./..:.:/|.:/   {.:./     X.:.:}.}   X X
        /..:.:/ .}.:|    }:/       .Y丶ヽ  Y.:Y
  . __/.:/ { }  《.〈、     _,,__>.:》丶   Y.:\
  /.:.:.:.:.::/   !.:.:ゝ  ゝ.:. ̄ヾ ´:.:.:.:.:.:.:.:.:ヾゝ   \.: ̄>

84 :デフォルトの名無しさん:2011/10/25(火) 13:30:32.58
あびしーえる1.0リリースだって
http://abcl-dev.blogspot.com/2011/10/abcl-100-released.html

85 :デフォルトの名無しさん:2011/10/25(火) 13:32:20.92
http://hatsukari.2ch.net/test/read.cgi/news/1319513713/
ν速にはスレが立った。マ板はまだだが。

86 :デフォルトの名無しさん:2011/10/26(水) 23:40:12.57
某声優ユニットの方も7月で活動終わってた
QEPD

87 :デフォルトの名無しさん:2011/10/29(土) 12:46:50.75
http://toki.2ch.net/test/read.cgi/scienceplus/1319679294/

88 :デフォルトの名無しさん:2011/10/29(土) 22:21:58.66
GCもマッカーシー由来だったの

89 :デフォルトの名無しさん:2011/10/29(土) 22:30:15.52
(define (f x)
(define-macro (bl)
'(if (> x 0 ) #t #f))
(bl)
)
(f 10)

racketでは動くけど、他の処理系ではやっちゃいけない?

90 :デフォルトの名無しさん:2011/10/29(土) 22:34:59.75
そもそもdefine-macro自体がRnRSにないので、
あんま気にしても仕方ないと思う。

91 :SCHEME餃子 ◆8X2XSCHEME :2011/10/30(日) 00:28:17.17
define-macro は RnRS で提供して無いけど、
R6RS では簡単に define-macro を実装できる。
典型的な実装例はこんな感じ。

(define-syntax define-macro
(lambda (stx)
(syntax-case stx ()
((_ (macro . args) body)
#'(define-macro macro (lambda args body)))
((_ macro transformer)
#'(define-syntax macro
(lambda(stx2)
(syntax-case stx2 ()
((k args (... ...))
(let ((v (syntax->datum #'(args (... ...)))))
(datum->syntax #'k
(apply transformer v)))))))))))

これなら >>89 のようなことは問題なく出来る。

でもまぁ Scheme 的には let-syntax を使う方が楽ではあるだろうね。

92 :デフォルトの名無しさん:2011/10/30(日) 00:29:23.88
なんだよボーイズラブって

93 :デフォルトの名無しさん:2011/10/30(日) 03:34:57.41
限定継続使われてないからメモリーリークしてたんかね
http://groups.google.com/group/plt-scheme/browse_thread/thread/a310b7cba8fae651/fa85558e8a5115bf

94 :デフォルトの名無しさん:2011/10/30(日) 05:02:08.64
じゃあこんなのも問題ないのね
でも `[`(,,op ,'y) あたりがうまく動いてくれない

(define (g x)
(define-macro (tmpl op) `[`(,,op ,'y) (list y ,op)])
(match x
[`(- ,z) (list z '-)]
(tmpl '+)
)
)

95 :デフォルトの名無しさん:2011/10/30(日) 12:47:34.04
>>91
各処理系がdefine-macroをどう実装してるかが問題なんだから、
RnRSでdefine-macroをどう実装するかはこの場合関係ないだろ。
独自の定義でオリジナルを上書きして差異を吸収するってんなら別だけど。

96 :94:2011/10/30(日) 13:34:27.93
結局、期待通りに動きませんでした。何がいけないのかよくわからない。

(define-syntax tmpl
(syntax-rules ()
((_ op)
[(list op y) (list y op)])))

(define (g x)
(match x
[`(- ,z) (list z '-)]
[(list '/ z) (list z '/)]
(tmpl '+)
[_ 'else]
)
)
(g '(/ 8))
(g '(+ 10))
(g '(- 12))
(g '(= 19))

97 :デフォルトの名無しさん:2011/10/30(日) 14:12:11.24
何を期待してるのか判らんから助言しようもないが、
matchの仕様を見るにpat部分は普通の評価はされない場所だから
何か勘違いしてるんだろ。例えばパターンの最初の2行は
[(- z) (list z '-)]
[(/ z) (list z '/)]
でいいんじゃないかと。
tmplもそう書き直せば多分動くでしょ。
全く確認してないが。

98 :デフォルトの名無しさん:2011/10/30(日) 14:13:55.83
あ、だからpat部分は評価されないからダメだよ
出てくるシンボルは「パターン変数」になるそうだから。仕様よく読め。

99 :デフォルトの名無しさん:2011/10/30(日) 18:50:28.04
おまいらそんなに括弧が好きなの?
かっこつけんなよ。

100 :SCHEME餃子 ◆8X2XSCHEME :2011/10/30(日) 20:16:14.53
>>99
そのダジャレは面白いと思って書いてんの?

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

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

マクロが要らないならプログラマが直接S式で書く意味はあんまり無いと思う。
見難いと感じないならデメリットも特に無いとは思うけど。

101 :デフォルトの名無しさん:2011/10/30(日) 21:23:48.25
templated match macroとか作ったら論文になるんだろうか
どんな雑誌に投稿するのか知らないけど

102 :SCHEME餃子 ◆8X2XSCHEME :2011/10/30(日) 23:31:17.46
ずいぶん前の話だけど、 Active Basic スレで正規表現ベースの構文定義を提案してた奴がいたなぁ。
あんまりフリーダムでも困るけど、 Lisp の場合は結局はS式だから、それがちょうどいい枷にもなってる気がする。

103 :デフォルトの名無しさん:2011/10/31(月) 00:16:26.42
個人的には、演算子の優先順位をなくせるという利点も推したい。

他にも、パースしやすかったり、式単位での編集を実装する目印になったり、
S式の利点は案外ある。特に、式単位で編集できないと困る人多いんじゃない?


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

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

編集が式単位っていうのは良く挙げられるけど、他の言語でも単位が違うだけで何らかの塊はあるわけで、
実際にその塊単位での編集や移動も出来るわけで、開発環境のサポート次第じゃないかな?


105 :デフォルトの名無しさん:2011/10/31(月) 01:54:05.12
S式は構文木を表しているから、逆に機械的に元の文脈を読み取り辛い気がする。
つまり、IDE泣かせ。開きカッコの直後に、どんな候補だせばいいんだろう。
IDE使わないからどうでもいいけど。S式好きだし。

106 :デフォルトの名無しさん:2011/10/31(月) 02:22:18.54
S式で書くとコードがツリー状になるから,切り取るときの目安にしやすい,と思う.
インデントされていればそれがよりはっきり見えるし.
命令型のコードは,意味を成すコードの塊を抜き出すのがかったるいと感じる.

107 :デフォルトの名無しさん:2011/10/31(月) 12:08:16.87
括弧と頭のシンボルでほぼ全てを表現してるから
文脈の探索自体は楽なんじゃないかと思うけど
問題はマクロの処理かな
マクロ内で定義したキーワードとかが候補に出ないんでは
あんまり意味がないだろうし
展開したものを逆に辿っていくのは難しい

108 :デフォルトの名無しさん:2011/11/03(木) 00:28:51.31
goshです。
質問です。
数ページにわたるCGIがあり、POSTパラメータを渡すのですが、継続を渡せないかとかんがえています。
中途から処理を再開すれば、無駄無くプログラミング出来ると思ったからです。

Q1.継続はなんらかの形でコンテナ化して保管できますか?
Q2.継続は一度インタプリタが終了しても有効ですか?

109 :デフォルトの名無しさん:2011/11/03(木) 00:34:12.31
両方無理。手続きの時点でできないので、継続も無理。

110 :SCHEME餃子 ◆8X2XSCHEME :2011/11/03(木) 01:01:48.77
>>108
継続そのものをシリアライズするのは原則として無理です。
継続には環境フレームやら何やらがぞろぞろとくっついていて処理系の内部構造と不可分なので、
もしやろうとするなら、処理系が最初からシリアライズを強く意識した実装にする必要があります。

Gambit だと出来ますが、実用するなら不要な環境を捕捉してしまわないようにかなり注意が必要で、あまり簡単とは言えないようです。

111 :デフォルトの名無しさん:2011/11/03(木) 02:21:46.20
オブジェクトの印字表現が全て決まってたら簡単だったのにねえ
つまんない制限だよねえ

112 :デフォルトの名無しさん:2011/11/03(木) 03:09:32.82
Schemeオブジェクトが全て印字/読み込み可能だったとしても、環境フレームからは
openしているファイルディスクリプタだの何だのが間接的に参照されてるから
そう簡単にはいかないよ。

113 :108:2011/11/03(木) 18:17:31.61
>>
そうですか…残念です。
とにかくありがとうございます。

114 :デフォルトの名無しさん:2011/11/03(木) 20:03:38.36
結局継続がファーストクラスなんて役に立たないってこった

115 :デフォルトの名無しさん:2011/11/03(木) 21:19:02.42
たしかにバカの役には立たない

116 :デフォルトの名無しさん:2011/11/03(木) 22:41:25.16
kahua とかは?

117 :デフォルトの名無しさん:2011/11/03(木) 23:23:33.61
Kahuaとかはアプリケーションサーバとかの層のプロダクトなので、
基本的に起動し続け、継続をシリアライズしたりする必要はないよ。

継続を活用したウェブ開発をする場合、CGIだと厳しいと思う。

118 :SCHEME餃子 ◆8X2XSCHEME :2011/11/04(金) 00:23:44.47
>>106
意味的な単位と表記上の単位が一致しやすいってことですね。
Lisp だと小さい単位で書きがちということもあって納得です。

119 :デフォルトの名無しさん: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

120 :デフォルトの名無しさん: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

121 :デフォルトの名無しさん:2011/11/04(金) 19:37:26.64
宇宙全体をシリアライズできなくても
地球全体をシリアライズすれば十分

122 :デフォルトの名無しさん:2011/11/04(金) 21:10:14.05
ありんことみじんこじゃ全然違うと思いますけどー
永続化する場合こんどはインスタンスの管理の問題があるけど

123 :SCHEME餃子 ◆8X2XSCHEME :2011/11/04(金) 22:32:53.69
何を言いたいのかわかんねーよ。
比喩を持込むのはなるべく避けろってのは議論の基礎だろ。
もうちょっと具体的に言ってくれんか。

124 :デフォルトの名無しさん:2011/11/05(土) 00:35:36.71
餃子がそれを言うのかw

125 :デフォルトの名無しさん:2011/11/05(土) 00:44:10.21
餃子でもシュウマイでもいいじゃないか。by Lispトムヤンクン

126 :デフォルトの名無しさん:2011/11/05(土) 08:42:02.91
もしかし継続って、外出しできてこそ本領発揮するんじゃないのか?
最初から仕様にもりこんでおけば今頃は超有名になってたよ

127 :SCHEME餃子 ◆8X2XSCHEME :2011/11/05(土) 12:55:12.57
>>124-125
行者って書こうとして間違えたんじゃないんだからねっ!!

128 :デフォルトの名無しさん:2011/11/05(土) 12:59:27.30
行者だと無条件であぼんされそうだから餃子でよかったと思う

129 :デフォルトの名無しさん:2011/11/05(土) 13:03:13.19
>>123
なんでときどきDQN口調になるんだよw

130 :SCHEME餃子 ◆8X2XSCHEME :2011/11/05(土) 13:22:34.67
>>129
煽らないとすぐに過疎るからだよ。
極論を書いたりするのも反論してみろっていう煽りだよ。
言わせんな恥ずかしい

131 :デフォルトの名無しさん:2011/11/05(土) 14:40:38.83
餃子のせいで昨日の夜餃子食べたくて大変だった。

部分継続をシリアライズして、HTMLに埋め込むっていう、上で出てた論文は面白かった。
みんな色々考えてんだねー。

132 : ◆QZaw55cn4c :2011/11/05(土) 14:47:50.97
>>130
(^^)

133 :デフォルトの名無しさん:2011/11/05(土) 15:36:31.64
>>130
あんたがそこそこ勉強してきた人だってこと多くの人がわかってんだから
煽らんでもいいよ。それより食らいつくネタを考えたり、拾ってきたり
するといいよ。そのほうが健全なスレになる。by Lispトムヤンクン

134 :デフォルトの名無しさん:2011/11/05(土) 15:49:02.65
継続外出しはR7RSで
いつでも再開できるのがSchemeの常識に

135 :SCHEME餃子 ◆8X2XSCHEME :2011/11/05(土) 16:07:36.48
>>133
俺が勉強してたらどうして煽りが要らないんだ? 意味わかんね。

議論しようぜってのはサイエンス的にもエンジニアリング的にも民主主義的にも美徳だろ。
俺に間違いがあるってのなら、反論しろよ。 意見を出せよ。
議論自体を拒否するのは不誠実だぞ。

136 :デフォルトの名無しさん:2011/11/05(土) 16:16:36.44
>>135
何もわかってない奴が盛り上げよう?あるいはかまってもらおうと
する場合は煽りという選択肢を選びがちという事だよ。あなたの
場合は、その選択肢を選ばなくても他の選択肢で十分盛り上げられ
る技量を持ってるでしょと言ってるだけ。by Lispトムヤンクン

137 :デフォルトの名無しさん:2011/11/05(土) 16:46:04.28
とりあえず行間はうめといたからこれで趣旨はわかるだろう。
最後に、餃子には期待してるよ。

138 :SCHEME餃子 ◆8X2XSCHEME :2011/11/05(土) 16:53:07.53
継続をシリアライズしたりプロセスをまたいで移送したりできたら夢が広がりんぐ。
>>112 も言うようにポートのような外部とのインターフェイスだとか、
破壊的な処理だとかを考えなければ関連するデータを全部書出せばいいだけなので
いくらかの (かなり大きな「いくらか」だと思うけど) 制限有りでよければ出来そう。
というか、 Gambit 等ではやってるわけですし。

規格にするならあとはその制限をどのレベルにするのが妥当かって話ですよね。

139 :SCHEME餃子 ◆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! したら既に書き出したクロージャにも波及したりしたら面白いとか思った。
面白いだけで使いどころがないし非現実的だけど。

無難な落とし所としてはあくまで書き出した時点の環境ってことにするしかないかなー

140 :SCHEME餃子 ◆8X2XSCHEME :2011/11/05(土) 17:08:41.15
Petite Chez Schme の 8.4 を入れたらイメージをダンプするオプションが無くなってたよ。
かわりに --compile-imported-libraries なるオプションが出来てた。
R6RS の実行モデルに合わせて変えたってことだと思うけど、
--boot オプションはあるんだよな。 暫定的な処置ってこと?
教えてエロいひと

141 :デフォルトの名無しさん:2011/11/05(土) 17:23:26.90
>>139
「書き出す」っていうのは従来のファイルシステムを想定してると思うんだけど、
その想定は妥当なの? OS自体が一つのSchemeの実行イメージに載ってて、
メモリが自然に永続化されるようなモデルならそういうことも可能かもしれない
(効率との折り合いはあるけど)。Smalltalkの環境みたいな。


142 :139:2011/11/05(土) 17:50:35.07
今、サブマシンからの書き込みなのでトリップ無しで御免。

>>141
非現実的ってのはそこんところですね。
出力先を特殊なデータベースとかにするのも、
言語でそこまで踏み込むのは Scheme らしくないし。
さすがにこのへんは余興というか、面白いだろうなーという妄想レベルの話です。

143 :139:2011/11/05(土) 17:57:18.27
>>141
書き出すこと自体については可能だと思います。
Common Lisp なんかでは実行中のイメージをダンプしたりは普通ですし、
それをクロージャに繋がってるところだけに限定するか、
無理なようなら効率を無視してまるっと書き出すとか出来るでしょう。

144 :デフォルトの名無しさん:2011/11/05(土) 18:19:45.22
SchemeでFizzBuzzってどこまで小さくできるの?

145 :デフォルトの名無しさん:2011/11/05(土) 22:01:38.08
>>142
一瞬サブマシンガンに空目した。

146 :デフォルトの名無しさん:2011/11/05(土) 23:10:28.83
http://golf.shinh.org/p.rb?FizzBuzz
ここでは、77バイト

147 :デフォルトの名無しさん:2011/11/06(日) 04:30:49.03
>>145
俺漏れも

148 :SCHEME餃子 ◆8X2XSCHEME :2011/11/06(日) 08:55:42.40
>>136
知るかボケ
にちゃんねるに何を期待してんだ?

ガキは家へ帰ってパパのチンポでもしゃぶってろ

149 :デフォルトの名無しさん:2011/11/06(日) 10:45:52.49
>>148
ひどいなw
これ言われたら超屈辱的だわwww

150 : ◆QZaw55cn4c :2011/11/06(日) 10:54:33.95
ままのおっぱいじゃないんだ‥‥‥。

151 :デフォルトの名無しさん:2011/11/06(日) 11:18:43.42
ナッパさまのクンッ!が必要だな

152 :デフォルトの名無しさん:2011/11/06(日) 14:06:19.58
123 名前:SCHEME餃子 ◆8X2XSCHEME [sage] 投稿日:2011/11/04(金) 22:32:53.69
何を言いたいのかわかんねーよ。
比喩を持込むのはなるべく避けろってのは議論の基礎だろ。
もうちょっと具体的に言ってくれんか。

148 名前:SCHEME餃子 ◆8X2XSCHEME [sage] 投稿日:2011/11/06(日) 08:55:42.40
>>136
知るかボケ
にちゃんねるに何を期待してんだ?

ガキは家へ帰ってパパのチンポでもしゃぶってろ


153 :SCHEME餃子 ◆8X2XSCHEME :2011/11/06(日) 14:11:56.96
いや…その書込みは別に意味はねえ ただの悪意よ

154 :デフォルトの名無しさん:2011/11/06(日) 14:37:34.53
処理系がシステム巻き込んでクラッシュするようなプログラムを出してこそ、悪意。

155 :デフォルトの名無しさん:2011/11/07(月) 15:54:39.42
>>153
悪意はある反面あなたの精神的な未熟さだけは理解できました。
By Lispトムヤンクン

156 :デフォルトの名無しさん:2011/11/07(月) 16:06:06.82
>>149
当事者としてはすこぶる不愉快だが、2ちゃんだからこの程度のことは書く
人がいてもおかしくはないですからね。トムヤンクン
実際に対面して同じ事を目の前で言えるような人とは思えないし、
そこまで肝がある人じゃないだろう。それができるのが2チャンです。
心理的に不安定な人という印象だけが残ってしまったのも事実なのです。
これ以上は時間を捨てるようなものであり、オフトピでもあるので
これで失礼します。

157 :デフォルトの名無しさん:2011/11/07(月) 17:32:10.79 ?2BP(0)
>>156
何この粘着君。
空気読まない奴だと思ったらわかった上で乱してんのか。
タチ悪いわー

158 :デフォルトの名無しさん:2011/11/07(月) 20:18:07.26
>>157
自己紹介してんじゃねえよ

159 :デフォルトの名無しさん:2011/11/07(月) 22:01:30.77
30過ぎるとタチ悪くなるよ

160 :デフォルトの名無しさん:2011/11/08(火) 21:59:49.89
数ある(のかどうかわからないけど)関数型言語であえてLISPを選ぶ理由って何?
それと関数型って言うとLISPの他はMLっぽいのが多い気がするけど他の系統ってどんなのがある?

161 :デフォルトの名無しさん:2011/11/08(火) 22:03:20.53
LISPをマルチパラダイムやで?

162 :デフォルトの名無しさん:2011/11/08(火) 22:03:29.71
LISP「は」

163 :SCHEME餃子 ◆8X2XSCHEME :2011/11/09(水) 00:42:50.37
>>160
どういうものを関数型って呼ぶかは明確な定義があるわけじゃありません。 でも Scheme や CL はマルチパラダイムを標榜してはいますね。 LISP 族の中には純粋関数型のものだってあると思いますが、それは少数派。
関数型的な特徴は「プリミティブ」であって、その上に様々なパラダイムを載せられるのが LISP の強力な点だとされています。
例えば Java だって関数型のアプローチでプログラムすることは出来ます。 C++ を定理証明に使うアイデアもあります。
http://www.kmonos.net/wlog/102.html#_0103091022
でも、 Java は関数型ではなくて、 C++ は定理証明器ではありません。 何故なら、そういった書き方はプログラマがそういうパターンに沿って書くことが一応可能であるということであって、そのように書くための道具 (語彙) を作ることが難しいからです。
つまり、抽象度の違いです。 Java は手続的なアプローチに抽象化する道具は揃っていますが、そうではないパラダイムを持ち込もうとすると言語のサポートは望めないのです。
一方で、 LISP はどうでしょうか? SICP にあるような Prolog もどきや回路シュミレータを見ればわかるように、一旦ライブラリを構築してしまえば「もはやそういう言語であるかのように記述できる」のです。
これらの差が生じるのは、一般的な言語における抽象はそれぞれの言語ごとでのパラダイム (クラスとかテンプレートとか) が単位であるのに対し、 LISP ではS式という「記法」が単位であるからだと私は考えています。
あらゆるパラダイムをひとつの言語で実現できて、時には混在もできるというのは圧倒的な強みになると思います。 それが、私が LISP (Scheme) を好む理由です。 下手するとカオスになるというデメリットと隣りあわせではありますけどね。

164 :デフォルトの名無しさん:2011/11/09(水) 00:56:34.33
>>163
そのトリップ、SCHEMEはともかく8X2Xって何?

165 :デフォルトの名無しさん:2011/11/09(水) 01:09:43.02
>>163
JavaとかCだと、文と式があって、言語の拡張=文の追加・変更が難しい。
LispはS式で統一されてるので、Lisp自身の拡張が容易、ってのが大きいんじゃないかな?

166 :デフォルトの名無しさん:2011/11/09(水) 01:09:51.42
>>164
あまりだろ。

167 :SCHEME餃子 ◆8X2XSCHEME :2011/11/09(水) 07:19:31.37
>>164
16倍ってことだよ

168 :デフォルトの名無しさん:2011/11/09(水) 07:42:05.03
16bit

169 :デフォルトの名無しさん:2011/11/09(水) 12:10:28.17
理屈ではそうだけど
現実世界で圧倒的に役に立っているのは
JavaやC++なんだけどな

170 :デフォルトの名無しさん:2011/11/09(水) 12:15:21.47
ずいぶん狭い現実世界だな

171 :デフォルトの名無しさん:2011/11/09(水) 13:20:04.76
餃子の相手をする人の相手をすることはない

172 :デフォルトの名無しさん:2011/11/09(水) 15:31:18.24
やあ、言語の寿命が心配なのか?

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

S式。
ろっと、驚かせてしまったようだな。
これは他の言語で言う、演算子でも文でもない。
いわばS式だけが作り出せる構造体だ。
ただ実行するだけでなく、データとして取り出せる。
例えば、この無数の括弧。気を付けろ、数えると一瞬で悟ってしまうぞ。
悟りとは何かだって?
ハハハハ、それは昨日言っただろう?
あ、すまない。君にとっては明日の出来事か。
いや、もっと先だったかもしれないな。
その日が来たら、また説明しよう。

173 :デフォルトの名無しさん:2011/11/09(水) 16:22:15.67
ttp://xyzzy.s53.xrea.com/reference/wiki.cgi?p=interactive
これの
interactive {INTERACTIVE-STRING {PARAMETER}*|LIST}
っていう引数の書き方はなんなんでしょうか?
正規表現的なようでよく分かりません

174 :デフォルトの名無しさん:2011/11/09(水) 18:34:02.30
>>170
どこの現実世界にいるんだよ
おまえは

175 :デフォルトの名無しさん:2011/11/09(水) 18:39:34.59
アシタカ「LISPは死なないよ.構文木そのものだから」

176 :デフォルトの名無しさん:2011/11/09(水) 19:03:51.75
つ AST

177 :デフォルトの名無しさん:2011/11/09(水) 22:39:53.45
なんだかんだ言って、結局はLispだけ残ってきたわけだしね。

178 :デフォルトの名無しさん:2011/11/09(水) 23:21:14.60
>>163
そもそもなんでトリップ付けてんの?
NGワードに設定しやすくていいけど。

179 :デフォルトの名無しさん:2011/11/09(水) 23:47:03.41
>>173
波カッコ{} オプション
スター* 0回以上の繰り返し
縦棒| または
つまり、引数は無くても良い。ある場合は次の2つのうちのいずれか一方。
INTERACTIVE-STRINGの後ろに0個以上の任意個のPARAMETER
LIST

BNFってやつかな。

180 :デフォルトの名無しさん:2011/11/10(木) 00:12:37.84
Lispを使うと普通のやつらの上を行けますか?
また具体的にどのように上を行くのでしょうか?


181 :デフォルトの名無しさん:2011/11/10(木) 00:17:37.91
上をいけたのは他の言語が未成熟だった昔の話
今じゃ下にしがみつくのがやっと

182 :デフォルトの名無しさん:2011/11/10(木) 00:18:01.22
※行けと言うだけであり、行けることを保証するわけではありません
※具体的な方法は確認されておりません

183 :デフォルトの名無しさん:2011/11/10(木) 00:21:30.75
>>177
俺が業界に入って以来VBも残ってるよ
俺が業界から去っても多分残ってると思うよ
そういうスパンで区切ると他の言語でも別に問題ないと思えてくる

184 :デフォルトの名無しさん:2011/11/10(木) 00:32:58.75
普通のやつらの上を行けで思い出したけど
彼の作った言語はどうなったんだ
名前忘れて思い出せないけど

185 :デフォルトの名無しさん:2011/11/10(木) 00:34:29.97
ちょっと前curlって言語があったな

186 :デフォルトの名無しさん:2011/11/10(木) 03:13:45.23
>>184
Arcは普通にバージョンアップとかされながら、
一部の人に使われてるみたいよ。


187 :デフォルトの名無しさん:2011/11/12(土) 00:46:31.15
SBCL始まったな。

http://random-state.net/log/3529868963.html

188 :デフォルトの名無しさん:2011/11/12(土) 12:40:45.36
gaucheでsxmlをhtmlに書き出したいのですが、分からないことがあります

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

Gauche:SXMLとSXPath

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

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

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

このあたりを見てみましたが、どれを使えばよいのかよく分かりません
よろしくお願いします

189 :デフォルトの名無しさん:2011/11/12(土) 13:41:55.63
gaucheのさぽせんに聞け

190 :SCHEME餃子 ◆8X2XSCHEME :2011/11/12(土) 17:53:44.33
>>188
読んでわからなかったのなら他の人もわからない可能性が高いので、
WiLiKi の初心者の質問箱に書いたほうが後続の人のためになるかもね?
俺もSXMLのモディファイヤを使うのは始めてなので本当にこれが正しいのかよくわからないけど、
試してみた感じではちゃんと動いた。

;; 必要なライブラリを use する
(use sxml.tools)
(use sxml.sxpath)
(use sxml.ssax)

;; テスト用に元になる sxml を作る
(define sxml
(ssax:xml->sxml
(open-input-string "<xml><h1>2</h1><h1>3</h1></xml>")
'()))

;; id を生成するジェネレータ
(define id-maker (let1 x 0 (^() (inc! x) `(id ,#`"L,(counter)"))))

;; sxpath で対象ノードを抜き出してそこに id を追加
(for-each (cut sxml:set-attr! <> id-maker) ((sxpath "//h1") sxml))

;; これで id がついてるはずなので確認してみよう
(write sxml)

191 :デフォルトの名無しさん:2011/11/12(土) 18:43:04.34
>>188
SXMLは基本リストを使った単なるツリーなので、
ツリーを操作するのと同じで問題ないよー。

>>190みたいに副作用で破壊的に変更しても良いし、
map-unionとかで走査して、置き換えても良いし。


192 :デフォルトの名無しさん:2011/11/13(日) 00:14:17.95
JavaScriptでStalinみたいな(JIT含む)コンパイル時型推論の成果が取り込まれてるのかー。
LLVM経由の下流でも使えるなら、成果共有できればいいのにな。

Fast and Precise Hybrid Type Inference for JavaScript
http://people.mozilla.org/%7Elmesa/ti-draft.pdf
The Impact of Optional Type Information on JIT Compilation of Dynamically Typed Languages
http://www.masonchang.com/storage/papers/dls05-chang.pdf

193 :デフォルトの名無しさん:2011/11/13(日) 10:01:22.66
取り込まれてるレベルじゃなくて、
この分野はJavascriptがJavaと
一緒に最先端を形成してる。
pluginによる言語機能も
メタサーキュラーJITに組み込まれる
実装が広く出回り始めたり。

194 :デフォルトの名無しさん:2011/11/13(日) 10:58:26.37
Gaucheのtext.html-liteで
特定の条件を満たした時に
複数のHTML:p手続きを実行?するにはどうすればいいのでしょうか
例を出すと
(when test (HTML:p "foo") (HTML:p "bar"))
のように書くと、最後のbarのみが出力されてしまいます
意図しているのはどちらも出力させることです

195 :デフォルトの名無しさん:2011/11/13(日) 11:42:13.97
>>194
どうせ最終的に write-tree するんだろうから、↓でいいんじゃないか?

(if test (list (html:p "foo") (html:p "bar")) '())

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

>>195みたいにリストで括るか、html:divとかで括るかすれば良いよ。

197 :デフォルトの名無しさん:2011/11/13(日) 22:29:00.85
>>190-191
ありがとうございます。
sxpath の使いどころの流れが見えてきました。
いろいろと試してみます。

198 :デフォルトの名無しさん:2011/11/13(日) 22:57:40.66
竹内関数で音楽生成 - aikeの日記
http://d.hatena.ne.jp/aike/20111112

Fruity Wrapper ってソフトを使っているみたいだけど、
takの再帰処理毎に3和音を生成->アルペッジョを生成てなことをしているのかな
tak関数のこういう使い方は思ってもいなかったので面白い

199 :デフォルトの名無しさん:2011/11/13(日) 23:11:59.47
ほかの使い方は思っているのかよ

200 :デフォルトの名無しさん:2011/11/13(日) 23:44:45.49
>>199
普通のプログラマがtak関数の応用について1%考えているとして、
がんばって考えた人が2%だとすると、98%ぐらい考えられていないからなあ。

201 :デフォルトの名無しさん:2011/11/14(月) 00:08:19.53
まあどうでもいい

202 :デフォルトの名無しさん:2011/11/14(月) 03:15:01.10
>>198
メガデモ的でもあるな、なんかちょっと感動した

203 :デフォルトの名無しさん:2011/11/14(月) 06:40:13.56
インタプリタとかで、関数の再帰呼び出しの性能を評価する
マイクロベンチマークとしては割と見かける部類だと思う

204 :デフォルトの名無しさん:2011/11/14(月) 08:42:59.60
ベンチマークとしてならGabrielベンチマークとしてLisp界隈だとド定番だし、
他の言語のベンチマークでも見かけるくらいにはメジャー。

205 :デフォルトの名無しさん:2011/11/14(月) 09:04:53.88
そーなのCAR

206 :デフォルトの名無しさん:2011/11/14(月) 11:37:05.16
EclipseのSchemeのプラグインってないのかな。
エンジンはGauheを使えたらさらにうれしいのだけど。

207 :デフォルトの名無しさん:2011/11/14(月) 11:51:54.50
ggrks

http://sourceforge.net/apps/wordpress/schemeway/

208 :デフォルトの名無しさん:2011/11/14(月) 11:53:30.09
やっぱSchemeWayしかないのかな。
ぜんぜん日本語情報がないよね。

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

そもそも英語の情報だって、最悪辞書見ながら読めば普通に意味が分かる程度には読める。
日本人なら誰でも長年英語勉強してるんだから。

210 :デフォルトの名無しさん:2011/11/14(月) 16:48:15.26
>>209
話者・使用人口で語るのは間違いだろうなあ。人口1,200万人ならそう言って問題ないだろうけど。欧
米の言語を無理やり方言とすると、漢字の方言とすると日本と中国は中国のおかげで人口的には勝って
いる。

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

日本語環境が遅れるのはIT政策を3年ぐらいの経済対策として消費してしまったのが一番の原因だと
思うよ。もっと長いスタンスでIT分野を応援していればこうはならなかったんじゃないかな。FreeBSD
とか、2000年あたりはかなり活発だったよね。雑誌もいっぱいあったし、書籍も多かった。Redhat,
TurboLinux, Vine linux等の名前は知っていたけどインストールしていなかったな。Vine以外の日本語
環境はどうだったの?

211 :SCHEME餃子 ◆8X2XSCHEME :2011/11/14(月) 17:59:50.55
>>210
おいおい。 それを方言としてまとめるのは無茶すぎだろ。 jk

212 :デフォルトの名無しさん:2011/11/14(月) 18:50:46.58
>>192-193
Javaってひょっとして静的型推定なのでGCがある以外はC++とあんま変わらない?
確かに高速になったとは聞いたけど

213 :デフォルトの名無しさん:2011/11/14(月) 19:07:56.88
Javaは速くなければならないというお金に直結する緊急課題が昔からあった
LISPには特に無かった

結局流れるお金の量なわけです

214 :デフォルトの名無しさん:2011/11/14(月) 20:56:12.69
>>213
Javaはなぁ、VisualAgeのScratchエディタがEclipseにも乗っていればよかったのにとつくづく思う
REPLみたいなこと出来てアレでの開発はCPU食う代わりに効率よかったんだけどな

215 :デフォルトの名無しさん:2011/11/14(月) 21:16:39.53
Eclipseのスクラップブックじゃダメなん?

216 :デフォルトの名無しさん:2011/11/14(月) 22:08:56.12
>>210
この阿呆はLispスレに何しに来たんだよ……。
言ってることもやってる場所も何もかも間違ってて突っ込み切れない。

方言として認識すれば日本語でドキュメント書いてくれるヤツが増えるのか?
後半の段落は1960年に発表されたLispに関係あるのか?

217 :194:2011/11/14(月) 22:11:59.71
>>195-196
なるほど、listでくくると処理が楽そうですね。

218 :デフォルトの名無しさん:2011/11/14(月) 22:13:42.75
>>212-213
SBCLも速い。
まあベンチなんて所詮遊びだけど…
http://shootout.alioth.debian.org/u64q/which-programming-languages-are-fastest.php

219 :デフォルトの名無しさん:2011/11/15(火) 00:33:23.33
>>216
批判は誰でもできるんだよ。じゃあ、日本語環境が厚くないのは、なぜ?

220 :デフォルトの名無しさん:2011/11/15(火) 00:48:14.18
http://www.kokoro-yamai.com/category/%E7%97%87%E7%8A%B6%E7%B7%A8/%E3%82%AD%E3%83%AC%E3%82%8B
>人がキレるのは、前頭葉のコントロール能力が弱くなっているからではないかと、専門家の間で言われています。


221 :デフォルトの名無しさん:2011/11/15(火) 01:04:14.64
>>213
>> 結局流れるお金の量なわけです
そんな悲しいこと言うな。オレは信じてるよ、人の思いの強さを。
最後に勝つのはAIだよ、AI。

222 :デフォルトの名無しさん:2011/11/15(火) 01:28:59.20
>>219
そもそもの話は外国産マイナーツールの日本語情報が少ないよ、って話だからな?
マイノリティの中のマイノリティが少ないのは当然だ、っていうとても当たり前の意見に、
「日本語を漢字の方言と見なせば多数派だ」とか言ってお前が絡んできたんだからな?
全然事情の異なるFreeBSDやLinuxの事例まで持ち出して。

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

単に、それをして受ける恩恵と、それに必要な労力が見合う人がコミュニティにいないからだよ。
開発者の興味とかコミュニティの大きさや文化、個人の趣味とか、色々な要素が関係しているが、
結局は人がいないという所に帰結する。

223 :デフォルトの名無しさん:2011/11/15(火) 01:41:32.42
改善したいなら、コミュニティを広げて、影響力を大きくすれば良い。
そうすれば、英語が得意でUIの地域化に貢献したい人が出てきたり、
処理系やツールに投資してくれる企業が現れて、対応が改善したりする。
こうなって初めて、国からの援助も期待できる。

そういう風にコミュニティを変えていくために必要な労力と、
自分を変えて不自由なく立ち回れるようになる労力を比べて、
後者を選択してる人が多いだけの話。

224 :デフォルトの名無しさん:2011/11/15(火) 01:50:15.33
>>222
「人がいない」って人が少ないって意味だよな。人が少ないと言えるのは何人ぐらいがいればいいの?
人が少ないとで思考停止しちゃうのは問題ないかね?

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

人が少ないで思考停止しちゃうのは問題ないかね?
マイノリティ云々言い出す奴でガチでそう思っている人がいるから発言は配慮しようぜ。

225 :デフォルトの名無しさん:2011/11/15(火) 03:13:36.90
>>224
とりあえず、意図を教えてくれたのはありがたいな。今まで意味不明過ぎた。
あと冗談はかなり寒い。>>211を見ても。俺らが感性ないだけかもしれんが。

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

逆に、>>224は人が十分に多いと思う何らかの根拠があると思うんだけど、それは何?
思考停止してると思うなら、別の原因に何らかの心当たりがあるんじゃないのか?

226 :デフォルトの名無しさん:2011/11/15(火) 05:05:39.95
>>219

>>218
のベンチマークにRacketがあるのにGaucheがない理由を想像できるかい?

227 :デフォルトの名無しさん:2011/11/15(火) 05:09:13.11
>>225
人が少ないと言えるのは何人ぐらいがいればいいの?
 ↓訂正
人が少なくないと言えるのは何人ぐらいがいればいいの?

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

EclipseのSchemeのプラグインが欲しいと思うならLisper Schemer向けEclipseの勉強会(ネット回線なし)を
資料代(A4二枚のレジュメ)500円で都心で開けばいいんじゃないの。交通費のみでプラグイン開発者一人を
呼んで色々と話し合えばEclipse以外の話も出てくるだろうし、個人個人で何ができるかというのがみえて
くるんじゃないかな。三日坊主プロジェクトをいっぱい立ち上げてとりあえずやってみればいいんだよ。そ
して、隔月か、三カ月に一回集まって刺激し合えばいい。
3.11でみんなの意識が変わったから今がやり時だと思うよ。今の有事から終わらない日常に戻ったら何も変わら
ないだろうなあ。自分が言いたいのはそういう話。
>>226
どういう理由? マジで知らない。
そういう話を勉強会で顔を突き合わせて、問題意識を共有すればいい。一人で悶々と考えたり、プログに書いても
あんまり効果がないんだから、身体をもっと使うべきじゃないのかね。

228 :デフォルトの名無しさん:2011/11/15(火) 07:39:24.11
他言語ユーザの多くは英語に不自由してない事実。

229 :デフォルトの名無しさん:2011/11/15(火) 07:52:47.34
俺のチンコはファーストクラスオブジェクト

230 :デフォルトの名無しさん:2011/11/15(火) 07:55:13.80
>>228
中・高・大学で10年以上教育を受けていて、日本人は英語を不自由にしていると言い切れるのかね。

231 :デフォルトの名無しさん:2011/11/15(火) 08:29:38.04
「日本語環境が厚く無い」のを問題視するんなら、何を解決したいのかを整理した方がいいんじゃないか?
俺個人としては、マルチバイト文字処理が手軽に出来れば嬉しい。
もし英語読むの面倒だから、程度の理由なら、殆どのプログラム言語が英語ベースの現状で、随分甘えたやつとしか思わない。

そんなところの敷居を誰かが下げてくれるのをただずっと待つか、自分から積極的に今ある資料を活用して自分の付加価値も相対的に上げるのか、選ぶのは自分だけどな。

232 :デフォルトの名無しさん:2011/11/15(火) 09:33:49.31
日本語のドキュメントが少ないのは、仕方がないよ。

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

日本語で〜と考える場合、すでに環境を整えやすいClojureをやっておけばい
いよ。web関連ならこっちで十分だから。schemeならばgaucheでもperlのちょっ
とした代わりくらいはできる。書籍はまえより充実してきてると思うけどな。

233 :デフォルトの名無しさん:2011/11/15(火) 11:05:15.01
日本語のドキュメントが英語より読みやすくなっている例って
字の大きさぐらいだな。すまんね年寄りで

234 :デフォルトの名無しさん:2011/11/15(火) 22:36:08.28
>>232
横だけど、clojureはweb以外だとあまり良くないってこと?

235 :デフォルトの名無しさん:2011/11/15(火) 23:40:34.45
closureで気になったことがあります
作ったスクリプトを他のwindowsパソコンでも使えるように
exe化できるのでしょうか?

236 :デフォルトの名無しさん:2011/11/15(火) 23:48:04.64
頑張ればexe化もできなくはないけど
実行可能jarで妥協した方がいいんでないかな

237 :デフォルトの名無しさん:2011/11/15(火) 23:58:36.09
こんな感じか
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

238 :235:2011/11/16(水) 00:00:01.32
>>236-237
それがよさそうですね

239 :デフォルトの名無しさん:2011/11/16(水) 00:00:51.12
>>234
悪いとは言ってないし、そこまで判断してない。ただし、webに
というのはgoogle app engineやherokuに対応できるというところ
の強みがあるし、java系の強みを持ってる。だからweb関連ならこっちで十分と

240 :デフォルトの名無しさん:2011/11/16(水) 01:34:37.47
>>234
Web以外は既存のjavaと敷居が一緒なんだよ
Webサーバサイドで使うと開発効率がJava+tomcatよりも高いのが魅力なんだ


241 :デフォルトの名無しさん:2011/11/16(水) 01:57:32.39
>>239, 240
レスありがとう。これなら本格的にclojure使おうと思っていたので、汎用には
欠点があるのかと気になったんだけど、そういうことなら大丈夫そうで安心した。



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

243 :デフォルトの名無しさん:2011/11/16(水) 22:38:56.77
>>198について、竹内先生本人がコメントしていた

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

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

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

高評価みたい

244 :デフォルトの名無しさん:2011/11/16(水) 22:54:13.35
竹内文書

245 :デフォルトの名無しさん:2011/11/17(木) 02:46:50.61
まあ他に大した使い道ないしな

246 :デフォルトの名無しさん:2011/11/17(木) 03:01:22.40
しょぼいLispマシン作った人だっけ?
しかも復活祭までやちゃったんだよな

247 :デフォルトの名無しさん:2011/11/17(木) 07:49:47.32
竹内先生の退官記念の最終講義、ようつべあたりで流せば良いのに。

248 :デフォルトの名無しさん:2011/11/17(木) 08:50:08.66
>>246 具体的に指摘できないから「しょぼい」としか言えない、
馬鹿丸出しですねw

249 :デフォルトの名無しさん:2011/11/17(木) 09:30:17.13
>>246
TAOの事いってるならおまえが馬鹿をさらけ出してるとしかいえない.


250 :デフォルトの名無しさん:2011/11/17(木) 10:04:04.00
TAOならうちの研究室にあったけど
誰も使ってなかったな

251 :デフォルトの名無しさん:2011/11/17(木) 10:18:15.00
こいつ自分のことゲルトミューラーとか言っててさすがに引いたわ
せめてもうちょっと上手くなってから言えって感じだよ

252 :デフォルトの名無しさん:2011/11/17(木) 10:35:27.53
青木淳とかもそうだけど、やたら古典の引用だののヘンな衒学趣味がうさんくさくて嫌い。

数学者が日本の品格みたいな本出すようになるともうヤキが回った状態であることが
わかるのと同じようなもので。

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

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

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

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

多分ガチで知らなかったんだろう。

254 :デフォルトの名無しさん:2011/11/17(木) 10:48:40.40
Lispの神様なんだっけ?w
何をしたのかわからないけどw

255 :デフォルトの名無しさん:2011/11/17(木) 11:41:25.32
竹内自演よくないよ

256 :デフォルトの名無しさん:2011/11/17(木) 11:53:51.71
lisperとは思えない頭の悪いコメントが並んでるな。

257 :デフォルトの名無しさん:2011/11/17(木) 11:57:17.03
竹内、と書いただけで発作のように変なレスが増えるのな

258 :デフォルトの名無しさん:2011/11/17(木) 12:01:28.67
英語版wikipediaには記事がないね
Lispの神様なのに
嘘が通用するのは日本限定か

259 :デフォルトの名無しさん:2011/11/17(木) 12:05:49.39
TAO/ELISは、携帯電話なんて話にならないほどのガラパゴスだった。
専用ハードに、ほぼ単一に近い言語環境。
電電公社ならではの採算も将来性も度外視したプロジェクト。

260 :デフォルトの名無しさん:2011/11/17(木) 12:12:09.73
英語版に竹内先生の記事がないなんて糞だな
寄付すんの辞めたわ
金だけ取って肝心の中身がないなんて

261 :デフォルトの名無しさん:2011/11/17(木) 12:17:04.07
(((((((((((((((囲碁、竹内の話題は荒れるので(禁止)で)

262 :SCHEME餃子 ◆8X2XSCHEME :2011/11/17(木) 12:58:19.16
>>261
))))))))))))))

263 :デフォルトの名無しさん:2011/11/17(木) 13:10:13.37
とはいえ コンピュータ分野で日本人名ついたのは竹内関数くらいじゃないか
他になんかあったっけ?

264 :デフォルトの名無しさん:2011/11/17(木) 13:34:55.87
カリー化じゃないけど、竹内化といえば、すべてをたらい・・・(略

265 :デフォルトの名無しさん:2011/11/17(木) 13:39:06.52
竹内関数が最大にして唯一の功績ってのがな
神様だって名乗るにはちょっと寂しい

266 :デフォルトの名無しさん:2011/11/17(木) 13:48:57.29
まさか本人が神様と言ってるんじゃないだろ?言ってるとしたらかなり
傲慢だと思う。Lispの仏様という人もいたり、周りがヨイショしてるだけ
だろ?そんなに政治力があってLisp界のナベツネやスターリンなのか?

267 :デフォルトの名無しさん:2011/11/17(木) 13:52:46.02
少なくともゲルトミューラーとは名乗っている

268 :デフォルトの名無しさん:2011/11/17(木) 13:57:33.47
いつから何がきっかけで神様って呼ばれるようになったの?
誰が最初に呼び出したの?

269 :デフォルトの名無しさん:2011/11/17(木) 14:03:12.87
>>268
勝手に神様と持ち上げて、暫くしたら叩き落とそうとするのって、マスゴミがよく使う手だよね。

270 :デフォルトの名無しさん:2011/11/17(木) 14:07:17.99
むしろ持ち上げる側でしょ、この人は

271 :デフォルトの名無しさん:2011/11/17(木) 14:15:04.49
他にもあるぞ。二村射影とか、黒田正規形(Kuroda normal form)とか。

272 :デフォルトの名無しさん:2011/11/17(木) 15:03:07.30
lispのなかって、KCL作った人が有名なんちゃうん?
Practical Common Lispにもコメントを寄せてたけど。

273 :デフォルトの名無しさん:2011/11/17(木) 15:18:01.74
俺はCommon Lispは使わないんだけど
話題になっているの聞いたことない

274 :デフォルトの名無しさん:2011/11/17(木) 15:30:28.26
ECLやGCLの祖先だからな。一番最初のANSI Common Lisp処理系だといっても
爺しかもう知らんのかも。

275 :デフォルトの名無しさん:2011/11/17(木) 15:44:22.67
あの、たいていのものは俺達で実装しよう、としたがるGNUの連中が、
こんないいものがあるなら俺達で実装するのやめよう、といったぐらいなのにな、
KCLは(その結果KCLをベースにGCLが作られた)。

276 :デフォルトの名無しさん:2011/11/17(木) 15:51:11.61
KCLからGCLが造られてマルチバイト文字対応はおざなりになったのか。

277 :デフォルトの名無しさん:2011/11/17(木) 17:11:00.42
UtiLispにしても、武蔵野通研にしても、ICOTにしても、
ソース出せないのが痛かったねえ。
出せたらもっと関連研究者増えてただろうに。
KL1のUNIX版が出てきたのも驚くほど遅かった。
UtiLispのC言語版公開も2000年代に入ってからじゃなかったっけ?
ソースコード公開されている処理系が他にあるんだから、そっちに流れちゃうよね。

278 :デフォルトの名無しさん:2011/11/17(木) 17:31:24.96
>>275
> あの、たいていのものは俺達で実装しよう、としたがるGNUの連中が、
そうなのか? guileだって最初はSCMをベースにしたし、ライセンスに問題が
なければ使えるものは使うんじゃないかと思ってた。
俺実装するのはフリーなライセンスでベースに出来そうなものが無い場合じゃないかと。


279 :デフォルトの名無しさん:2011/11/17(木) 17:47:29.10
GNU Emacsにしても、Gosmacsをベースにしていたしな。
その後、Gosmacsは商用になったから、コードを全部排除したけども。

280 :デフォルトの名無しさん:2011/11/17(木) 18:34:55.25
来年のlispの京都での会議って京都の先生の退官記念かなんかじゃないの?

281 :デフォルトの名無しさん:2011/11/18(金) 06:56:28.65
既出だったらスマン
Gambit REPL なんていう iPhone アプリあるんだね。

282 :デフォルトの名無しさん:2011/11/18(金) 17:36:21.01
Androidでも動いてるね。
Gambitベースなのは、Gambit for AndroidとScheme REPL Module。

他には、JSchemeベースのScheme-droid、Scheme REPL、
Clojure REPL、Kawaなどなど。

283 :デフォルトの名無しさん:2011/11/18(金) 17:57:59.62
palmの時代からそういうのはあったが
指でコードなんて書けるのかな

284 :デフォルトの名無しさん:2011/11/18(金) 18:03:20.72
遊び以外では、きっとBluetoothキーボードとか使って打ってるんだろう。

285 :デフォルトの名無しさん:2011/11/18(金) 21:40:53.05
え?

286 :デフォルトの名無しさん:2011/11/18(金) 22:03:42.62
え?

287 :デフォルトの名無しさん:2011/11/18(金) 23:03:27.26
質問です。

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

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

という問題が分からないのですが、どなたかご回答いただけませんか?

288 :デフォルトの名無しさん:2011/11/18(金) 23:37:25.06
おれさまメモ。

lispの瘴気 - Togetter
http://togetter.com/li/215803

289 :デフォルトの名無しさん:2011/11/18(金) 23:48:26.27
>>287
宿題か?んなもん自分で調べろ

290 :デフォルトの名無しさん:2011/11/18(金) 23:55:41.73
>>289
竹内がblogに書きこんできたとか
くだらないことは嬉々として書きこむくせに
肝心のことは回答しないのな
何のための掲示板だよ

291 :デフォルトの名無しさん:2011/11/19(土) 00:09:06.91
竹内がblogに書きこんできたとか
くだらないことは嬉々として書きこむくせにとか
くだらないことは嬉々として書きこむくせに

292 :デフォルトの名無しさん:2011/11/19(土) 00:10:07.71
これがたらい回し

293 :デフォルトの名無しさん:2011/11/19(土) 00:35:59.72
竹内関数で音楽を生成するというやつ、
サンプルと同様のものを自分でも作って作業のBGMにしてみたいが
どうやればいいんだろう

294 :デフォルトの名無しさん:2011/11/19(土) 00:36:54.86
なぜここで聞く

295 :デフォルトの名無しさん:2011/11/19(土) 00:53:46.51
ひどいマッチポンプを見た

296 :287:2011/11/19(土) 06:12:48.81
どなたか本当に答えてもらえないでしょうか?
調べてもわからなかったので・・・

297 :デフォルトの名無しさん:2011/11/19(土) 07:03:15.96
>>296
講義でやってない内容は課題として出ないんだから、
素直にテキストとかで復習するとか、友達にノート見せてもらえば?
どうしても分からないなら、質問しに行った方が良い。ポイントも稼げる。

今後も分からないことがある度にここに聞きに来る気?
今ちゃんとやらないと、本当に講義に付いていけなくなっちゃうよ?


298 :デフォルトの名無しさん:2011/11/19(土) 07:13:42.93
テキストが糞訳だったりする場合だってあるだろ

299 :デフォルトの名無しさん:2011/11/19(土) 09:15:34.57
>>298 まずは自分の脳みそがクソだと認識しろよ

300 :デフォルトの名無しさん:2011/11/19(土) 09:24:45.64
誤訳で原書じゃないと
練習問題解けない本があるとか

301 :デフォルトの名無しさん:2011/11/19(土) 11:07:12.51
ちゃんとテキスト読めばわかるだろ。
そのレベルの問題なら。

302 :SCHEME餃子 ◆8X2XSCHEME :2011/11/19(土) 11:31:22.35
>>293
MML で出力しといて適当なソフトで MID ファイルに変換すればいいんじゃないかな。

303 :デフォルトの名無しさん:2011/11/19(土) 14:39:49.09
>>288
GJ
京大の講義資料やってみてーなー。

304 :デフォルトの名無しさん:2011/11/19(土) 14:45:50.92
読んでいてちゃんと訳しているのか
心配になる日本語だよな

305 :デフォルトの名無しさん:2011/11/19(土) 15:10:14.68
日本語で読んでる奴が解けないのをみて
にやにやしてるんだよな
相変わらず性根が腐っていることで

306 :デフォルトの名無しさん:2011/11/19(土) 16:39:13.19
上のラムダ計算式の構文上の導出と
それに関連する抽象構文木を生成せよ。

回答例:問題の意味がわからない。

307 :デフォルトの名無しさん:2011/11/19(土) 16:43:09.68
さて、lisp とscheme とどっちをおすすめされますでしょうか。

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

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

本がそこそこ充実しているcommon lisp が良いでしょうか。

308 :デフォルトの名無しさん:2011/11/19(土) 16:46:00.25
今からやるならclojure一択でしょ

309 :デフォルトの名無しさん:2011/11/19(土) 18:24:30.56
SICPは京大教授も認める糞訳か
読む奴が糞だから理解できないって言ってたアホは
どう言い訳するんだ?

310 :デフォルトの名無しさん:2011/11/19(土) 18:31:59.07
これはことあるごとに引用されるだろうな

311 :デフォルトの名無しさん:2011/11/19(土) 19:11:50.00
糞訳読んだせいで留年とかwww
ちょー可哀そうなんだけどw

312 :デフォルトの名無しさん:2011/11/19(土) 19:41:59.93
まあ、演習問題をとこうと思っても語彙が曖昧なものは
いくつかあったのは事実だと思う。<SICP

313 :デフォルトの名無しさん:2011/11/19(土) 19:43:04.79
語彙が曖昧じゃなくって
間違っているって言っているんだが

314 :デフォルトの名無しさん:2011/11/19(土) 19:53:38.76
そうそう間違っているというのはかなり重大なことかと

315 :デフォルトの名無しさん:2011/11/19(土) 19:58:33.00
こういう努力不足とは無関係の本質でないことで留年させるってどうなんだろう
今の時代に学部低学年でSICPやらせるのは
趣味の押しつけ以外の何物でもないと思うし

316 :デフォルトの名無しさん:2011/11/19(土) 20:00:08.66
京大入れて原書読めないとかマジありえんってのが前提なんじゃねぇの?

317 :デフォルトの名無しさん:2011/11/19(土) 20:00:57.72
東大名誉教授で原書読めない
和田さんはどうすんだよw

318 :デフォルトの名無しさん:2011/11/19(土) 20:02:09.27
極論を言ってるような感じもするけどな。京大の連中は知らんから
なんとも言えんけど、彼らの話が出てこないと。

319 :デフォルトの名無しさん:2011/11/19(土) 20:03:24.63
その間違ってる問題ってどれなん?

320 :デフォルトの名無しさん:2011/11/19(土) 20:04:25.17
和田さんってMITで強弁をとってたんだろ?
英語の使えない状態でMITで授業をするってありえる?

321 :デフォルトの名無しさん:2011/11/19(土) 20:05:15.33
やさしい英語は出来るんだろ
むずかしい文章が読めないだけで

322 :デフォルトの名無しさん:2011/11/19(土) 20:05:47.05
SICPの英語は難しくないよ。

323 :デフォルトの名無しさん:2011/11/19(土) 20:06:30.29
和田っちはSchemeで自動翻訳システム作ったんだよ。

ロボチックだろ、訳が。

324 :デフォルトの名無しさん:2011/11/19(土) 20:08:58.14
和田さんが京大入ったら留年するの?

325 :デフォルトの名無しさん:2011/11/19(土) 20:16:27.02
http://ja.wikipedia.org/wiki/%E5%92%8C%E7%94%B0%E8%8B%B1%E4%B8%80

いまwikiで和田さんを見ると、wikipediaの創設者が和田さんに見えて仕方がない。
あんな若い外人だったっけ?と。。。

326 :デフォルトの名無しさん:2011/11/19(土) 20:27:06.20
研究室の輪講で翻訳したやつとかなんじゃないの

327 :デフォルトの名無しさん:2011/11/19(土) 20:29:42.38
K&Rの石田訳のときにそんな話があったな。

328 :デフォルトの名無しさん:2011/11/19(土) 20:31:54.09
文体からしてそれはないでしょ

329 :デフォルトの名無しさん:2011/11/19(土) 20:44:44.38
SICPは多様なパラダイム教える為であって、必要なschemeの構文は
逐次前もって教えるってIPSJ会誌の教育コーナーで書いてたよ。

330 :デフォルトの名無しさん:2011/11/19(土) 20:47:01.02
パラダイム教える為に
東大名誉教授が読めなかった文章を
読めないってだけで
留年させる必要はないわけで

331 :デフォルトの名無しさん:2011/11/19(土) 20:52:18.45
ネタ混じりの可能性もあるからそんなにムキにならなくても

332 :デフォルトの名無しさん:2011/11/19(土) 20:58:07.67
SICP日本語訳disるために
ネタ混じりで馬鹿にしたと

333 :デフォルトの名無しさん:2011/11/19(土) 21:00:09.77
留年とか何の話?

334 :デフォルトの名無しさん:2011/11/19(土) 21:01:04.37
>>288

335 :デフォルトの名無しさん:2011/11/19(土) 21:20:26.25
実験、演習を一つ落としたくらいで留年しないってw
複数落とすと次の年履修がかぶって留年するはめになることあるが。
演習問題一つで単位落とすこともないし。

336 :デフォルトの名無しさん:2011/11/19(土) 21:25:10.00
一つじゃなくて
複数間違っているように
書いてあるけど

337 :デフォルトの名無しさん:2011/11/20(日) 16:32:26.16
>>335
実験単位が欠席2回で不可が出たりする(自分はそれで2留した、3年に行く必須の単位なんで)所もあるから実験とかレポートは結構厳しいものだとおもってた
病気療養でも斟酌してもらえなくて結構泣いたよ


338 :デフォルトの名無しさん:2011/11/20(日) 17:37:41.65
京大ってスパルタ系の大学だったっけ?なんかあそこって変人が多い
という印象が強いが。

339 :デフォルトの名無しさん:2011/11/20(日) 18:20:05.17
SICPの誤訳問題の例?
ttp://d.hatena.ne.jp/yad-EL/20091007/p1

340 :デフォルトの名無しさん:2011/11/22(火) 16:47:22.83
最近使ってなかったけどR6RSって評判どうですか?

341 :デフォルトの名無しさん:2011/11/22(火) 17:22:54.30
広まる前に次が出そう

342 :デフォルトの名無しさん:2011/11/22(火) 19:21:54.22
RnRSみたいな版名はナンバリングが前面に出てるから楽だな
面倒ならR4RSとかR5RSとか対応にしとけばいい
もうR6RS以降は暇な人向け実装だな
CommonLISP程に時間が掛かってはいかんでしょ

343 :デフォルトの名無しさん:2011/11/24(木) 01:46:33.31
Gaucheについての質問です。

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

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

どなたか教えていただけないでしょうか?よろしくお願いします。

344 :デフォルトの名無しさん:2011/11/24(木) 03:20:19.11
>>343
一方をuseせずにautoloadにしておくって手がある。機能的に非対称で、
一方が他方に従属する感じの時は、従属する方をautoloadにすることが
おいらは多いかな。
でも機能的に対称な場合はautoloadで非対称なのが気持ち悪いんで、
別モジュールにdefine-genericをまとめて書いとくかなあ。そのモジュールを
インタフェース定義だと思えばそんなに悪くない。


345 :デフォルトの名無しさん:2011/11/24(木) 04:26:36.51
Cのプロトタイプ宣言とディレクティブはスマートだよな
autoloadって評価されるまで何が起こるのか判らないのと
名前の二元管理という点であまり推奨できない

346 :343:2011/11/24(木) 05:42:29.28
>>344
回答ありがとうございます。こんな時間に回答がもらえるとは流石Scheme板なのか...。

う、やっぱり別ファイルに分けるのが良さそうですね。
というかそもそもオブジェクトシステムを理解してなくて
define-genericを知りませんでした...。define-methodは
これを自動でやってくれてるのですね。

347 :デフォルトの名無しさん:2011/11/25(金) 21:45:12.85



348 :デフォルトの名無しさん:2011/11/26(土) 13:10:38.02
Luaが形なし言語で最速と聞いて
LispやSchemeからの変換機あるかなと思ったら
以外と誰も作ってない。Stalinと速度比較したかった。

349 :デフォルトの名無しさん:2011/11/26(土) 13:41:07.50
>>348 LuaJIT がだろ?
ついでに言っとくと Lisp 系言語は変数側に型がないだけで
変数に代入されるオブジェクトには結構厳しい型付がある


350 :デフォルトの名無しさん:2011/11/26(土) 14:11:05.70
Cから別の動的言語に吐き出すのが
あるからlisp->C->luajitは出来るが、
http://cluecc.sourceforge.net/
直接変換では無いので、C止めの1/10になりそう。

最近だと、llvm経由で言語間コンバートあるけど、やっぱり最適化は難しいのかな。
llvm-to-javascript
https://github.com/kripken/emscripten/wiki

351 :デフォルトの名無しさん:2011/11/26(土) 18:43:29.05
>>348
SBCLの圧勝です。

352 :デフォルトの名無しさん:2011/11/27(日) 00:00:34.74
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の方が速いかな?

353 :デフォルトの名無しさん:2011/11/27(日) 00:03:50.29
Luaの場合は小細工なしで速いから

354 :デフォルトの名無しさん:2011/11/27(日) 00:57:49.97
Scheme subset -> Luaならantlrあたり使って簡単にできそうなのになあ
Schemeでambとかマクロ展開してからLuaに変換できたら高速だし最高なのに

355 :デフォルトの名無しさん:2011/11/27(日) 03:20:49.77
lisperが妄言はいてる間にlua最速!
いいうさぎとかめですね

356 :デフォルトの名無しさん:2011/11/27(日) 05:10:08.81
小細工とか妄言とかえらい攻撃的な人が来てるね。
というより主張だけが必死で話を聞いてない
この2つの考察から
スルーするのが適当じゃなかろうか。

357 :デフォルトの名無しさん:2011/11/27(日) 05:32:36.83
小細工と妄言は別の人なのだが
妄想が激しい人なのな

358 :デフォルトの名無しさん:2011/11/27(日) 05:35:02.00
Luaは速度を速くするための
特別な書き方しなくても速いんだが

359 :デフォルトの名無しさん:2011/11/27(日) 05:55:52.20
luaはschemeと似てるけどcall/ccみたいな厄介なのはないし
言語実装が1つだから無駄なリソースをあまり使わずに進化できたんじゃないかな
あんま知らんけど

360 :デフォルトの名無しさん:2011/11/27(日) 08:31:33.05
機械語最速最強、とか言ってるのとたいして変わらんしw

361 :デフォルトの名無しさん:2011/11/27(日) 12:41:29.83
まあ、LuaとかJavaScriptが近年速度面で頑張ってるのは事実だし、
Lispも他に置いてかれないように頑張りましょう、ってことで。

RacketあたりはJIT採用してたはずだから、頑張って欲しいね。


362 :デフォルトの名無しさん:2011/11/27(日) 12:54:12.80
そういや、数理システムの人が CL の最適化は全然足りない、
って論文書いてたよね。 2009年だけど。
あのあとCLの最適化って少しは進んだのかな。

363 :362:2011/11/27(日) 12:55:09.42
これね
「An evaluation of Major Lisp Compilers」by Seika Abe
http://cl-www.msi.co.jp/solutions/knowledge/lisp-world/tutorial/compiler-eval-b.pdf


364 :デフォルトの名無しさん:2011/11/27(日) 13:50:36.94
>>362
商用の奴もダメって?
あとネットで(要約の)閲覧できるならリンク頂戴

365 :デフォルトの名無しさん:2011/11/27(日) 14:03:59.93
>>364
あと, cmucl のドキュメントの中で最適化を施すと危険な場合ってのが列挙
してあって, その部分の見直しがほとんどなされてない
コンパイラ製造技術は上がって来てるのでその辺の対応が強く望まれる
あと吐き出したコード見ればわかるんだけど peephole が壊滅的にだめ


366 :デフォルトの名無しさん:2011/11/27(日) 17:17:23.09
最適化しないでも
小細工すれば速くなるし

367 :デフォルトの名無しさん:2011/11/27(日) 23:11:26.72
>>354
なんでわざわざ遅いLuaに翻訳しないといけないの?
Javascriptならブラウザ上で動くとかメリットあるけど。

368 :デフォルトの名無しさん:2011/11/28(月) 01:41:29.85
lisp cabinetでCCLを使っているのですが、
自作の関数をいくつか書いておき、起動時にそれらを自動的に読み込ませる、というのは
どこにどのような設定をかけばよいのでしょうか

369 :デフォルトの名無しさん:2011/11/28(月) 02:08:39.13
>>367
Schemeが亀のように遅いからだろ

370 :デフォルトの名無しさん:2011/11/28(月) 02:55:02.84
? 変なのがいついてるな。

371 :デフォルトの名無しさん:2011/11/28(月) 03:08:05.18
Luaが遅いとか無知すぎるわ

372 :デフォルトの名無しさん:2011/11/28(月) 06:50:26.82
Cへのトランスレータは以前から研究されているのに、なぜLuaへのトランスレータを性能の為に用意するの?
バニラのLuaでもCトランスレータを超える性能面のメリットがあるの?
……って意味じゃないの、「遅いLua」って言い回しは
本人に訊かないと本当の所は分からないが

俺は性能面ではなく、ClojureやNuのようなホスト環境とよく馴染むLispとしては興味あるけど
SchemeやCLのトランスレータは実物を見てからでないとあまりワクワクしないな

373 :デフォルトの名無しさん:2011/11/28(月) 07:28:31.90
>>364
要約というか本文が >>363 にあるよ
日本語。共通部分式の除去も定数伝搬もほとんどされてない、
ってのは悲しくなった。誰かCommon Lisp on LLVM作って。

374 :デフォルトの名無しさん:2011/11/28(月) 10:56:48.73
>>368
ホームディレクトリの.ccl-init.lisp。
そこで直接関数を定義しても良いし、適当なファイルをloadで読んでも良い。

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

(translate-logical-pathname "home:")

を評価して表示された場所。


375 :デフォルトの名無しさん:2011/11/28(月) 13:43:19.86
Lisp -> C -> 機械語
Lua -> JIT -> 機械語
だとLuaの方が速いんだよな

376 :デフォルトの名無しさん:2011/11/28(月) 13:59:02.19
じゃあ tarai で比較するか

377 :デフォルトの名無しさん:2011/11/28(月) 14:00:07.69
実用性のない何の価値もないコードで比較してどうする

378 :デフォルトの名無しさん:2011/11/28(月) 14:02:00.71
>>377
文句言うなら代替案を出せよ。
代替案ない批判は何の価値もないよ。

379 :デフォルトの名無しさん:2011/11/28(月) 14:08:36.34
ここは核融合プラズマシミュレーションで

380 :デフォルトの名無しさん:2011/11/28(月) 14:21:30.36
http://shootout.alioth.debian.org/u64/benchmark.php?test=all&lang=sbcl&lang2=lua

381 :デフォルトの名無しさん:2011/11/28(月) 14:31:36.26
>>380
Luaってどん亀Gaucheより遅そうだな


382 :デフォルトの名無しさん:2011/11/28(月) 14:39:59.84
型指定したコードと比べてどうすんだよ
馬鹿か

383 :デフォルトの名無しさん:2011/11/28(月) 14:43:35.40
出たものはとりあえず叩く人が居座ってるよな

384 :デフォルトの名無しさん:2011/11/28(月) 14:44:43.14
ドヤ顔で型指定しているコード持ってきて
Gaucheより遅そうって
馬鹿以外の何物でもないだろ

385 :デフォルトの名無しさん:2011/11/28(月) 14:47:54.23
何も出せずに文句しか言えない奴は哀れだねぇ

386 :デフォルトの名無しさん:2011/11/28(月) 14:50:59.55
馬鹿な発言しか出来ない奴よりはまし

387 :デフォルトの名無しさん:2011/11/28(月) 14:59:20.86
馬鹿はお前だろうw
http://shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=racket&lang2=lua

388 :デフォルトの名無しさん:2011/11/28(月) 15:11:30.43
なぜJITの付いてないバージョンのLuaと比べるんだよ

389 :デフォルトの名無しさん:2011/11/28(月) 18:03:06.62
http://luajit.org/performance_x86.html

390 :デフォルトの名無しさん:2011/11/28(月) 18:41:59.63
luajitでようやく比較対象になったレベルでしょ?
しかも組み込み用の糞言語w

391 :デフォルトの名無しさん:2011/11/28(月) 18:52:17.99
どん亀racketよりは速いお

392 :デフォルトの名無しさん:2011/11/28(月) 19:56:21.62
こんなところで油を打ってないで、一つでもマクロや関数の使い方
の理解を深めろって。^^; さもないと成長せんぞ。

393 :デフォルトの名無しさん:2011/11/28(月) 22:37:16.30
>>374
ありがとうございます!

394 :デフォルトの名無しさん:2011/11/28(月) 23:59:23.73
Gauche での JIT の実験結果からは今のところは導入は割に合わないと結論が出てる。
http://practical-scheme.net/wiliki/wiliki.cgi?Gauche%3aVM%E3%81%AE%E6%9C%80%E9%81%A9%E5%8C%96%3aJIT%3a%E4%BA%88%E5%82%99%E5%AE%9F%E9%A8%93
素人考えだと二倍とか三倍くらいの速度になるなら甲斐がありそうにも思うけど、
ポータビリティや保守性を捨ててまでやるほどではないということみたいだね。

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

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

ところで Lua のロゴマークのデザインってセイコーインスツルのに似てね?
http://www.lua.org/
http://www.sii.co.jp/

395 :デフォルトの名無しさん:2011/11/29(火) 00:06:47.55
LuaJITだと2〜3倍どころ10倍くらいになってるな
保守性はともかくポータビリティは問題なさそう

396 :デフォルトの名無しさん:2011/11/29(火) 01:05:55.94
http://repo.or.cz/w/luajit-2.0.git/tree/HEAD:/dynasm
確かにluajitは個別にしか対応できないな。
googleのv8,naclみたいにx86,x64,arm,llvmでしか動かない実装考えるグループも出てきてる時代だけど、
schemeは置いといて、clは人材流入がなくて難しいのかも。
haskellでもx86専用SIMDコードが埋め込まれたり、llvmに載せちゃえとかあがいてはいる。
普通のコードをJITやCPU最適化で高速化するタイプの人材流入から
cl/.net/ruby/perl/phpあたりは置いていかれてる感はあるかもしれないね。


397 :デフォルトの名無しさん:2011/11/29(火) 08:52:41.78
.NET→MS実装は知らないが、MonoはLLVMバックエンドがある
Ruby→Rubinius
Perl→ParrotにLLVMプラグインがあるので、RakudoもLLVMを使える
PHP→PHP.rebootならHotSpot効くんじゃね?多分

398 :デフォルトの名無しさん:2011/11/30(水) 14:06:16.64
lispのprin1やprincにある"1"や"c"は
何を意味しているのでしょうか?

399 :デフォルトの名無しさん:2011/11/30(水) 16:53:13.14
prin1 の 1 は適当につけただけだと思う。改行するのが print で改行しないのが
prin1 だったんだけど、read できるかどうかを考慮してさらに prin2 とか prin3
とかが作られていった。でも方言ごとに意味がバラバラだった。

princ は1文字しか出力しない方言があったので character の c なんだろうが、
そうでない処理系では無意味。


400 :デフォルトの名無しさん:2011/11/30(水) 17:13:53.88
そんなときはHyperspecを読め。1,2行程度で違いを説明してるから。

401 :SCHEME餃子 ◆8X2XSCHEME :2011/11/30(水) 18:11:09.37
>>400
たぶん >>398 は名前の由来をきいてるんだと思う Yo

402 :デフォルトの名無しさん:2011/11/30(水) 18:31:13.45
>>398
ttp://hibari.2ch.net/test/read.cgi/tech/1309940115/355
質問者は同じ人?
回答になっているのか、わからんが。
まだ疑問があるなら軽く調べると英語でなんか出てくるんじゃないの。

403 :デフォルトの名無しさん:2011/11/30(水) 20:20:15.60
その名前の源流はn番目の評価結果を返すprog1とかprogn辺りだろうけど
適当すぎるんじゃないか?
さすがに挙動が違うのに番号変えただけは適当すぎるんじゃないか?
コボル人か?


404 :398:2011/11/30(水) 20:45:35.38
>>400-401
はい。動作は分かっていますが、由来というか名前をつけた設計者の考えを知りたいのです

>>402
いいえ、別人です


405 :デフォルトの名無しさん:2011/11/30(水) 23:21:17.60
HyperSpec の内容でいいとおもうけどな。由来は John L White 曰く
prin1 は PRINt characters of 1 object.
princ は PRINt the Characters of some Object.
print は PRINT compound object.
だったはず。

406 :398:2011/11/30(水) 23:27:54.17
なるほど、分かりました
HyperSpecではそこまで言及されていなかったので勉強になります
CLHS: Function WRITE, PRIN1, PRINT, PPRINT...
http://www.lispworks.com/documentation/HyperSpec/Body/f_wr_pr.htm

407 :デフォルトの名無しさん:2011/12/01(木) 08:52:19.28
確かprin1が生まれた当初は
一引数関数でアトムしか印字できなかったはず。
いわばprint下請け関数。

けどLisp interpreterは任意数引数関数にするの簡単だから…

408 :デフォルトの名無しさん:2011/12/01(木) 11:55:32.37
The history of print, prin1, and princ?
http://groups.google.com/group/comp.lang.lisp/browse_thread/thread/5addd533ea72207a/3d01f02a08dc0d5e
ググったら十年前の質問が出てきた。

409 :デフォルトの名無しさん:2011/12/02(金) 01:20:36.63
KMPが回答していたのですか
知りませんでした
なるほど

410 :デフォルトの名無しさん:2011/12/03(土) 02:16:04.15
渋谷lispみたいなイベントってもうないの?
ちょっと発表してみたい内容できそうなんだけど

411 :デフォルトの名無しさん:2011/12/03(土) 02:41:55.54
ついこの間あったばっかじゃねーか。
次まで待て。


412 :デフォルトの名無しさん:2011/12/03(土) 03:41:06.82
>>410
Shibuya.lisp主催でもメーリングリストだけ告知させてもらうにしても自分で動いて
みたらどうかな。公共施設だと場所の確保が難しそうだけど、年末・年始は日本に
戻ってくる人もいるかもしれないし、
地方帰郷組とかいて、変わったイベントになるかもね。具体的な開催予定候補日を
示して呼びかけだけはしてみたら良いと思う。反応が悪かったら取り下げるという
感じで。


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

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

低コスト会場の一例。
PCインフラは乏しそう。年末年始は休み。申し込み条件は中野区に関わりがある人
ttp://www.nices.jp/facility/zero/gakusyu.html
ttp://www.nices.jp/reserve/culture.html

413 :デフォルトの名無しさん:2011/12/03(土) 09:30:23.56
東京でしか無いから、残念だよね。

414 :デフォルトの名無しさん:2011/12/03(土) 09:48:05.61
小規模開催じゃ売名できないだろ

415 :デフォルトの名無しさん:2011/12/03(土) 10:07:42.42
コルーチンはリスト処理ではない
スタックやレジスタの処理だ
リストはメモリ割り当てが頻繁に起こって遅くなりそう

416 :デフォルトの名無しさん:2011/12/03(土) 10:08:54.08
誤爆

417 :デフォルトの名無しさん:2011/12/03(土) 11:43:25.32
>>413
道府県庁所在地でやれば5人ぐらい集まるんじゃないの?
文句を言わずに動け。
他分野の話だけど地方の県庁所在地で活発にやっている所があるよ。あと関数言語とプログ
ラミング教育とemacsと英語ぐらいのテーマでNPOってできるんじゃないのかね。原文(英語)
ハンドブックを教材に使って、辞書を片手にプログラミングさせるのが良いと思う。
全然訳せなくて使い方が分からない場合に手助けする感じだと人は伸びるよ。

あとttps://groups.google.com/group/Shibuyalisp/の集客問題は何かの足しになると思う。

418 :デフォルトの名無しさん:2011/12/03(土) 12:41:06.91
勉強会とかならいいけど、5人相手に発表とか悲しさ炸裂だろ。

別にShibuya.lispじゃなくて、普通にネットで発表しても、
興味深いもの、ことなら反響あると思うけど。
この前の竹内関数とか盛り上がったし。


419 :デフォルトの名無しさん:2011/12/03(土) 12:49:09.04
いつどこの勉強会で盛り上がったん?

420 :デフォルトの名無しさん:2011/12/03(土) 13:18:25.51
なんで勉強会が盛り上がるとかいう話になるんだよw

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

盛り上がってる勉強会とかなら熊本とかなんじゃないの? よく知らんけど。
本人たちは楽しそうにやってるのは分かる。


421 :デフォルトの名無しさん:2011/12/03(土) 13:35:41.28
今、勉強会の話しているからだろ

422 :デフォルトの名無しさん:2011/12/03(土) 13:36:58.78
Lisp界隈は面白いことしている人が
表に出てこないな

423 :デフォルトの名無しさん:2011/12/03(土) 15:11:27.27
>>418
形態は勉強会でもなんでもいいでしょ。

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

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

ヘタレlisper/schemmerでいいから代表として誰かが立てば、忙しい
lisper/schemmerも参加しやすくなるんじゃないの。代表に求められるのは、
lispの能力より雑用処理能力だよね。

424 :デフォルトの名無しさん:2011/12/03(土) 22:21:06.15
何故ハイパーカードは死ななければならなかったのか - karasuyamatenguの日記
http://d.hatena.ne.jp/karasuyamatengu/20111130/1322671954
>SK8というNetwton向けのLisp Machineを殺したのはジョブスに違いない

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

この点がよく分からないのですけど、newtonとlispにはどういう関係があるのですか?

425 :デフォルトの名無しさん:2011/12/04(日) 00:31:00.58
往年のMCLファンの俺が答えるよ。
http://en.wikipedia.org/wiki/SK8

426 :デフォルトの名無しさん:2011/12/04(日) 00:44:48.44
 ̄ ̄ ̄ ̄ ̄ ̄ ̄l/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     ∧_∧
    ( ´・ω・`)     ∧_∧
    /     \   (    )何言ってんだこいつ
.__| |    .| |_ /      ヽ
||\  ̄ ̄ ̄ ̄   / .|   | |
||\..∧_∧    (⌒\|__./ ./
||.  (    )     ~\_____ノ|   ∧_∧
  /   ヽ 空気読めよ   \|   (    )
  |     ヽ           \/     ヽ. オマエ馬鹿だろ
  |    |ヽ、二⌒)        / .|   | |
  .|    ヽ \∧_∧    (⌒\|__./ /


427 :デフォルトの名無しさん:2011/12/04(日) 00:47:00.11
これ、昔からソース公開してるんだけど、
sitアーカイブだからMacないと展開に苦労するし、
ライセンスはここ読めってページがなくなってるしw
http://sk8.research.apple.com

428 :デフォルトの名無しさん:2011/12/04(日) 00:50:13.95
つ ttp://www.vector.co.jp/soft/dl/win95/util/se140653.html

429 :デフォルトの名無しさん:2011/12/05(月) 19:14:05.58
普段の雑多な処理(bashで書くと64行以上のスクリプト)ってlisp(schemeも可)で書く? bashで書く?
あと64行未満だったらどうされますか? 行の量レベルによっての取り組み方の違いとかをご教授して
いただけませんか?
LispでもLinuxディストリ間ぐらいだったら可搬性も楽に高められるかな? Lispだと他の人が読めないよ
というクレームが来たら最悪違う言語で書き直せば良いんだよね。そのスクリプトは製品ではなく数ヶ月
後までに書き直しておけば問題なしという条件で。

あと処理のアイデア・メモはみんなlispで書いちゃうのかな?

430 :SCHEME餃子 ◆8X2XSCHEME :2011/12/05(月) 20:09:55.71
>>429
64行ってのはどこから出てきた数値?

431 :デフォルトの名無しさん:2011/12/05(月) 20:13:34.54
ざったろくじゅうし

432 :デフォルトの名無しさん:2011/12/05(月) 20:15:41.60
(expt 2 6)

433 :デフォルトの名無しさん:2011/12/05(月) 22:44:29.38
(ash 1 6)


434 :デフォルトの名無しさん:2011/12/05(月) 23:09:55.33
>>429
UNIXの得意なことはshでやる。
fileやprosessにまつわるバッチ処理。

435 :デフォルトの名無しさん:2011/12/06(火) 00:28:56.29
>>429
#!/bin/perlとか書くくらいならgoshする
パイプつなげてガリガリとコマンドを呼び出してステートチェックするならbashで書くわ

書きやすい方の道具使うべきなんであってLispありきってのは間違いじゃろ

436 :デフォルトの名無しさん:2011/12/06(火) 02:26:25.51
せっかくだから、どんな小さなスクリプトもLispで書くことにするぜッ

437 :デフォルトの名無しさん:2011/12/06(火) 07:30:19.88
>>435
bash等と比べると書きやすいで言えばLispだし、ブログのネタにしやすいのもlispでしょ。
つまりはLispありきでいいんじゃないか。

438 :デフォルトの名無しさん:2011/12/06(火) 17:39:58.04
Lisp 1000tips wiki つくろか

439 :デフォルトの名無しさん:2011/12/06(火) 17:54:14.86
>>438
期待してる。

440 :デフォルトの名無しさん:2011/12/07(水) 00:05:07.89
common lispのmapcにあたるのは
schemeではmapになるのでしょうか?
そして、common lisp のmapcarにあたる関数は何でしょうか

441 :デフォルトの名無しさん:2011/12/07(水) 00:27:18.03
mapc => for-eachでmapcar => map。
ただし、mapcと違ってfor-eachが返す値は未定義。


442 :デフォルトの名無しさん:2011/12/07(水) 00:41:59.82
ありがとうございます 勘違いしていました
気になったのですが、common lispのdolistとmapcは何が違うのでしょうか

443 :デフォルトの名無しさん:2011/12/07(水) 01:16:57.98
使う場面とできることは似たようなものだけど、根底にある思想が違う。
dolistはより手続き的。リストの要素で変数を束縛してブロックを実行する。
mapcはより関数的。リストの要素に関数を適用する。

http://cl.cddddr.org/index.cgi?%E3%82%B3%E3%83%BC%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0%E3%82%B9%E3%82%BF%E3%82%A4%E3%83%AB#H-xy6b4yo1bpqy


444 :デフォルトの名無しさん:2011/12/07(水) 01:34:56.54
>>443
すっきりと腑に落ちました。
これで使い道に迷うことはなさそうです。

445 :デフォルトの名無しさん:2011/12/07(水) 02:18:53.89
ごめん。ひとつ大事なこと思い出した。

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

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

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

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

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

mapcは引数で渡すからこの問題は起きないはず。これは覚えておいた方が良いかも。


446 :デフォルトの名無しさん:2011/12/08(木) 12:05:04.37
動作がよくわからないので質問させてください。

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

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

case 文の 条件部分(呼び方がわかりません。)に
if 文を使うことはできないんでしょうか?

447 :デフォルトの名無しさん:2011/12/08(木) 12:21:55.04
>>446
(define a 0)
(case 0 ((a) 1))
-> ()
(case 'a ((a) 1))
-> 1

448 :デフォルトの名無しさん:2011/12/08(木) 19:06:31.53
>>446
case の条件部分はただのデータで、評価されない。
なのでその書き方は 0 という整数と (if #t 0) というリストを比較している。


449 :デフォルトの名無しさん:2011/12/08(木) 20:18:39.48
>>446
今度からそういうときはcondを使ってね

450 :デフォルトの名無しさん:2011/12/08(木) 20:30:54.67
ウズウズ

451 :デフォルトの名無しさん:2011/12/08(木) 21:34:09.97
>>447-449
レスありがとうございます。
condを使えば思ったとおりに動かすことが出来ました。

452 :デフォルトの名無しさん:2011/12/09(金) 19:26:16.97
この英語2chはなんなんだ。微妙に活気があるんだよなあ。
ttp://dis.4chan.org/tech/

453 :デフォルトの名無しさん:2011/12/09(金) 19:36:34.40
海外のオタクが双葉を元にしたサイトだよ

454 :デフォルトの名無しさん:2011/12/10(土) 00:23:20.84
schemeで画像扱う時って普通にvectorのvectorにするものなの?

455 :デフォルトの名無しさん:2011/12/10(土) 03:12:38.88
u8vectorで

456 :デフォルトの名無しさん:2011/12/10(土) 23:59:47.79
M.Hiroi's Home Page / xyzzy Lisp Programming
http://www.geocities.jp/m_hiroi/xyzzy_lisp/abclisp02.html

listの説明の図がわかりやすいです
画像ならまだしも、テキストでセルの要素を表現できることに驚きました
このような図を作成するにはどういうツールを使えばよいのでしょうか

457 :デフォルトの名無しさん:2011/12/11(日) 00:18:56.26
そのサイトの管理人に聞いたほうが早いんじゃね?

458 :デフォルトの名無しさん:2011/12/11(日) 01:33:40.73
まあたぶんテキストエディタで手書きだと思うけど

459 :デフォルトの名無しさん:2011/12/11(日) 02:15:31.71
xyzzyの罫線モードとかじゃないの

460 :デフォルトの名無しさん:2011/12/11(日) 04:05:42.47
lispはHaskellなんかと比べるとちゃんとした関数型言語じゃないって言う人がいますが、どうですか

461 :デフォルトの名無しさん:2011/12/11(日) 04:49:30.79
>>460
副作用のある関数が普通に書けるからじゃろ


462 :デフォルトの名無しさん:2011/12/11(日) 12:42:42.40
Haskellは副作用をする部分を隔離してるもんな。そこで副作用させてる
から、あるなし論争があるけど、ML系でも異色でちょっと取り扱いづらい
けど人気があるよね。モナド信仰なんだろうかな。サクサク作っていける
部分もある。

463 :デフォルトの名無しさん:2011/12/11(日) 17:43:52.85
c++とlispはマルチパラダイム言語

464 :デフォルトの名無しさん:2011/12/11(日) 18:04:26.40
プログラミングGauche の第15章 テキストの構築を読んで
sxml形式で記述した外部ファイルを読み込み
xmlに変換して他のファイルに出力したいと思いました。
ですが、方法がわかりません。

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

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

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

最終的には
http://karetta.jp/book-node/programming-gauche/197708
の「SXMLでは次のとおりに記述します。」直後のコードを保存したファイルを読み込み、
それを別ファイルにxmlとして保存する関数を作成したいのですが
可能でしょうか?

465 :SCHEME餃子 ◆8X2XSCHEME :2011/12/11(日) 20:04:04.39
>>464
read

466 :はちみつ餃子 ◆8X2XSCHEME :2011/12/11(日) 20:28:21.93
>>460
関数型とは何かという明確な定義は無いので、ちゃんとしたというのがどの程度のことを言うのかで判断が分かれると思いますね。
Haskell が「純粋関数型」と呼ばれることからもわかるように、その逆の純粋でない関数型もあるわけで。
純粋でないことを以ってちゃんとしてないというのであれば「そうですね」という感じかなぁ。

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

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

あなたがそうしたければ純粋関数型的な語彙を組立ててそのスタイルを貫く自由は与えられています。

467 :デフォルトの名無しさん:2011/12/11(日) 23:36:25.04
>>465
ありがとうございます

468 :デフォルトの名無しさん:2011/12/12(月) 06:30:20.68
lispの特徴はS式構文でしょ。

469 :デフォルトの名無しさん:2011/12/12(月) 11:33:48.29
昔はGCとかSchemeの継続とか強力なOOシステム(Flavors, CLOS)も特徴だったけど、
今は他の言語でも見られるしね。S式+マクロはLisp族だけだね。

470 :デフォルトの名無しさん:2011/12/12(月) 11:34:43.39
ADTを直接記述出来る事かと。

471 :デフォルトの名無しさん:2011/12/12(月) 14:14:41.71
リストの操作で質問します
(val (lis1) (lis2 (lis3)))
このリストに別のリスト(lis4)を追加して
(val (lis1) (lis2 (lis3) (lis4)))
のようにlis2のリストの末尾に追加したいです
そのあとで追加したリストも
(val (lis1) (lis2 (lis3) (lis4) (lis5) (lis6)))
というふうに後ろに挿入したいのですが、
どういう操作をすればよいでしょうか

472 :デフォルトの名無しさん:2011/12/12(月) 14:57:15.97
>>471
そういうことをやりたくなるってことは、リストが分かってないってこと。

473 :デフォルトの名無しさん:2011/12/12(月) 19:27:28.75
深いすなあ

474 :デフォルトの名無しさん:2011/12/12(月) 21:30:27.25
(set-cdr! (last-pair (caddr ls)) (cons ls7 '()))

475 :デフォルトの名無しさん:2011/12/12(月) 22:17:16.53
(setq l '((1) (2 (3))))
(defun append-tail (l m)
(append (list (first l))
(list (append (list (first (second l)))
(list (append (second (second l))
m))))))

CL-USER> (append-tail l '(4))
((1) (2 (3 4)))
CL-USER> (append-tail (append-tail l '(4)) '(5))
((1) (2 (3 4 5)))
CL-USER> (append-tail (append-tail (append-tail l '(4)) '(5)) '(6))
((1) (2 (3 4 5 6)))

476 :デフォルトの名無しさん:2011/12/12(月) 22:24:46.15
>>474
意図した通りに動きました!ありがとうございます


477 :デフォルトの名無しさん:2011/12/12(月) 22:31:47.17
>>475
副作用無しのその動作も魅力的です
ありがとうございます

478 :475:2011/12/12(月) 22:45:13.92
ちなみにこの形だとpush, popが使えて楽だよ。
CL-USER> (setq n '(((3) 2) (1)))
CL-USER> (push 4 (first (first n)))
(4 3)
CL-USER> n
(((4 3) 2) (1))
CL-USER> (push 5 (first (first n)))
(5 4 3)
CL-USER> (push 6 (first (first n)))
(6 5 4 3)
CL-USER> (push 7 (first (first n)))
(7 6 5 4 3)
CL-USER> n
(((7 6 5 4 3) 2) (1))
CL-USER> (pop (first (first n)))
7
CL-USER> n
(((6 5 4 3) 2) (1))

479 :デフォルトの名無しさん:2011/12/12(月) 22:52:01.53
>>471
リストをひとつのオブジェクトに見立ててるように見えるけど、
そういう場合は、各要素へのアクセサを定義した方が良いよ。
単純になるし、保守性が良くなる。

あるいは、素直にクラスとか構造体、レコードで定義した方が楽。
単なる演習とかならどんな書き方しても良いと思うけど。

480 :475:2011/12/12(月) 23:42:26.08
>>471
具体的に書いてよ。
中高一貫校の中学1年生が英作文の問題を必死こいて解いている子に関係代名詞を使うとシンプルな文章になって
読みやすいよと言われても語彙や文法を知らないのですよ。Web参考書は揃っているんだけどw

481 :デフォルトの名無しさん:2011/12/13(火) 00:18:03.51
>>480
詳しく説明するのが面倒だった。食いついて来たら説明する予定だったけど。
てーか取り敢えず落ち着けよ。明後日の方向に弾飛んでんぞw

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

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

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

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

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

こういうイディオムのこと。クラスやレコードはそれらのWeb参考書読んでくれ。

482 :デフォルトの名無しさん:2011/12/13(火) 00:23:05.99
いや、イディオムってのも変か。パターンとか常套手段でひとつ。

なんでもリスト使うようなプロトタイプを最初に作るときとか、
後でデータ構造を差し替えたり、コードの可読性を上げるためにやるでしょ?

483 :デフォルトの名無しさん:2011/12/13(火) 00:47:15.15
Schemeで書いたのは、いじめか。

Python使いにRubyで答えればプログラマとしての幅も広がるし、良いことづくしだ。

484 :デフォルトの名無しさん:2011/12/13(火) 00:52:58.74


485 :デフォルトの名無しさん:2011/12/13(火) 00:56:25.81
いやいやいやいや。>>474の人もSchemeだけど、「動きました!」って言ってんじゃん!
そもそもCommon LispともSchemeとも書いてないんだから。

マジレスすると、CLerだった場合はset-car!をrplacaに読み替えれば分かると思います。
普通は汎変数使うと思うけど。

123 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.01.03 2014/02/20 Code Monkey ★
FOX ★ DSO(Dynamic Shared Object)