Lisp Scheme Part32

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

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

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

■関連スレ
【入門】Common Lisp その7【質問よろず】
http://hibari.2ch.net/test/read.cgi/tech/1270370267/
2デフォルトの名無しさん:2011/04/20(水) 21:31:06.81
1乙-p?
3デフォルトの名無しさん:2011/04/20(水) 21:36:04.03
r7rs では健全でないマクロは書けない?
それとも large language で規定されるのかなぁ
4デフォルトの名無しさん:2011/04/20(水) 21:36:44.72
5デフォルトの名無しさん:2011/04/20(水) 23:15:37.45
>>1
6デフォルトの名無しさん:2011/04/21(木) 07:35:19.41
おっぱい
7デフォルトの名無しさん:2011/04/22(金) 00:41:18.45
即死判定とかってなくなった?
8デフォルトの名無しさん:2011/04/22(金) 07:18:31.77
関数
(define (fn args) ... outputval )
を拡張して出力ふやしたい

でかいライブラリの一部なのであまりいじりたくない。のでglobal varを増やすべきか
(define fn-option-output nil)
...
(define (fn args) ... (set! fn-option-output someval)... outputval )

多値出力で補助的出力を返すべきか

もっとエレガントな方法ありますか?
9デフォルトの名無しさん:2011/04/22(金) 07:32:51.47
多値でなんかいけない理由があるの?
10デフォルトの名無しさん:2011/04/22(金) 10:38:33.61
fnをcall-with-output-stringで呼ぶこと多いので
オプション出力の扱いがめんどう
11デフォルトの名無しさん:2011/04/22(金) 17:04:13.47
>>8 オプショナルな引数を追加できるなら、mutableな構造を渡してそこにセットさせる
(define (fn args . opt)
... (when (and (pair? opt) (pair? (car opt))) (set-car! (car opt) someval) ...))
か、あるいは継続手続きを取らせる
(define (fn args . opt)
... (if (and (pair? opt) (procedure? (car opt))) ((car opt) outputval someval) outputval))
12デフォルトの名無しさん:2011/04/22(金) 20:38:12.20
>>10
receive 使えよ。
13デフォルトの名無しさん:2011/04/28(木) 20:07:17.67
lambdaをランバダ・・・!?とよんでしまった、恥ずかしい///
14デフォルトの名無しさん:2011/04/28(木) 20:09:29.40
何年前のネタだよ
15デフォルトの名無しさん:2011/04/28(木) 20:19:57.47
さて私は何歳でしょうカッ!
16デフォルトの名無しさん:2011/04/28(木) 22:48:25.88
Gaucheの専用スレってないの?
ここでいいのかな?
17デフォルトの名無しさん:2011/04/29(金) 22:12:13.55
>>16
ここでいいよ、 gauche ユーザ多いし
18デフォルトの名無しさん:2011/04/30(土) 18:33:32.90
Gauche って r6rs の便利な部分だけは取り込むって感じのスタンス
だったけど、 r7rs にはなんか積極的な雰囲気を感じる。
(まだまだこれから議論されるからなんとも言えんとこもあるが。)
やっぱ r6rs は駄目な子なんかな。
19デフォルトの名無しさん:2011/04/30(土) 18:36:32.92
結構違うから、実装するの面倒だしな。
r5rsの部分もない状態なら、r6rsだけやる選択もあっただろうが。
20デフォルトの名無しさん:2011/04/30(土) 18:40:59.41
Gaucheはscheme原理主義
21デフォルトの名無しさん:2011/04/30(土) 18:54:10.94
ン?さらにschemeのバージョン違いの話でしょ。
22デフォルトの名無しさん:2011/04/30(土) 19:24:45.28
Gauche は実用主義だよ。
割と節操なく CL とかの便利機能を取り込んでる。
とは言え、 Scheme らしいスジの良さとのトレードオフの見極めがうまいとは思う。
俺は r6rs ってそれほど駄目だとは思わんのだが、
スクリプト言語として使うならやっぱ Gauche が「楽」という印象。
23デフォルトの名無しさん:2011/05/01(日) 16:46:47.90
ゴーシュでいいの読み?
セロ弾きのゴーシュのGaucheだよね。
24デフォルトの名無しさん:2011/05/01(日) 16:50:22.99
名前の由来のひとつではあるし、だいたい俺が会った人はみんなゴーシュと呼んでますね。
25デフォルトの名無しさん:2011/05/01(日) 16:51:07.50
>>23
公式にゴーシュと明記してある
ttp://practical-scheme.net/gauche/index-j.html
26デフォルトの名無しさん:2011/05/01(日) 17:00:29.13
なんだフグじゃないのか?

辞書引いたら病気の名前もあった。
Gau・cher's disease n. 【医】 ゴーシェ病 《遺伝性のグルコセレブロシド代謝障害》
27デフォルトの名無しさん:2011/05/01(日) 17:02:41.91
綴ってある通りに読んだらゴシュかゴーシュにならない?
28デフォルトの名無しさん:2011/05/01(日) 17:08:41.89
電子辞書に発音させてみたらゴシュと言った
29デフォルトの名無しさん:2011/05/01(日) 17:32:59.92
「左」という意味だと聞いたが
30デフォルトの名無しさん:2011/05/01(日) 17:56:37.61
31デフォルトの名無しさん:2011/05/01(日) 18:16:48.44
>>30
音楽関係のライブラリってあるの?
32デフォルトの名無しさん:2011/05/01(日) 21:12:48.07
gauche = ガウチェ
33デフォルトの名無しさん:2011/05/02(月) 09:28:49.84
翻訳ロボット 作れるって本当ですか?
34デフォルトの名無しさん:2011/05/02(月) 15:54:56.47
作れます
35デフォルトの名無しさん:2011/05/02(月) 16:18:59.64
階乗とかハノイの塔あたりを作ったあと、次になんかまとまった
プログラムが書けません。お題というか、次のステップにつなげるいい本とか
ないでしょうか?
36デフォルトの名無しさん:2011/05/02(月) 16:34:21.95
>>35
計算機科学の基礎教養があれば、適当なコード読んでLispのイディオム学べば良いし、
そういった知識がないなら、SICPとかの計算機科学の教科書を読めば良い。
ウェブに転がってる大学の講義の問題をLispで書いてみたりするのも良いと思う。

もっと軽めにやりたいなら、Practical Common Lispとかは割と実用的で軽め。
37デフォルトの名無しさん:2011/05/02(月) 17:06:32.53
racketで作ったwebサイトがracketのバージョン上げたら動かなくなった
何か大幅な変更あったの?
38デフォルトの名無しさん:2011/05/02(月) 19:54:09.19
なんでバージョンアップする前に変更点チェックしないんだよw
39デフォルトの名無しさん:2011/05/02(月) 22:28:47.58
>>35
他言語の小さいアプリを移植してみるのがわりとおすすめ、その際schemeらしい処理に書き換えながら行う
unitテストのついてる奴があればテストで同じ結果がだせるようにすることで間違いなく関数単位で動作させている安心感もえられる
40デフォルトの名無しさん:2011/05/03(火) 15:01:06.74
まさかチュートリアルに書いてあるようなことまで変更なるとは思ってなかった
41デフォルトの名無しさん:2011/05/04(水) 21:04:38.60
「LISP」に対する不満が募る

http://blog.livedoor.jp/insidears/archives/52456597.html
42デフォルトの名無しさん:2011/05/04(水) 21:48:04.21
>>36
> そういった知識がないなら、SICPとかの計算機科学の教科書を読めば良い。

ttp://kashino.tumblr.com/post/186793436/technical-requirements-special-software-is

>こだわりのあるオヤジプログラマほど、LISP系の言語じゃなきゃプログラミングの本質を掴めないとか、
>SICPをやらなきゃ云々ということを主張するかもしれないけれど、そんなの幻想だよ。

>現実に課題を抱えた職業プログラマには不適であるとさえ思う。SICPを輪講するくらいなら、実際のフ
>レームワークや言語の実装を直接デバッガで止めながら動作させて「コードリーディング」したほうが、
>何倍も力がつくと思うよ。

SICPはオワコンだからそんなものやっても時間を無駄にするだけ

43デフォルトの名無しさん:2011/05/04(水) 21:57:22.20
うんまあ、なんでも断言する奴はバカだ(キリッ
44デフォルトの名無しさん:2011/05/04(水) 22:00:29.19
人を見て法を説けということだねえ
45デフォルトの名無しさん:2011/05/04(水) 22:34:59.59
もう明日からPythonに乗り換えるわ
46デフォルトの名無しさん:2011/05/04(水) 22:46:47.83
連休だからな
47デフォルトの名無しさん:2011/05/05(木) 08:08:17.99
マクロの必要性をあまり感じないのは、俺だけ?
正直、文法を拡張したいと、思ったことが無い。
48デフォルトの名無しさん:2011/05/05(木) 09:18:20.76
>>47
おれは文法を拡張したい、とは思ってないよ。
おれは個人で巨大なプログラムを、効率よく書きたい。
そのために、マクロでプログラムを短く圧縮して書く以外の
方法を知らない。ある意味しかたなくマクロを使ってる。
49デフォルトの名無しさん:2011/05/05(木) 10:52:17.00
>>42
別にSICPとかの教本がLispでポピュラーだから挙げただけで、
アルゴリズムとかデータ構造、計算量などの概念などを無理なく学習できるなら、
手段は別になんだって良いよ。要は計算機科学の知識が大事なだけであって。

フレームワークとか使ってても、ロジック部分は自分で書かなくちゃいけない。
そこで、配列にすべきかリストにすべきか、そういった技術上の取捨選択をするときに、
大学でやる程度の計算機科学の基礎教養がなければ、判断することもできない。

>>47
loopとかiterate、receiveとかマクロないと割とだるいと思うけど、その辺どうだろう。
Schemerだから再帰しか使いませんとか、call-with-valuesで不便に感じませんとか、
そういう人なら要らんかもしれんけど、普段は意識しないだけじゃないかな。
50デフォルトの名無しさん:2011/05/05(木) 11:02:59.04
あと、CL-WHOみたいな、DSLを扱う場合はマクロの威力を思い知ると思う。
51デフォルトの名無しさん:2011/05/05(木) 12:51:35.58
>>42
「現実に課題を抱えた職業プログラマ」 はコンパイラ作らないし
レキシャルアナライザもパーサジェネレータも使う事はないだろうから
当然といえば当然
52デフォルトの名無しさん:2011/05/05(木) 13:19:58.45
antlrぐらいなら使うけどな
53デフォルトの名無しさん:2011/05/05(木) 15:00:19.25
> レキシャルアナライザもパーサジェネレータも使う事はない
俺は、たいていの仕事でお世話になってるんだが
# 全体の量から比べると比率的には小さいけど、
# だからこそ、そんな所に時間使いたくないしね
54デフォルトの名無しさん:2011/05/05(木) 17:51:04.25
antlr
とabcl
かKAWA
を組みあわせた人いない?
55デフォルトの名無しさん:2011/05/06(金) 09:35:05.70
>>42は、何が書いてあるかより誰が書いたかが重要で
そんなものが根拠になると考えているっぽい点で
こだわりのあるオヤジプログラマと同類っぽい
56デフォルトの名無しさん:2011/05/06(金) 09:54:56.43
>>55
書き込む前に意味が通るかどうか読み返すクセつけろ。
今日から。
57デフォルトの名無しさん:2011/05/06(金) 11:38:54.93
>>51何度もぶつかる同じパターンにはDSL作ってプログラマー以外に仕事させたほうがいいとおもうけどなあ。
58デフォルトの名無しさん:2011/05/06(金) 14:21:08.82
>>57
しかし、そのDSLが括弧の嵐なのでは…
59デフォルトの名無しさん:2011/05/06(金) 15:39:28.10
職場の事情に類することはマ板でやってくれ。
60デフォルトの名無しさん:2011/05/06(金) 17:29:27.92
職場の情事はム板で桶
61デフォルトの名無しさん:2011/05/06(金) 17:42:09.33
jsonでもyaml、xmlでもいいじゃない。
62デフォルトの名無しさん:2011/05/06(金) 18:07:10.47
そもそもだな、HTMLやXMLをS式を使わなかったのが問題だ。
63デフォルトの名無しさん:2011/05/06(金) 18:10:01.66
CSSはDSSSLそのまま採用されていた可能性はあったけどな。
MSがCSSを提案して飲まれちゃったんで。
64デフォルトの名無しさん:2011/05/06(金) 19:58:15.25
S式とリストについて質問です。

リストはS式、それともS式はリスト?
それともリストとS式は等価な意味?

少々ここら辺が良く分かりません。
65デフォルトの名無しさん:2011/05/06(金) 20:05:55.30
Lispにおいて、リストはコンスセルを使ったデータ表現の一つです。
コンスセルはリストを表現するためのものではなくて、例えば二分木も表現できます。
S式はLispデータ全ての総称、あるいはその印字表現です。
66デフォルトの名無しさん:2011/05/06(金) 20:19:29.26
S式とリストでぐぐって最初にでてくるこれがわかりやすいと思う。

ttp://www.stdio.h.kyoto-u.ac.jp/~hioki/gairon-enshuu/SchemeNotes/s-expression.html
67デフォルトの名無しさん:2011/05/06(金) 20:23:54.79
Scheme限定だと規約読むのが一番いい。
68デフォルトの名無しさん:2011/05/06(金) 20:26:08.14
>>65-67
どもです、分かりやすい説明ありがとうございます。
お勧めしていただいた資料も一緒に読んでみたいと思います。
69デフォルトの名無しさん:2011/05/06(金) 22:30:54.28
>>58
一度onjoさんのLISPサイト見るべき
Lisp的にキモイコードの話はもの凄く参考になる
70デフォルトの名無しさん:2011/05/06(金) 23:57:20.87
define-syntaxで作った制御構造を使うときに
エディタのインデント制御ってどうしてますか?
気にしない?

今、win環境でxyzzy使ってて、xyzzyのlispなら自前の制御構造定義した直後に
(setf (get 'mymacro 'ed::lisp-indent-hook) 1)
とかやってるのですが、Gaucheとかのプログラムを書いてるときは
みんなどうしてるのかなーと。

71デフォルトの名無しさん:2011/05/07(土) 00:46:08.41
インデントは全部同じ形式。気にすると切りがない。
72デフォルトの名無しさん:2011/05/07(土) 06:07:48.37
>>70
Emacsだとlisp-indentation
73デフォルトの名無しさん:2011/05/07(土) 23:49:46.35
オライリーの「プログラミングGauche」ってこのスレ的に評価どう?
アマゾンで買おうかどうか迷ってるんだけど。
74デフォルトの名無しさん:2011/05/08(日) 00:26:51.16
>>73
karetta.jp(震災の影響でサーバ止まってる)に全文あるけど、買っても絶対に損はしない。というか買っとけw
75デフォルトの名無しさん:2011/05/08(日) 00:38:07.00
>>73
前半は Scheme 全般に適用できる基礎知識で、
後半は Gauche 特有の機能の紹介。
全体にやや平易。 入門者向け。
あなたが既に Scheme ユーザーなのなら若干物足りなく感じるかも。
76デフォルトの名無しさん:2011/05/08(日) 21:24:31.38
表紙の魚の名前が可愛いから買っとけ
77デフォルトの名無しさん:2011/05/08(日) 21:29:08.09
フムフムヌクヌクプアアアだっけ
78デフォルトの名無しさん:2011/05/08(日) 21:54:00.48
みんな買って持ってるの?
79デフォルトの名無しさん:2011/05/08(日) 22:24:09.07
そんな事ありうるわけ無いだろ
80デフォルトの名無しさん:2011/05/08(日) 22:26:19.19
81デフォルトの名無しさん:2011/05/09(月) 02:26:54.64
オライリーのGauche本、本屋にあって買ってきた。というかサイトにあるなら買わなきゃよかったなあ。
LISPに関してはまったくの初心者なので、いったいどいうのはいいのかわからないんだけど、リスト操作の
基本からじっくり解説している感じなのでよかったかな、とは思う。

『 初めての人のためのLISP』なんかは一見面白そうだけど、なんか変なクセがあって敬遠してしまった。
Smalltalkの青木本みたいな感じがして。衒学ですごそうに見えるけど、結局何言ってんだかわからん、
になると危険なような気がして。

今どきのLISP入門はどういう本をどういう順序で読むのがいいのだろう?
82デフォルトの名無しさん:2011/05/09(月) 02:38:05.77
>>81
今どきは "scheme 入門" でググれば cons からコンセツ丁寧に解説してくれている文書が
沢山あるんじゃないかな。10 年前に自分が勉強した時もネットに沢山あったよ。

一口に LISP と言っても Common Lisp と Scheme と(他にも色々)あるんだけど、
どっちを勉強したいの?
83デフォルトの名無しさん:2011/05/09(月) 03:01:25.14
>>81
もしも貴方が、LISP というおかしな言語があるという事をお聞きになって興味を持たれたのでしたら、
それは多分 Scheme の事ですから、"Scheme 継続" で検索されると良いでしょう。

そうではなくて、LISP という何だかおかしな言語があるという事をお聞きになって興味を持たれたのでしたら、
それは Common Lisp の事ですから、"CL リーダーマクロ" でお探しになると良いと思います。

どちらにせよ、あなたの幸運をお祈り致します。
84デフォルトの名無しさん:2011/05/09(月) 07:00:05.87
入門だけなら本気でネットのテキストで十分だと思う。SchemeもCommon Lispも。
コンスセル、quote、シンボル、主要な特殊形式なんかが分かれば、大体問題ないだろうし、
細かい部分は、結局RnRSとかHyperSpec、CLtL2読まなきゃいけないし。

実際の所、コードはすぐ書けるようになると思うけど、Lispで壁に当たるのはむしろその後だよね。
開発環境の整え方とか、日本語の扱いとか、実行ファイルの作り方とか、ライブラリの管理とか、
有益な情報源の在り処とか。入門はやたら検索に掛かるけど、応用例は驚くほど見付からない。
85デフォルトの名無しさん:2011/05/09(月) 08:18:14.34
>>81
とりあえず買ったのを最後まで読んでw
86デフォルトの名無しさん:2011/05/09(月) 10:05:21.04
racketはこれからも互換性ない仕様変更をしまくるのだろうか
みんながGauche使う理由がなんとなくわかってきた
87デフォルトの名無しさん:2011/05/09(月) 11:28:46.98
そういうのは、
#lang XXX
を何にしているか次第なんじゃないの?
複数の言語が実装されている環境なんだから。
88デフォルトの名無しさん:2011/05/09(月) 12:18:15.41
>>85
> とりあえず買ったのを最後まで読んでw

なんで小馬鹿にするんですか?
89デフォルトの名無しさん:2011/05/09(月) 12:27:31.44
気のせいです。
90デフォルトの名無しさん:2011/05/09(月) 12:51:05.90
LISP界隈は態度だけえらそーな無能古参が多いからいちいち気にする必要はないな。
似非ハッカーが9割。
91デフォルトの名無しさん:2011/05/09(月) 13:28:07.17
racketに
#gauche
あればいいのに
92デフォルトの名無しさん:2011/05/09(月) 15:25:18.61
空リストについて質問です。

表記上は () と書きますが、これは(nil . nil)と同等なのでしょうか?
それとも () を評価したときに買ってくる単なる nil なのでしょうか?
93デフォルトの名無しさん:2011/05/09(月) 15:28:07.48
() = 単なるnil。

(nil . nil)だと(nil)=(())になっちゃうよ
94デフォルトの名無しさん:2011/05/09(月) 15:58:24.31
>>93
なるほど、どもです。
分かりやすい解説ありがとうございました。
95デフォルトの名無しさん:2011/05/09(月) 21:35:18.74
それこそちょっと調べればわかるレベルの質問だな。
96デフォルトの名無しさん:2011/05/09(月) 21:54:42.45
90 名前:デフォルトの名無しさん [sage] :2011/05/09(月) 12:51:05.90
LISP界隈は態度だけえらそーな無能古参が多いからいちいち気にする必要はないな。
似非ハッカーが9割。
97デフォルトの名無しさん:2011/05/09(月) 22:04:50.84
「不完全にしておよそ正しくないプログラミング言語小史」を参照。
98デフォルトの名無しさん:2011/05/09(月) 23:01:45.19
>>97
俺のコーヒー返せw
その内訳、モニターにかかったカフェイン70%
鼻に抜けた牛乳30%である

#口に物を入れてよんじゃだめってかいてわりとマジデw
99デフォルトの名無しさん:2011/05/10(火) 09:48:25.08
1冊の本を最後まで読みきるなんて勉強スタイルは受験勉強と共に卒業すべき。
ある本でよく分からない記述があったら別の本でその説明を探すって感じで、
何冊もの本、ウェブ上の教科書をつまみ食いする方が効率がいい。

大抵の理解できない記述は、自分じゃなくて著者が悪いんだと思う方が気が楽。
そして実際に書き方が悪かった、ということの方が多い。
「見下し」というプログラミングテクニックをはやく習得しなさい。
100デフォルトの名無しさん:2011/05/10(火) 09:56:38.29
ぜんぜん「見下し」と関係ないじゃん。
バカなの?
101デフォルトの名無しさん:2011/05/10(火) 10:07:10.31
90 名前:デフォルトの名無しさん [sage] :2011/05/09(月) 12:51:05.90
LISP界隈は態度だけえらそーな無能古参が多いからいちいち気にする必要はないな。
似非ハッカーが9割。
102デフォルトの名無しさん:2011/05/10(火) 10:11:40.95
"condescension"を「見下し」って訳は酷いね。
まあ煽ってなんぼって考えの翻訳者なんだろうね。
103デフォルトの名無しさん:2011/05/10(火) 10:19:36.10
lispが詐欺が多いのは知ってるけどね
104デフォルトの名無しさん:2011/05/10(火) 15:50:51.22
Lispで儲けたのはPaul Grahamだけだ
ってどこかに書いてあったな
105デフォルトの名無しさん:2011/05/10(火) 15:54:16.85
普通の奴の上を行け
106デフォルトの名無しさん:2011/05/10(火) 17:34:45.98
確かにLispの仕事で得た金銭がPaul Grahamを超える人物はいてもごくわずかだろうけど
さすがに「だけ」ってほど狭き門でもないだろ、多分w

「Lisp以外の言語では1銭も得られなかっただろう、Lispがあったから俺は今日を生きてるんだ」
レベルの「Lispのおかげで儲かった人」はめったにいないだろうけど……つーかいるのか?
107デフォルトの名無しさん:2011/05/10(火) 18:47:50.02
LISPを勉強している人のことはたくさん聞くけど、
LISPで何かProductを作ってる人のことは、ほとんど聞いた事がない。
108デフォルトの名無しさん:2011/05/10(火) 19:21:52.18
Cと比べたら母数がすくねえしな。
日本語環境もGUI環境もWEB関連も満足なものがすくないし。
109デフォルトの名無しさん:2011/05/10(火) 19:23:58.47
こないだ公開されたbyflowはClojureを使ってたと思う
まあぶっちゃけLispで募集出してもそう集まるもんじゃないだろうし
Lispで募集出すような会社は元々Lisperが多いとしか思えない

仮に使うとしたらWebサービスはランタイム込みのバイナリを配布せずに済むからありかなと思うが
PHPかRubyかPythonの方が集まるっていう
110デフォルトの名無しさん:2011/05/10(火) 20:59:30.76
大学にいたころはLISP使ってる人しかいなかった
111デフォルトの名無しさん:2011/05/10(火) 21:11:03.40
世間から隔離されたキチガイの収容施設だもんしょうがない
112デフォルトの名無しさん:2011/05/10(火) 22:10:56.25
Allegroなど商用システムが、何処で使われてるのかほとんど分からんのだよな。

下のも倒産してるし微妙なのかな?
http://en.wikipedia.org/wiki/Thinking_Machines_Corporation
http://ja.m.wikipedia.org/wiki/シンキングマシンズ
113デフォルトの名無しさん:2011/05/11(水) 00:20:44.28
LinuxにインストールしたGaucheでスタック使い切ったらどうなるかな、と思って
再帰の多いやつやってみたらLinuxがいきなり落ちたので笑った。
最近のLinuxはWindowsより堅牢じゃないのかよ。
114デフォルトの名無しさん:2011/05/11(水) 00:22:08.17
>>113
sh -c 'ulimit -d 'するとどう?
115デフォルトの名無しさん:2011/05/11(水) 00:28:56.86
116デフォルトの名無しさん:2011/05/11(水) 00:31:23.26
ものすごい勢いで、カタカナで高度なウンチク語る人は多いんだよな。
117デフォルトの名無しさん:2011/05/11(水) 00:31:25.47
それOSより自分のハードウェアを疑うところ。
S.M.A.R.T.とメモリの確認した方がいいとおもう。
118デフォルトの名無しさん:2011/05/11(水) 01:44:19.63
>>113
本来こういう時ってどういうエラーがでるのが正しいのかな?
OSがスタック確保できなくなった、というエラーを返して、Scheme側がエラーを出して終了?
119デフォルトの名無しさん:2011/05/11(水) 10:52:44.11
>>102
どう訳すのが適切なんだ?
120デフォルトの名無しさん:2011/05/11(水) 13:34:46.33
>>118
Gaucheは自前でスタック管理してて、あふれるとヒープに移すから、無限再帰するようなプログラムは
ヒープを使い尽くすまで走るよ。通常はまずスラッシングでめちゃくちゃ遅くなって、最終的に
ヒープが確保できなくなったらGaucheがabortするんじゃないかな。
Gaucheの組み込みルーチンで、Cで書かれているものの中で再帰した場合 (writeとか) は
Cのスタックを使い切ったところでSEGVして終了。
121デフォルトの名無しさん:2011/05/11(水) 15:30:47.64
fold
とか
reduce
とか
名前を統一してくれないものか
122デフォルトの名無しさん:2011/05/11(水) 16:29:24.35
今からleft/rightを両方持ってる言語を作るならfoldでいいんじゃね
leftだけある言語や昔ながらの言語はreduceなことが多い気がする
(rreduceとかreduceRightとか命名してる言語もあるが)
123デフォルトの名無しさん:2011/05/11(水) 18:40:39.86
Schemeが標準でサポートしていなくてはならない関数一覧は、
R5RSではなくSRFIで定義されているものでよいのでしょうか?

それともSRFIは拡張ライブラリ的な扱いなのでそしょうか?
124デフォルトの名無しさん:2011/05/11(水) 18:49:58.81
「標準」という言葉の定義によるとしか言えない。
「R5RS準拠」ならR5RSを満たしていればいい。
125デフォルトの名無しさん:2011/05/11(水) 19:17:12.60
R5RSが定めている標準関数は、6章の標準手続きに登場するものだけということでしょうか?
126デフォルトの名無しさん:2011/05/12(木) 10:43:08.92
>>113
落ちたって、具体的には?
スラッシングで反応遅いのとは違いますか?
127デフォルトの名無しさん:2011/05/12(木) 11:46:13.87
昔からlinuxはだめだめですよ
128デフォルトの名無しさん:2011/05/12(木) 11:59:58.46
qobiScheme使う人って日本にはいないの?
129デフォルトの名無しさん:2011/05/12(木) 13:37:31.15
発展解消したので、stalinやCheckenの方を使っているのでは?
130デフォルトの名無しさん:2011/05/12(木) 13:40:00.80
Checken → CHICKEN
131デフォルトの名無しさん:2011/05/12(木) 13:53:18.05
qobiScheme
Last update Tuesday 24 August 2010 ?

割と最近まで使われてたみたいな気がする
132デフォルトの名無しさん:2011/05/12(木) 13:55:12.65
133デフォルトの名無しさん:2011/05/12(木) 14:01:00.28
CHICKENはコードベースが違う。
Stalinは直系だけど開発がほぼ停まってる。
134デフォルトの名無しさん:2011/05/12(木) 16:20:34.21
>>126
遅くなって、特にエラーメッセージなしでOSが落ちてPC再起動。
Ubuntu11.04

135デフォルトの名無しさん:2011/05/12(木) 16:54:28.87
普通メモリ使い切るとかだとOOM Killerが発動して終わり、だと思うけどなぁ
たまたまバグがあってそれを踏んでるとかだな多分
136デフォルトの名無しさん:2011/05/14(土) 00:37:55.53
iOS向けにiSchemeってREPL載っけて売ってる中華圏の人がいるんだけど、
なんで他の配布してる無料アプリが俺妹っぽいイカ娘アイコンなのw
137デフォルトの名無しさん:2011/05/14(土) 02:31:14.28
なんでそれで審査通ったのか不思議
138デフォルトの名無しさん:2011/05/14(土) 02:41:11.39
Appleの審査がいかにザルってことかだよな。
その割に意味不明なReject。
139デフォルトの名無しさん:2011/05/14(土) 09:00:51.79
>138
追加コンテンツにも30%だまって払えば何でも通りそう
140デフォルトの名無しさん:2011/05/14(土) 11:09:20.00
みんなはLispで具体的になにやってんの?
自分は具体的は利用シーンが思いつかなくて、役立ってません。
面白い言語だと思うのですが。
141デフォルトの名無しさん:2011/05/14(土) 11:37:20.79
何回同じ質問繰り返すんだよw
会社で利用したいけど、周囲の説得のために事例を知りたい、とかならまだしも、
自分で使う分には、汎用言語なんだから、好きな物作れば良いよ。

みんなはC/C++で(ryみんなはJavaで(ryみんなはPerlで(ryみんなはPythonで(ry
みたいな質問するか? それと一緒だと気付いてくれ。
142デフォルトの名無しさん:2011/05/14(土) 11:51:26.19
質問したら答えるでしょ
というか聞かれる前に何やっているかblogとかに書いてるじゃん
143デフォルトの名無しさん:2011/05/14(土) 12:07:01.98
>>140
「女の子と付きあいたいけど、付きあって何したらいいか思いつかない」
なんてことを言ってる奴は絶対にモテないぞ!
Lisp も同じで、好きに使えばいいんだ!
144 [―{}@{}@{}-] デフォルトの名無しさん:2011/05/14(土) 12:17:41.29
ブラウザの拡張をLispで書けたら楽しいんだけどなあ
145デフォルトの名無しさん:2011/05/14(土) 12:20:15.01
既に Scheme to JavaScript なトランスレータがあった様な・・・

元々 NetScape の人は JavaScript じゃなくて Scheme を載せる予定だったんだっけ?
何かそんな話を聞いた事がある気がする
146デフォルトの名無しさん:2011/05/14(土) 12:24:35.28
好きなもの作れよってあたりまえだろ。
それが思いつかないから質問している人がいるわけで。
こういう特性があるから、こういうもの作ったら、みたいなヒントや雑談すればいいのに。
誰でも思いつく正論わめいてドヤ顔ってどんだけ頭悪いんだ?
147デフォルトの名無しさん:2011/05/14(土) 12:54:25.41
作る物が思い付かないなら作らなきゃ良いだけの様な・・・

普通は作りたい物があるから作るんだと思うんだけど、
自分の作りたい物も分からない人はまず初心者スレに
行ったら良いと思う
148デフォルトの名無しさん:2011/05/14(土) 12:55:17.50
それなら最初からどういう分野に向いていますか、って聞けばいいじゃん。
自分は具体的な利用シーンが思い付かないとか言われても知らんがな。
で、他人からこういうもの作ったら、って言われて、それ作んの? 馬鹿馬鹿しい。
書きたいコードのネタなんて、その辺に転がってるのを自分で見付けてくるもんだろ。

動的型でリストという柔軟なデータ型が基盤だから、プロトタイピングに適する。
また、優れたメタプログラミング機能により、DSLの構築をし易い。
リーダーが含まれるので、S式を使えば設定ファイルなどでパーサを書かずに済む。
言語コアが小さく、構造もシンプルなので、組み込み用途に向く。

こういった特徴があるけど、汎用言語だから大抵のものは書けるし、
FFIやリーダーマクロを使えばアクロバティックなこともできる。
149デフォルトの名無しさん:2011/05/14(土) 12:58:27.27
LISP界隈は態度だけえらそーな無能古参が多いからいちいち気にする必要はないな。
似非ハッカーが9割。
150デフォルトの名無しさん:2011/05/14(土) 13:02:37.09
JavaScriptコンパイラなら、CLだとParenscriptとかあるぜ。
151デフォルトの名無しさん:2011/05/14(土) 13:04:47.01
無能古参とかドヤ顔とか煽ってる奴も、元ネタへの回答とか、
助言とかはしてやらないんだなw
152デフォルトの名無しさん:2011/05/14(土) 13:06:52.57
死ねよ無能古参
153デフォルトの名無しさん:2011/05/14(土) 13:23:23.84
和やかな雰囲気のところ失礼します

(defun member? (x xs)
  (cond ((eq xs nil) nil)
        ((eq x (car xs)) t)
        (t (member? (cdr xs)))))

この場合、次のどちらになるでしょうか

1. 再帰のたびにxsのcdrを新しく生成するので、最悪の場合にはxsの階乗分のメモリを食う
2. cdrへのポインタなり参照を渡すだけなのでxsひとつ分のメモリを食う
154デフォルトの名無しさん:2011/05/14(土) 13:29:45.86
cdrはconsingしないよー。cdr部のアドレス渡すだけー。
cdrでコピー作っちゃうと、eqとかeq?でアドレス比較できなくて困る。
155デフォルトの名無しさん:2011/05/14(土) 13:39:40.25
ごめん。読み違いしてた。関数にリストを渡すとき、コピーを作るかどうか、って話だよね。
2で合ってるはず。仮に引数に渡されたリストをコピーするなら、破壊的な関数が存在できない。
156デフォルトの名無しさん:2011/05/14(土) 13:58:52.01
気の利いた処理系なら末尾再帰の最適化を行うのでループになって
ぐるぐるして終わりだと思う。
157デフォルトの名無しさん:2011/05/14(土) 14:01:04.76
>>149
スタージョンの法則の一例に過ぎん
158デフォルトの名無しさん:2011/05/14(土) 14:10:27.52
>>154-155
惑わせてしまってすいません。>>153の時点では
関数に値を渡す際に何が行われるかって問題と、
関数が何を行って何を返すのかって問題がごっちゃになっていたようです

問題がはっきりして助かりました。ありがとうございました
今後そのあたりを意識しつつ勉強していきたいと思います

>>156
末尾再帰だと再帰をループに展開できるんですよね。調べてきます
159デフォルトの名無しさん:2011/05/14(土) 17:30:01.53
>>141
>みんなはC/C++で(ryみんなはJavaで(ryみんなはPerlで(ryみんなはPythonで(ry
>みたいな質問するか? それと一緒だと気付いてくれ。

他の言語に対して、同じ質問しないよ。
成果物が沢山出回ってるので、聞かなくても分かるからね。
お前みたいな、ウンチク野郎が多い割には成果物が見えないから、聞いてみたんだ。

お前の言葉で理解したよ。Lispは覚えるだけで偉そうにできる、成果を出す必要が無い、ウンチク言語だって。
これからも、お勉強してウンチク語って満足してください。
ありがとうございました。
160デフォルトの名無しさん:2011/05/14(土) 17:46:17.68
他人の成果物を見て想像を膨らませたい人には辛い言語かもね。
さよなら。
161デフォルトの名無しさん:2011/05/14(土) 17:50:14.17
成果とか些細なこと気にするなよ
162デフォルトの名無しさん:2011/05/14(土) 18:38:00.99
最初からそんな考えで聞いてれば、そりゃあ思惑が透けて見えて皮肉られるだろ。
163デフォルトの名無しさん:2011/05/14(土) 18:39:27.31
色々仕事で作ってるけど、お客さんの注文に合わせた単品ものだから
こういうものって説明が難しいなあ。成果物は出回らないし、
NDAがあるからあまり具体的にも話せない。

別にLispじゃなきゃできないってもんでもない。自分はLispで書くのが
速くて楽ってだけ。C++でも書けるだろうけど書きたくない。
低レベルのところのチューニングのウェイトが高い案件が多いので、
そのへんが直接いじれない言語(処理系)ではできないとは思うが。
164デフォルトの名無しさん:2011/05/14(土) 18:45:10.48
やっぱAllegro? それともSBCLとか?
165デフォルトの名無しさん:2011/05/14(土) 18:48:40.39
NDAがあるのは他言語でも同じなんだが
それでも成果物出回ってるよ
166デフォルトの名無しさん:2011/05/14(土) 18:50:34.15
>>165
Lisp で「低レベルのところのチューニングのウェイトが高い」とか
ぃってる奴なんだから、そっとしとこうよ。
167デフォルトの名無しさん:2011/05/14(土) 19:03:30.47
じゃあ、真面目に回答するけど、EmacsとGIMPじゃ不足? uimとか古くはCannaとかもそうだね。
CLikiは見た? 「Lisp Wiki」で三番目に出てくる。GitHubやBitbucket、Launchpadで検索しても良い。

Slashdotとか読んでたら、高速httpdのteepeedee2とかのニュースも読んだことあるかもしれない。
この前Googleに買収されたITAはLispのユーザーだし、RedditはかつてLispを使っていた。
ALUのWikiには商業での事例が載っているし、ゲームのクラッシュ・バンディクーとかを作った
Naughty DogはLispを使ったゲーム作りもしている。

この辺はグーグル先生に聞くだけで、簡単に出てくる。
168デフォルトの名無しさん:2011/05/14(土) 19:08:38.28
>>166
コンパイラマクロとかdeclaim、declare、the、disassembleとかをご存じない方ですか?
実装依存の機能なら、ACLのLAPとか。
169デフォルトの名無しさん:2011/05/14(土) 19:24:48.56
163だけど。使ってるのはAllegro。disassembleは手放せない。
>>165 他言語でも、出回ってるのはある程度汎用性の高いものでしょ。
これは言語によらないけど、単品ものってお客さんの業務の内部事情に密接に
関わってるんで、「何をするもの」ってあんまり具体的に言いにくいんだよね。
よっぽどぼかしても、近い人だとピンときちゃうことがあるかもしれないから。
ものすごく大雑把に言うと、データを集めて格納して探すもの、ってパターンが多いかなあ。
性能を追っかけるのと、ロバストネスを高めるところがだいたい毎回ポイントになる。
170デフォルトの名無しさん:2011/05/14(土) 19:39:25.35
>>168
いや、そんなもんに頼るウェイトが高い案件が多いなら、
そもそも処理系の選定から間違ってるように思うけどな。

まあ君がそれが楽だと言うなら別にいいんだけど。
171デフォルトの名無しさん:2011/05/14(土) 20:33:19.49
>>170
CL 派の人たちは割とそういう世界観な気がする
生成される機械語のコードを結構気にしてるよね
172デフォルトの名無しさん:2011/05/14(土) 21:31:57.22
"自分では分からないが有益そうなもの
をやりたい"に関して(スレには関係ない)
http://sites.google.com/site/himazu/you-and-your-research
http://d.hatena.ne.jp/kaz_ataka/touch/20081018/1224287687

173デフォルトの名無しさん:2011/05/16(月) 11:13:06.27
>>172
そう思わせてlisp本売ってる人もいたけどな
174デフォルトの名無しさん:2011/05/16(月) 20:04:32.95
yacc/lexと等価な処理をambでもっと短く書けそうだけど
誰もやってないのかな
175デフォルトの名無しさん:2011/05/16(月) 21:43:43.46
yaccの寿命は長いねえ
176デフォルトの名無しさん:2011/05/16(月) 23:04:43.44
Parser combinatorまで大きな進展なかったしな。
177デフォルトの名無しさん:2011/05/17(火) 03:14:30.35
PEGにしかできないこととYACCにしかできないことがあるので
単純な置き換えは無理な気がする
178デフォルトの名無しさん:2011/05/17(火) 09:47:11.40
>PEGにしかできないこととYACCにしかできないことがあるので
そこまで使い込んだことないけど、書きにくいことはあるのはしってる。
どんな事例だとできないの?
179デフォルトの名無しさん:2011/05/17(火) 10:42:11.13
とりあえず英語でPEGのサイト作ってる人の学位論文に、CFGでは不可能だけど
PEGならできる、という文法の例がいくつか載っている。

実用的には、PEGだと展開の候補がCFGみたいにパラレルなものじゃなくて、
A = B / C / D は B でダメなら C 、それでもダメなら D という意味なので、
基本的にambiguityがない。

YACCは例えば、
EXP = EXP '*' EXP
EXP = EXP '+' EXP
とか定義しておいて、結合性と優先順位は外付けする、とかできるので、
理論的なPEGの範囲内にはそういうのはない。
180デフォルトの名無しさん:2011/05/17(火) 11:09:27.40
ambで短く改造しやすいコードにすれば
コードいじって例外処理入れるの簡単じゃない

だれかやらないかなあ
181デフォルトの名無しさん:2011/05/17(火) 11:45:32.91
>>180
あっ そういえばOn Lispの最後の方に状態マシンを短く書く方法載ってましたね
182デフォルトの名無しさん:2011/05/17(火) 16:14:15.73
LCやSchemeでは、Cで言うところのconst変数(定数目的)はどのように記述するのでしょうか?
setqなどでシンボルに束縛するだけでは変更できてしまうので何か手法があるのかな・・・
183デフォルトの名無しさん:2011/05/17(火) 16:19:50.03
LCじゃなくてCommon Lispだけど。
つ defconstant
184デフォルトの名無しさん:2011/05/17(火) 16:20:40.68
CommonLispならよういされているんですね、ありがとうございます。
185デフォルトの名無しさん:2011/05/17(火) 17:14:21.90
SchemeでもGaucheほかいくつかの処理系にはdefine-constantがある。
186デフォルトの名無しさん:2011/05/17(火) 17:26:26.19
Rって実質、中身はschemeと同じと聞いたのですが
lispの勉強をある程度している人向けのR入門書でいい本ないですか?
187デフォルトの名無しさん:2011/05/17(火) 22:09:14.93
Lispを「ある程度」勉強したものはそのようなレベルの質問はしない。
188 【東電 63.4 %】 :2011/05/18(水) 01:00:06.20
90 名前:デフォルトの名無しさん [sage] :2011/05/09(月) 12:51:05.90
LISP界隈は態度だけえらそーな無能古参が多いからいちいち気にする必要はないな。
似非ハッカーが9割。
189デフォルトの名無しさん:2011/05/18(水) 01:28:11.28
東電君が教えてやれよ
190デフォルトの名無しさん:2011/05/18(水) 01:31:17.68
愚問を貼る→叩かれる→コピペを貼る→うれしい
のループってのはLISP界隈に限ったことじゃないな
191デフォルトの名無しさん:2011/05/18(水) 01:33:53.28
LISP って書く人と Lisp って書く人の境界線は何なんだろ…
192デフォルトの名無しさん:2011/05/18(水) 01:34:35.72
ま、叩くのも自分でやってくれるんでw
193デフォルトの名無しさん:2011/05/18(水) 07:42:37.17
>>191
昔のコンピュータは大文字しか使えなかったんだよ。
194デフォルトの名無しさん:2011/05/18(水) 07:46:54.59
LiSP
195デフォルトの名無しさん:2011/05/18(水) 10:05:33.04
たとえばFortranとかCobolと書くと、F90とかかなり近代的な版というイメージがある。
たぶんLISPとLispもそんなところだとおもう。
196デフォルトの名無しさん:2011/05/18(水) 10:13:22.31
Laserみたいに単語として定着すると、元が頭文字集めたものであっても一単語として
扱うのは当たり前だよね。ならL..I.S.Pと表記するのかと。

ハッカーという言葉もさあ、もともと悪い意味だってあったのに、「いい意味だけで使いましょう」
というそれ自体結構ゆがんだ「運動」を真に受けて、ハッカーとは正義の意味にしか使っちゃ
だめだ、わるいのはクラッカーと言え、みたいなキチガイが出てくるからコンピュータ界隈は
一知半解なクセに妙な使命感で言葉狩りする奴が多くて疲れるわ。

こう書くと出現するよ、キチガイさんが(笑)
197デフォルトの名無しさん:2011/05/18(水) 10:17:36.21
ちょっと何言ってるか分からない
198デフォルトの名無しさん:2011/05/18(水) 11:07:54.12
>>196
俺はキチガイ、まで読んだ。

英語の一般的なルールでは、頭字を連ねただけのもの(FBIとか)は全部大文字、
頭字を連ねたものだけど、それがひとつながりの単語になってるもの(laser)は小文字。

COBOLをシーオービーオーエルと読む奴はいないけど、コンピュータ関係の古い語で
大文字だけで書くものがあるのは、昔はOSでファイル名とかコマンド名とかに大文字しか
使えない奴があった(というかCommon Lispにすらその名残りがあるけど)ためというだけで、
別にたいした意味はない。
199デフォルトの名無しさん:2011/05/18(水) 11:52:23.33
case sensitiveな言語が当たり前だと思ってる人がCLなどを初めて触ると「:fooって書いたのに:FOOになるんですけど……」とかなり焦る
200デフォルトの名無しさん:2011/05/18(水) 12:47:54.75
>>196
言葉狩りはどこの分野にもある
201デフォルトの名無しさん:2011/05/18(水) 17:27:57.66
えーと、Lisp界隈はなんちゃらが多くて9割方どうとかなので気にしないこと
とか何とか
202デフォルトの名無しさん:2011/05/18(水) 17:29:23.98
Lispなんかやるとそういう悪い先輩や同僚の悪影響だけ受けるからやらない方がいい。
203デフォルトの名無しさん:2011/05/18(水) 17:53:53.74
texのスタイルファイルを自分用に修正してるんだけど
もうGaucheかなにかでバッチスクリプト書いて修正かけた方がいいような気がしてくる

自前スクリプトを作るか既存の設定ファイルいじるかの境界ってどのへんなんだろう
204デフォルトの名無しさん:2011/05/18(水) 18:03:43.30
迷っているなら、何でもGaucheで作っちゃえばいい。
時間がもったいないとか、損得考えるとキリがないし。

もしくは、自前スクリプトを課題とみて、
他のLisp方言や、思い切って別言語に手を染めてみてはどうだろう。
205デフォルトの名無しさん:2011/05/18(水) 18:24:27.45
cpanあさると大概のものありますものね
Gaucheのモジュールとしてcpan使えたらいいのに
206デフォルトの名無しさん:2011/05/18(水) 18:47:10.88
>>203
自分にとって都合のいい方を選べない時点でチョトおかしい。
そんな事いちいち書き込んでいるのは相当おかしい。
207デフォルトの名無しさん:2011/05/18(水) 18:49:15.74
>>202
なんか一昔まえの不良みたいだなw
208デフォルトの名無しさん:2011/05/18(水) 19:22:24.99
Lisp は made with secret alien technology だからな。

http://lispers.org/

一般の地球人が驚いて拒絶するのも仕方がない。
209デフォルトの名無しさん:2011/05/18(水) 21:21:03.13
alienという単語を知ってるのに一瞬シークレットありえんテクノロジーと読んでしまった
210デフォルトの名無しさん:2011/05/20(金) 03:28:59.68
あまりに巨大なLISPプログラムを書いたら意識を持って自己増殖して暴走するSFとかないですか?
211デフォルトの名無しさん:2011/05/20(金) 04:40:14.75
>>210
つ i-Robot
212デフォルトの名無しさん:2011/05/20(金) 14:14:08.90
2001年宇宙の旅とか?
213デフォルトの名無しさん:2011/05/20(金) 19:42:05.04
Gガンダム?
214デフォルトの名無しさん:2011/05/20(金) 23:41:31.25
未来の二つの顔 by JP.Hogan

wikipedia みて知ったけど、去年亡くなってたんだな...、合掌。
215デフォルトの名無しさん:2011/05/23(月) 01:20:26.87
自己増植させるのは超簡単
自己増植と自滅のバランスをとり続けるのが難しい
216デフォルトの名無しさん:2011/05/23(月) 21:45:41.97
ペギオ乙
217 【東電 74.1 %】 :2011/05/23(月) 21:51:22.42
218デフォルトの名無しさん:2011/05/24(火) 12:36:12.40
>>215
おれおれリスプ処理系
219デフォルトの名無しさん:2011/05/27(金) 23:31:27.76
lispのリストの説明で箱表記を使うものがありますが、
これです→http://www.shido.info/lisp/pacl2.html#list
あの箱をテキスト文字列として生成するプログラムはありますか?
220デフォルトの名無しさん:2011/05/29(日) 07:35:36.75
ttps://gist.github.com/6ae4bf2051e8f91fcf30
やってみた。 gauche でしか動かないだろうけど。

% gosh list2dot.scm | dot -Tpng -o test.png
# ベクタとか他のは シラナイ (´・ω・`)
221デフォルトの名無しさん:2011/05/29(日) 23:23:33.15
>>220
label="<car>car|<cdr>cdr"
の方が好みだな。
222デフォルトの名無しさん:2011/05/30(月) 00:15:08.62
223デフォルトの名無しさん:2011/05/31(火) 00:23:21.05
224デフォルトの名無しさん:2011/05/31(火) 11:07:00.58
>>223
pythonになったんじゃなかったの?
225デフォルトの名無しさん:2011/05/31(火) 11:30:52.77
>>224
それはSICPご本尊のMITでしょ。
著者がいるところだから話題になっただけで、
SICPをテキストに使ってる大学は一杯あるよ。

アップツーデートじゃないだろうけど、
http://mitpress.mit.edu/sicp/adopt-list.html
226デフォルトの名無しさん:2011/05/31(火) 11:41:06.70
それを言うならご本山じゃまいか
という気がしたがいまいち自信がない
227デフォルトの名無しさん:2011/05/31(火) 11:45:20.33
いや、俺も書き込みつつ間違えたと思ったw
228デフォルトの名無しさん:2011/05/31(火) 11:54:23.81
本尊というのはたっといものであるから御をつけるわけだが、
本山は基本的には場所のことであるから御は普通付けないのではないか。
229デフォルトの名無しさん:2011/05/31(火) 12:15:22.11
いやいや本家って書くべきだったと…

これだけじゃなんなんで、
http://www.european-lisp-symposium.org/ELS20011.pdf
230デフォルトの名無しさん:2011/05/31(火) 14:49:57.93
本尊っていうのは寺の中心の仏とかの像で、転じて重要な人物の意味でしょ。
普通人物に使う。

MITがSICPの中心だ、ならメッカだ(最近はイスラム教徒からの抗議あり)、
本家だ、総本山だ、とかいうのが適当。

この程度のこともすらすら出てこないとは、ほんとお前らって頭悪いんだな(笑)
231デフォルトの名無しさん:2011/05/31(火) 16:26:23.83
232デフォルトの名無しさん:2011/05/31(火) 20:20:07.92
>>230
自己紹介乙
スレ違いのおバカさん
233デフォルトの名無しさん:2011/05/31(火) 21:01:23.49
http://www.ibm.com/developerworks/jp/linux/library/l-metaprog1/

schemerからみたらこの記事ってどうなの?
「清潔」なマクロがでてきたとこで読むの止めたんだけど。
234デフォルトの名無しさん:2011/05/31(火) 21:08:49.43
全部読んでからまた来い。
235デフォルトの名無しさん:2011/05/31(火) 21:15:06.25
翻訳気に入らなければ英語で読めばいいと思う。
236デフォルトの名無しさん:2011/05/31(火) 21:22:23.51
訳者がlispな人じゃないだけ?
237デフォルトの名無しさん:2011/06/01(水) 14:58:58.26
この手の仕事はCommon LispよりSchemeが得意なの?
CLはyacc間接的に使うパッケージとかあるんだけど
238デフォルトの名無しさん:2011/06/02(木) 11:32:17.23
CLもSchemeもできることは大して変わらんから。
放射線計れるようにはならんし。

239デフォルトの名無しさん:2011/06/02(木) 11:58:43.56
>>237
メタプログラミングの能力なら、R6RS SchemeとANSI Common Lispはほぼ互角。

構文解析は件の記事とは関係ないけど、SchemeにもCommon Lispにもいっぱいある。
LALRとかLLとかPEGとか再帰下降とかパーサコンビネータとか方式も選り取り見取りで。
240デフォルトの名無しさん:2011/06/02(木) 20:37:58.11
R6RS stands for " Revised^6 Report on the Algorithmic Language Scheme"
and it already includes the word "Scheme".
241デフォルトの名無しさん:2011/06/02(木) 20:39:22.43
Does it have a reader macro?
242 【東電 71.7 %】 :2011/06/03(金) 00:27:38.30
What's the reader macro?
243デフォルトの名無しさん:2011/06/03(金) 00:31:45.41
244デフォルトの名無しさん:2011/06/03(金) 01:35:33.95
どこまで続けんだw

そういえば、リーダーマクロとかコンパイラマクロはScheme側の規格にはないね。
Racketとかは確かリーダーいじれたと思うけど、処理系依存でしかない。

表現力は同等でも(これはそう外れてないよね?)、応用例はCLの方が広いか。
245デフォルトの名無しさん:2011/06/03(金) 15:18:38.44
Lispはオワコン
246デフォルトの名無しさん:2011/06/03(金) 15:19:23.29
Racketは突然に仕様変更で使う気なくした
独自仕様つらぬくならとことん貫いてくれよ
247デフォルトの名無しさん:2011/06/03(金) 15:42:31.85
突然仕様変更なら、独善仕様を貫いていると言えるがどうだろう。
248デフォルトの名無しさん:2011/06/04(土) 22:43:03.38
scheme を勉強しようと思って、スタックベースで実装してみようと考えたのですが、
(速度は考慮せずに、javascriptで実装してみたいです)
継続の実装方法が思いつきません
どういう方針を立て、どこから着手すればよいのでしょうか?
それと、スタックベースの実装で参考になるページがあれば教えてください
249デフォルトの名無しさん:2011/06/04(土) 23:43:08.49
単純なスタックでは実装は無理。

例えば
http://d.hatena.ne.jp/cranebird/20100911/1284213187
250デフォルトの名無しさん:2011/06/05(日) 00:46:01.66
Schemeの実装ならまず3imp.pdfだろう
251デフォルトの名無しさん:2011/06/05(日) 02:12:07.46
SECDマシン。
SECDR schemeでもいいけどソースは今どこに転がってるのか知らない。
252デフォルトの名無しさん:2011/06/05(日) 08:16:05.91
SECD ... 懐かしいなぁ。
30年ぐらい前にちょっとかじってたこと思い出した。
253デフォルトの名無しさん:2011/06/05(日) 20:24:36.24
>>252
SECDは数年前にちょっと面白い進展あったよ。
"A Rational Deconstruction of Landin's SECD Machine"
"A Functional Correspondence between Evaluators and Abstract Machines"
254デフォルトの名無しさん:2011/06/07(火) 20:16:45.04
現在英語で書かれた教科書でschemeを学んでいます.

そこで練習問題として
Write predicates free? (respectively, bound?) that detemines if an expression contains a free (respectively, bound) instance of a particular variable.

という問題がありました.

特定の変数の独立したインスタンスを含むかどうか判別する述語free?を作れという文章だと思うのですが,どうでしょうか?
また,その場合free?をどう作れば良いのかわかりません.
どなたか方針だけでも
お願いします.
255デフォルトの名無しさん:2011/06/07(火) 20:31:02.75
>>254
線形代数のガウスの消去法をやったときに出てくる自由変数についての問題のようにも見えるが
256デフォルトの名無しさん:2011/06/07(火) 20:57:34.05
>>254
式をどんどん分解して深くいく分割統治的再帰
関数の返り値は自由変数のリスト
分割統治の合併はappendで
累積変数でbounded variableのリスト
変数を見たら↑に含まれているかどうかチェック
自由変数なら返り値で返す




257デフォルトの名無しさん:2011/06/07(火) 22:22:48.84
>>256
すみません。
もう少し詳しくお願いします・・・
理解力がなくて申し訳ありません
258デフォルトの名無しさん:2011/06/08(水) 00:18:15.92
259デフォルトの名無しさん:2011/06/08(水) 00:28:09.86
(define (f x) (+ x y))みたいなのがあったときに
(free? '(define (f x) (+ x y)) 'x)とやるとfalseで
(free? '(define (f x) (+ x y)) 'y)とやるとtrueな感じ?
変数を束縛する可能性のある構文
関数引数(define (f x)...)やλ式(lambda (y) ...)やlet(let ((z 1)...)みたいなのに出会うごとに
束縛されてる式をappendしてく
((x v1) (y v2) (z 1)))みたいなリストができるので
最後に、それに'xが含まれていないかどうかを調べる
260デフォルトの名無しさん:2011/06/08(水) 00:30:27.20
なんてことだ
書き込む前にリロードすればよかった
261デフォルトの名無しさん:2011/06/10(金) 21:54:22.75
なんで IRC の #Lisp_Scheme チャンネル すぐ過疎ってしまうん?
262デフォルトの名無しさん:2011/06/10(金) 22:36:19.64
>>261
lynxやw3mで参加できるならもっと増えると思う
263デフォルトの名無しさん:2011/06/12(日) 10:43:18.51
schemeのlexical addressがイマイチ理解できません。

lexical depthなどはどうやって判断すればいいのでしょうか?
264デフォルトの名無しさん:2011/06/12(日) 10:50:58.10
Lisperってまともなもの作れないカスが多いくせに
態度がでかくてかなわん
265デフォルトの名無しさん:2011/06/12(日) 10:52:07.01
式を下降しながら、alist等で実現されたスタックフレームを累積変数で持つ。
要するにevalと同じ構造。
266デフォルトの名無しさん:2011/06/12(日) 12:04:34.01
>>264
自己紹介乙
267デフォルトの名無しさん:2011/06/12(日) 16:18:21.19
>>264
マルチ乙
268デフォルトの名無しさん:2011/06/12(日) 16:38:49.86
>>264
目的が違う
Lispは論文を作成するのが目的なんだから
269デフォルトの名無しさん:2011/06/12(日) 17:49:20.82
このスレの人たちは論文を作成するためにLisp使ってるのか
270デフォルトの名無しさん:2011/06/12(日) 18:13:18.70
ゲーデルも LISP 使えば良かったのに。
271デフォルトの名無しさん:2011/06/12(日) 18:29:54.34
Marvin Minskyか
272デフォルトの名無しさん:2011/06/12(日) 20:39:36.18
>>270
ゲーデルはS式ではなくて算術の完全性を証明したかったのだ。
273デフォルトの名無しさん:2011/06/12(日) 20:43:56.78
http://practical-scheme.net/wiliki/wiliki.cgi?Scheme%3AScheme%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E%E3%81%AE%E3%83%AC%E3%83%99%E3%83%AB10
> SchemeとかLispとかいうカッコだらけですごくわかりにくい言語があることは知っているが、
> 最強とか主張する信者がいるらしいのでなるべく関わらないようにしている。

みんなのレベルはいくつかな?
274デフォルトの名無しさん:2011/06/12(日) 20:55:51.81
実装に潜ったり普段の作業を自動化するのに使ったりはするけど
SICP持ってないからレベル1だな
275デフォルトの名無しさん:2011/06/12(日) 22:37:20.31
今更ながら新しくなった『Scheme手習い』を買ってみたんだけど、独特っすなあ・・
説明を読むより慣れろって事なんだろうけど、いきなり lat? とかいう述語が出て来て面食らった。
276デフォルトの名無しさん:2011/06/12(日) 23:04:45.96
Lat式ミクたんカワユス
277デフォルトの名無しさん:2011/06/12(日) 23:09:20.93
>>263
今のスコープを探し、なければ、1個遡ってさらに探す
という単純な話だと思う
※の部分でxは一番内側の0、yは一番外側の2に束縛されてる

(let ((x 2) (y 2)) ;←※から見てlexical depth 2
(let ((x 1)) ;←※から見てlexical depth1
(let ((x 0)) ;←※から見てlexical depth0
(+ x y) ;←※
)))
278デフォルトの名無しさん:2011/06/16(木) 21:45:04.26
SICPを古いとか言う人いるけど、ひげぽんみたいな一流ハッカーもそれで勉強しているんだよね。少しでも近づくために勉強すべき。
279デフォルトの名無しさん:2011/06/16(木) 22:26:35.81
SICP がいい本だというのはわかるけど、
あんまり Scheme にからめて紹介するのはひかえた方がいいかもしんない。
実際、 Scheme の説明はそれほど無いし。
Scheme を学ぶつもりで買って Scheme とは関係ないところで挫折しちゃう人も少なくないみたい。
280デフォルトの名無しさん:2011/06/16(木) 22:57:44.70
SICPに必要なSchemeの知識をつけるために書かれた本が
The Little Schemer(Scheme手習い)だそうじゃないか。

TLSとか適当な略称つけてブログで絶賛して流行らせろ。
281デフォルトの名無しさん:2011/06/16(木) 23:05:41.37
TLS だと検索しずらい。
元タイトルが SICP ほど長いわけじゃないからそのまま書いてくれ
282デフォルトの名無しさん:2011/06/16(木) 23:06:27.80
ひげぽんが一流のハッカーって
世の中の役に立つこと何一つしてないでしょ
あの人
283デフォルトの名無しさん:2011/06/16(木) 23:12:32.11
ハッカーというのは善悪の価値基準外の存在だと思う

その何とかさんがハッカーかどうかは別として
284デフォルトの名無しさん:2011/06/16(木) 23:17:26.52
Little Schemerはプログラミングの本なのに
処理系なしで読めるのが素晴らしい
まるで黒板に書かれたコードを読んでいるようだった
285デフォルトの名無しさん:2011/06/16(木) 23:27:50.76
>黒板に書かれた
その例えじゃ褒めてるように聞こえないな
286デフォルトの名無しさん:2011/06/16(木) 23:33:38.64
電車で読める技術中心の本は珍しいしね。
C、Javaパズルブックも良かった。
287デフォルトの名無しさん:2011/06/17(金) 00:47:41.11
手習いの次は修行か、、、Lisp/Scheme道は長いなぁ
ttp://www.amazon.co.jp/exec/obidos/ASIN/4274068536/
288デフォルトの名無しさん:2011/06/17(金) 00:57:22.51
次のタイトルのあてっこをしよう

Scheme開眼
289デフォルトの名無しさん:2011/06/17(金) 01:00:40.71
>>284
自分は筋トレしながら読んでる
レッグレイズしながら読むのに丁度良いんだよね〜
290デフォルトの名無しさん:2011/06/17(金) 01:06:44.06
>>288
Scheme八連(paren)制覇
291デフォルトの名無しさん:2011/06/17(金) 01:59:51.83
Macro の草子
292デフォルトの名無しさん:2011/06/17(金) 02:21:08.51
sche sche sche sche sche! scheme! 一休 さん
293デフォルトの名無しさん:2011/06/17(金) 03:24:54.82
>>291
わらた
妙にツボにはまっちゃった
294デフォルトの名無しさん:2011/06/17(金) 07:42:26.32
>>291
これいいな。
295デフォルトの名無しさん:2011/06/17(金) 08:46:33.90
>>291
検索したらTwitterに一件だけあったw
296 忍法帖【Lv=1,xxxP】 :2011/06/17(金) 16:15:12.38
297デフォルトの名無しさん:2011/06/18(土) 04:07:17.62
Gauche本かった。
そんだけ。
298デフォルトの名無しさん:2011/06/18(土) 09:43:31.45
mosh 0.2.7 がキタ。
ビルドするのめんどいので誰かバイナリ上げてくれ
299デフォルトの名無しさん:2011/06/18(土) 10:25:04.76
自分でビルドしろカス
300デフォルトの名無しさん:2011/06/18(土) 10:43:54.94
301デフォルトの名無しさん:2011/06/19(日) 19:01:13.91
common lispのコミュもscala化してきてんのかな?
あそこみたいに荒れるコミュは嫌だな。LISPが休止で頭がキレ気味なのか?
302デフォルトの名無しさん:2011/06/19(日) 19:26:09.14
あの程度で「荒れるの嫌だ」なんて言っちゃうような人は、
何事も指をくわえて見てるだけにしたほうがいいと思う。
303デフォルトの名無しさん:2011/06/19(日) 19:44:57.95
荒れるというのは言いすぎだったかな。
片方は野心があって王様になりたいという意思が見え隠れしてる。
片方は殺伐な考えにうんざりしている。 それだけだからな。
304263:2011/06/19(日) 20:01:30.29
>>277
遅くなりましたが回答ありがとうございます
なんとなくですが理解できました。


また質問なのですが
今Essentials of Programming Languagesという本で勉強しています。
それのExercise2.3.10が分かりません。
本をお持ちの方教えてもらえませんか?
305デフォルトの名無しさん:2011/06/19(日) 20:01:40.24
Scalaコミュニティって殺伐としてんの?

溜め込んでた鬱憤が、ふとした切っ掛けで噴出して止まらんだけでしょ。
出だしが皮肉感たっぷりだったから、相手が噛み付くのも無理ないし。
正直、お互い様だから放置おすすめ。
306デフォルトの名無しさん:2011/06/19(日) 20:25:45.04
>301-303,305
何の話?
>>304
質問の仕方おかしいぞ。せめてどんな問題か書いてくれよ。
307デフォルトの名無しさん:2011/06/19(日) 20:29:12.04
>>305
あそこは中心になってる人物が他の言語のコミュニティにすぐに喧嘩を
ふっかける傾向にある。だから、近づかない。scalaを批評したsmalltalker
のブログが荒れた事件+Rubyの教祖様ともややもめたのも最近あったくらい。
ただRubyの教祖とScalaのその人物は大学の先輩後輩みたいだから、子供を
扱う親みたいな感覚なんだろう。
308デフォルトの名無しさん:2011/06/19(日) 20:33:37.57
あれくらいで「すぐに喧嘩をふっかける」なんて言ってたらやってられんぞw
Linusとか観察することをおすすめする。
309デフォルトの名無しさん:2011/06/19(日) 20:38:19.84
LinusやStallmanはあれだったな。
プログラマって観察してると面白いんだけど、性格的にネジが壊れてるほうが
向いてる職業だな。だから、いいのかもしれないが。planet.xxxをみてても
言語によって雰囲気が違う所がまた面白い。
310デフォルトの名無しさん:2011/06/19(日) 20:40:41.15
Lisp のスレだと思って開いたら、何か違ったでござる
Lisp の話になったらまた戻ってくるでござる
311デフォルトの名無しさん:2011/06/19(日) 20:44:26.70
私BSD界隈を見て育った幼女だけど、TheoはよくDQN扱いされるのに、
Linusは喧嘩しても流されるのはおかしいと思うの。

>>306
Twitter。
312304:2011/06/19(日) 20:46:15.16
>>306
すいません分かりづらいですね。

問題は
式を引数にとり、その式の変数参照のlexical addressを表示する手続きlexical-addressを作れ
です(英語で書かれているので訳が微妙に違うかもしれません)

実行例が
(lexical-address '(lambda (a b c)
(if (eq? b c)
((lambda (c)
(cons a c))
a)
b))


(lambda (a b c)
(if (( eq? : 1 0) (b : 0 1) (c : 0 2))
((lambda (c)
((cons : 2 1) (a : 1 0) (c : 0 0)))
(a : 0 0))
(b : 0 1)))
という風になっています。
313デフォルトの名無しさん:2011/06/19(日) 20:46:30.00
ツイッターの話は、ツイッターでヤーレ
314デフォルトの名無しさん:2011/06/19(日) 20:49:56.31
Theoみたいなやつ好きだよ。俺は
315デフォルトの名無しさん:2011/06/19(日) 21:04:29.16
lexical addressing って知らなかったけど、面白いね

http://mitpress.mit.edu/sicp/full-text/sicp/book/node131.html

やっぱり SICP は読まないといけないなあ
いつかきっと...
316デフォルトの名無しさん:2011/06/19(日) 21:47:15.18
>>311
thx.twitterか…分からんはずだ。>>313 に同意。
317デフォルトの名無しさん:2011/06/19(日) 22:02:49.34
>>312
(foo: x y) => foo は、現在地から相対的に見て、x 番目の深さの lexical frame の、
y 番目のエントリーを参照するという意味で、

(eq?: 1 0) => eq? は、現在地から相対的に見て、1 番目の深さの lexical
frame(つまり global frame)の、0 番目のエンティティを参照という事で、

eq? や cons はプログラムの中に定義が含まれていないので、 global frame に
あるものとして、その中で順番付けしており、

a, b, c は lambda の引数として与えられている値なので、その引数の lexical
address を引いていると、、、

lambda は lexical frame を作る側だから除外、
if はスペシャルフォームだから除外、

という事なのかな。
318304:2011/06/19(日) 22:18:46.69
>>317
たぶんそうだと思うのですが
実際にどういう風に手続きを作ればいいのか全く見当もつきません・・・。
リストで与えられているものからどうやってlexical addressを求めたりすればいいのでしょうか・・・?
319デフォルトの名無しさん:2011/06/19(日) 22:30:33.23
>>318
0. リストを順に辿る
1. lambda というキーワードが出て来たら lexical frame を作成する
2. lambda の引数をリストにまとめて lexical frame に登録する
3. lambda の body を辿る
4. if が出て来たら読み飛ばす
5. 変数が出て来たら、現在の lexical frame の中に同じ名前が無いか探す
6. 現在の lexical frame の中に無かったら、一つ上の frame を探す
7. 変数が見つかったら、そのアドレスを計算する
以下繰り返し

じゃないの?
320デフォルトの名無しさん:2011/06/19(日) 22:36:13.92
Scheme手習いの続編出てるんだな。
こんなもんWEBで無料公開でいいだろ
金儲けばっかり考えやがって
321デフォルトの名無しさん:2011/06/19(日) 22:48:59.33
八連(パーレン)制覇と paren (括弧)制覇の駄洒落を思い付いた時は、
正直、心の中でガッツポーズだったのに、Macro に負けるとは・・
322304:2011/06/19(日) 22:55:02.78
>>319
2番のlexical frameを作成するとはどういうことでしょうか?
そしてそれ以降もあまりわかりません・・・。

質問ばかりで申し訳ありません・・・。
323デフォルトの名無しさん:2011/06/19(日) 23:01:53.68
>>307
片方は「批評」で、
もう片方は「荒れた」、「もめた」かよ。
あんな駄文をよく「批評」なんて言えるなw
324デフォルトの名無しさん:2011/06/19(日) 23:07:48.34
>>322
>>312 をパースすると、最終的に↓こんなリストが内部的に作成されると思われ

(('eq? 'cond)
  ('a 'b 'c)
  ('c))

1, 2 は、lexiacal frame のつもりの適当なリストを作成して、そこに lambda の
引数を順番に追加していくという処理
325デフォルトの名無しさん:2011/06/19(日) 23:22:11.18
まあ、自分は素人なので、きっと誰かが正解のプログラムコードを貼ってくれる筈
326304:2011/06/19(日) 23:26:46.26
>>324
なるほど・・・。
今までのを参考に一晩考えてみます
色々とありがとうございました
327デフォルトの名無しさん:2011/06/20(月) 01:36:16.93
>>323
同意。
誤解に基いた記事に合理的な理由を付けて反論しているのだから、論争だよな。
「複雑さ」の定義が噛み合ってなかった点もある。 でも、それはお互い様の話。
現時点で少数派である Scala 派は過剰なくらい主張しないと釣り合わないってこともあると思う。
328デフォルトの名無しさん:2011/06/20(月) 01:39:52.43
>>320
じゃあ、お前はタダで翻訳作業やるのか?
あのテの専門書はほとんど利益でないもんなんだぞ。
329デフォルトの名無しさん:2011/06/20(月) 01:47:11.15
>>323,>>327
>>313

他所のゴタゴタをここに持ち込むなよ

せめてコードの話をしてくれ
330277:2011/06/20(月) 02:05:40.46
>>326
そこと、相互再起が理解できるとプログラミング言語作れるよ
schemeはフレームがデータ構造の、ただの相互再起関数だから

condが特殊形式じゃなかったりと、その本が
どういう風に構築してるのかはわからないけど
lexical frameがどう使われるかが理解できたらすっきりするかも

SICPの処理系の場合、フレームは
(('c 値))
(('a 値)('b 値)('c 値))
トップレベル環境)な感じになって
carでたどりながら最初に見つかったシンボルが今の値になる
331324:2011/06/20(月) 02:11:33.01
あ、cond は自分の間違いです...
正しくは cons でした...

あと、イチイチ quote する必要も無かったですね...
332デフォルトの名無しさん:2011/06/21(火) 19:09:37.99
>>304
できたけど自分でやるつもりだったら見ないでね
http://codepad.org/l7anqWik
333デフォルトの名無しさん:2011/06/21(火) 19:35:24.87
ごめんこっちでした
http://codepad.org/arrsvMiU
334デフォルトの名無しさん:2011/06/21(火) 20:42:07.72
>328
技術書翻訳って、部数出ない代わりに単価が高いんだから、
それなりに儲かるんじゃないの?
335デフォルトの名無しさん:2011/06/21(火) 20:43:13.81
論理的に欠陥があるな。
336デフォルトの名無しさん:2011/06/21(火) 21:42:07.52
>>334
単価が高いたって、専門書でも2万円を越えるようなものはそう多くない。
5000円かそこらだ。
5000円で人を雇ったらせいぜいひとりを半日くらい使えるくらいじゃね?
本を書くのに何日かかって、編集やら組版やら流通やらに何人がかかわると思ってんだよ。
337デフォルトの名無しさん:2011/06/21(火) 21:42:45.18
>>333
eq?やconsが事前登録なのと、リスト途中のlambdaの扱いが気になるな。
自分ならこう組むかな。(Gaucheべったりのコードだけど)

(use gauche.sequence)
(define (lexical-address expr)
(define global (list '()))
(define (sym->addr sym env)
(let1 idx (or (find-index (pa$ memq sym) env)
(begin
(set-car! global (append (car global) (list sym)))
(- (length env) 1)))
(list sym ': idx (find-index (pa$ eq? sym) (list-ref env idx)))))
(let loop ((env global) (expr expr))
(cond ((symbol? expr) (sym->addr expr env))
((not (pair? expr)) expr)
((eq? (car expr) 'lambda)
`(lambda ,(cadr expr) ,@(map (pa$ loop (cons (cadr expr) env)) (cddr expr))))
((eq? (car expr) 'if)
`(if ,@(map (pa$ loop env) (cdr expr))))
(else
(map (pa$ loop env) expr)))))
338デフォルトの名無しさん:2011/06/21(火) 22:17:26.30
汚っ!
339デフォルトの名無しさん:2011/06/22(水) 02:08:48.55
>>336
数人ぐらいでできるでしょ
誰も一冊で食おうなんて思わないしw
340デフォルトの名無しさん:2011/06/22(水) 02:16:14.39
もう相手にすんな
341デフォルトの名無しさん:2011/06/22(水) 03:31:33.03
5万x20日で普通に100万ぐらいだな
342デフォルトの名無しさん:2011/06/22(水) 08:32:02.86
儲かるとおもうなら
自分でやればいいじゃない
343デフォルトの名無しさん:2011/06/22(水) 10:25:51.07
部数が少なくて単価が高いならあまり儲からないだろう、普通
多くの人が買う見込みがあるなら多く刷って一冊の価格を下げられるし
一冊の価格が下がれば買ってみようと思う人が増える

The Seasoned Schemerの日本語版が小説やビジネス書を抜いて
ベストセラーランキングに食い込むような世の中なら
コンピューター書も少しは安くなるさ
344デフォルトの名無しさん:2011/06/22(水) 10:28:41.73
翻訳本の価値は訳の質じゃない
第一義は原著者の言いたいことが分かることだから、
矛盾のない訳であるだけで十分であり、上手くなくとも、直訳でも構わないはず

翻訳本の価値は読者が(自分で訳したり、機械翻訳するために打ち込んだりするような)
翻訳する労力と費やすはずだった時間を翻訳者が担ってくれることにある
それ以上の事、例えば日本語として自然な訳であるのは翻訳者のサービスだ

だから、出版物より上手く訳せるならお前が訳して売ってくれというのは
翻訳本に求めるものを完全に間違えている
345デフォルトの名無しさん:2011/06/22(水) 13:04:29.30
>出版物より上手く訳せるならお前が訳して売ってくれというのは

そんな話は誰もしてねーし、矛盾がなくても日本語として不自然すぎて
読みづらく時間のかかる訳は品質が悪いとしか言えんわ。
346デフォルトの名無しさん:2011/06/22(水) 13:12:07.57
>>344
上手くない直訳でもないよりはずっと良いですが、
訳の質が悪いと原著者の言いたいことも分かりにくくなります。
下記の例では「軍人が手ぶらで帰った」事がわからないと
なぜ軍人が絶句したのかわかりません。

原文:Richard Hamming "You and Your Research"
http://magic.aladdin.cs.cmu.edu/wp-uploads/hamming.pdf

Some military person came to me and demanded some answers by Friday.
Well, I had already dedicated my computing resources to reducing data on the fly for a group of scientists;
I was knee deep in short, small, important problems.
This military person wanted me to solve his problem by the end of the day on Friday.
I said, "No, I'll give it to you Monday. I can work on it over the weekend. I'm not going to do it now."
He goes down to my boss, Schelkunoff, and Schelkunoff says, "You must run this for him; he's got to have it by Friday."
I tell him, "Why do I?"; he says, "You have to."
I said, "Fine, Sergei, but you're sitting in your office Friday afternoon catching the late bus home to watch as this fellow walks out that door."
I gave the military person the answers late Friday afternoon.
I then went to Schelkunoff's office and sat down;
as the man goes out I say, "You see Schelkunoff, this fellow has nothing under his arm; but I gave him the answers."
On Monday morning Schelkunoff called him up and said, "Did you come in to work over the weekend?"
I could hear, as it were, a pause as the fellow ran through his mind of what was going to happen;
but he knew he would have had to sign in, and he'd better not say he had when he hadn't, so he said he hadn't.
Ever after that Schelkunoff said, "You set your deadlines; you can change them."
347デフォルトの名無しさん:2011/06/22(水) 13:12:36.25
翻訳1:研究にどう取り組むべきか
http://sites.google.com/site/himazu/you-and-your-research

ある金曜日、軍人が来て、金曜日までに、ある問題の答えを出すように要請しました。
私は既に、ある研究チームの必要に応じてすぐにデータ処理をできるように自分の計算機資源を割り当てていました。
私はいくつもの小さな重要な問題にどっぷり浸かっていたのです。
その軍人は金曜日中に問題の答えを出すよう要請しました。
「それはできません。月曜日にお渡しします。週末にやります。今はできません。」
その軍人は上司のシェルクノフのところに行きました。そして、シェルクノフは私に言いました。
「この問題に取り組んでください。上司命令です。金曜日中に完了させてください。」
私は言いました。「なぜですか。」 シェルクノフは言いました。「命令です。」
「いいでしょう。でも、その軍人が帰るのを見届けるまで残っていてください。遅いバスに乗ることになるでしょうが。」
私は金曜日午後遅くに答えを出して軍人に渡しました。
シェルクノフの部屋に行って、軍人の帰り際に、私は言いました。
「部長、私は脅されていません。でも、ちゃんと答えを出しましたよ。」
月曜日の朝、シェルクノフは、その軍人に電話で聞きました。
「週末にオフィスに来来て仕事をしてらっしゃいましたか。」
軍人が言葉を詰まらせているのが聞こえました。
どのように話が展開するか考えていたのでしょう。
嘘をついたらより窮地に追い込まれると思い、軍人は正直に仕事をしていないと言いました。
それ以来、シェルクノフは「締め切りは自分で決めてください。そして自分で変更してかまいません」と言うようになりました。
348デフォルトの名無しさん:2011/06/22(水) 13:13:21.37
翻訳2:
リチャード・ハミング「あなたとあなたの研究」前半
http://d.hatena.ne.jp/lionfan/20080726
リチャード・ハミング「あなたとあなたの研究」後半
http://d.hatena.ne.jp/lionfan/20080727

さて大物の軍人が私のところに来て、ある問題の答えを金曜日までに出すよう要求しました。
ですが私は既に科学者のグループのために急いでデータを圧縮するのにコンピュータの資源を費やしていました。
私は短期の細かく重要な問題でいっぱいいっぱいでした。
この軍人は金曜日の終わりまでに解くことを私に望んだのです。
私は「すみません、月曜日にしてください。週末に解きますよ。今は無理です」と言いました。
彼は私の上司、シェルクノフの所に行き、シェルクノフは「彼のためにやってやれ。金曜日までに必要なんだ」と言いました。
「私がですか?」と私は言い、「君がやるんだ」とシェルクノフは答えました。
私は言いました。「わかりました、セルゲイ。でも金曜日の午後はいつもより遅いバスで帰ることにして、
この部屋に座ってそいつがドアから出るときを見ておいてくださいよ」と。
私は金曜日の午後遅く、軍人に答えを渡しました。
次に私はシェルクノフの部屋に行って座りました。その男が帰るときに私は言いました。
「ねえシェルクノフ、あいつ、小脇になにも抱えてなかったですよね。でも私はあいつに答えを渡したんです」
月曜日の朝、シェルクノフは彼を呼び出して言いました。「この週末、仕事に来たかね?」
私は彼が一瞬、絶句して、事態を理解するさまを聞いていました。
しかし彼は建物に入るにはサインが必要だということもわかっていたので、
正直に認めたほうがマシだと考え、「行きませんでした」と言いました。
それ以降、シェルクノフは「締切は君が決めなさい。変更も君に任せる」と言うようになりました。
349デフォルトの名無しさん:2011/06/22(水) 13:32:53.81
ENGLISH板でやれ
http://kamome.2ch.net/english/
350304:2011/06/22(水) 14:50:33.19
>>333
回答ありがとうございます!!

答えもらってるのに失礼なのですが
自分はまだcond,set!,letを学んでいません。
動作は何となく理解できたのですが、これらを使わないで作るにはどうすればいいの>>333でしょうか?
351304:2011/06/22(水) 14:51:47.15
すいません最後に>>333が入ってしまいました。
352デフォルトの名無しさん:2011/06/22(水) 15:21:48.17
3行を超える文と、3インデントを超えるコードは宗教上の理由で読まないことにしてる。
353デフォルトの名無しさん:2011/06/22(水) 15:23:56.12
低能で技術書を読みこなせないを翻訳のせいにしているんだよ
354デフォルトの名無しさん:2011/06/22(水) 15:33:40.87
低能で英語がよみこなせないから糞訳になるんだよ
355デフォルトの名無しさん:2011/06/22(水) 15:38:13.28
なあ、翻訳ってLISPで機械的にできるんじゃないのか?
英単語→日本語なら形態素なんてあんま関係ないし
それぐらいの希望を持ったっていいだろう
356デフォルトの名無しさん:2011/06/22(水) 15:41:44.15
誰も出来てないから
357デフォルトの名無しさん:2011/06/22(水) 15:45:30.64
機械翻訳って昔からできるできると言いながらさっぱり進歩しない分野だと思う。
日本語→韓国語みたいに単語の置き換えでできるレベルの言語以外は100年後も
相変わらず意味不明珍文ジェネレーターのままだと思うよ。
358デフォルトの名無しさん:2011/06/22(水) 16:21:34.53
まじかお
359デフォルトの名無しさん:2011/06/22(水) 16:35:43.90
>>344
> 翻訳本の価値は訳の質じゃない
> 第一義は原著者の言いたいことが分かることだから、
> 矛盾のない訳であるだけで十分であり、上手くなくとも、直訳でも構わないはず

ところが、直訳で用を成す場合ってのはめったにないんだな。
訳語一つとっても内容を理解していないとダメになる。
そういうのは構文で致命的なミスをしていると見ていいよ。

学術書の翻訳でダメなのは英語の問題というより、そのジャンルを舐めているとしか思えんね。
360デフォルトの名無しさん:2011/06/22(水) 16:38:57.24
まあ訳者が内容を理解できてないんだろうね
361デフォルトの名無しさん:2011/06/22(水) 16:40:23.95
一応自分の専門ということになってる分野ですらそれだから
英語なんか出来るわけない罠w
362デフォルトの名無しさん:2011/06/22(水) 17:19:55.97
>>350
cond, letはifとlambdaで等価なものがかけるよ
set!部分はなんか適当に再帰書けばできると思うよ
363デフォルトの名無しさん:2011/06/22(水) 17:30:56.77
では席もだいぶ温まってきたことだし、古くて新しい話題、SICPの日本語訳は良いか糞かの話題に移ろうか。
364デフォルトの名無しさん:2011/06/22(水) 17:58:27.63
>>363
専用スレへどうぞ。

【SICP】計算機プログラムの構造と解釈 Part2
http://hibari.2ch.net/test/read.cgi/tech/1203096230/
365デフォルトの名無しさん:2011/06/22(水) 22:09:34.30
The Computer Music Tutorial/Roads Curtisっていう、
バカでかいけどDTMからサンプリング定理、DSPまで入っている名著があるんだけど、
こいつの日本語版は訳者まえがき(後書きだったかもしれん)に興味深い話があったな。

翻訳作業を始めた当初は、数人の翻訳者が直訳派と意訳派に分かれていたけれど、
作業が進むにつれ、出版に耐えうる直訳は意訳に近づき、著者の意図をあますとこなく表現している意訳は直訳に近づいていったとか。

まあ、自分の得意分野の話題だったら英語でも日本語でも大丈夫だよな。
逆にニュース記事とかはさっぱりだ。
366デフォルトの名無しさん:2011/06/22(水) 22:14:09.32
>>365
> 作業が進むにつれ、出版に耐えうる直訳は意訳に近づき、著者の意図をあますとこなく表現している意訳は直訳に近づいていったとか。

何が言いたいのこれ?
著者の意味をあますところなく表現する訳は出版には耐ええないのか、両者は限りなく近づいていくと
いうことか?
367デフォルトの名無しさん:2011/06/22(水) 22:42:51.60
訳せたから読めたんじゃない。読めてるから、必要な場合には訳せるんだ
368デフォルトの名無しさん:2011/06/22(水) 22:56:00.64
読める読めると自己申告の奴を試すのに一番いいのは訳させること。
ぜんぜん理解できないのが分かったりする(笑)
369デフォルトの名無しさん:2011/06/22(水) 23:00:47.17
受験生の時はそういうのを吹っかけてくる奴をたまに見掛けたけど、
大人になったら居なくなったな
370デフォルトの名無しさん:2011/06/23(木) 01:44:12.53
期待されてない大人乙
371デフォルトの名無しさん:2011/06/23(木) 04:22:54.93
Lispとか英語とかの話題になっただけでコンプレックスが爆発する奴は死んだらどうか。
372デフォルトの名無しさん:2011/06/23(木) 08:45:43.86
>>370
いや、英語が出来て当たり前な場所にいるだけ
373デフォルトの名無しさん:2011/06/23(木) 10:31:43.64
なんだやっぱり単なる自慢か。もう飽きた。
374304:2011/06/24(金) 13:43:37.36
>>362
すみません。
condは無くせたのですがset!とletがなくせません・・・・
どなたか教えてください・・・。
375デフォルトの名無しさん:2011/06/24(金) 14:56:36.49
376デフォルトの名無しさん:2011/06/24(金) 18:27:42.23
>>374
(let ((a x)(b y)(z c)...)body)は((lambda (a b c...)body)x y z...)と等価

ttp://codepad.org/0tm5NSwq
set!なしで書こうとしたものの、
eq?が出現したタイミングでフレーム作らないといけない感じなんで
set!かcall/ccかcpsかと考えたら本末転倒になったので諦めた
377デフォルトの名無しさん:2011/06/24(金) 18:55:09.11
set!は等価な変換はできなかったような
擬似的なものはできるが
378デフォルトの名無しさん:2011/06/25(土) 08:01:37.75
>>373
こんな場所でしか自慢する所がないんだよ、察してやれ。
379デフォルトの名無しさん:2011/06/25(土) 08:43:14.70
そんなに気になるんだ?
380304:2011/06/26(日) 17:41:16.26
set!の等価は難しいのですね

ではcondとletだけ使わないで書くとどうなるのでしょうか?
自分で書いてみてもうまく動作しません。
どなたかお願いします。
381デフォルトの名無しさん:2011/06/26(日) 23:29:58.82
set!はprimitive
あとは>>375を読め
382デフォルトの名無しさん:2011/06/27(月) 01:01:40.14
lispやschemeを(できれば日本語で)解説する動画を誰か投稿してほしい
SICPを元にしたMITの講義ならpodcastで見れるが、
lisp/schemeプログラミングの現場(のようなもの)を動画として見てみたい

それと、Anarchy Golfのlisp/scheme解説も見てみたい
(たとえば、"hello, world!" の出力をたった22バイトで成し遂げるってどういうテクニックを使っているんだろうか
http://golf.shinh.org/p.rb?hello+world)
383デフォルトの名無しさん:2011/06/27(月) 01:18:55.69
もしかして、

(print "hello,world!")

夢を壊したらゴメン...
384デフォルトの名無しさん:2011/06/27(月) 04:30:40.54
slimeの紹介ビデオ (イタリア人によるもの)
やonjoさんの→let実装ビデオなら転がってたと思うが。
385デフォルトの名無しさん:2011/06/27(月) 04:32:21.91
shiroさんくらいの現場のビデオなら興味津々だな。
386382:2011/06/27(月) 09:19:56.48
>>383
あ…
387304:2011/06/27(月) 10:38:24.09
皆さんのおかげでなんとかなりそうです。

ありがとうございます



ところで今更なのですが

>>333のコードで

lexical-addressの中でdefine recがありますが

recを外でdefineするとエラーになります

なぜこのように書かなければならないのでしょうか?
388デフォルトの名無しさん:2011/06/27(月) 10:52:27.72
別にエラーにならないけど。かなり基本的なことを理解してないと思う
389304:2011/06/27(月) 11:32:47.05
すみません
よければ説明をお願いします・・・。
390デフォルトの名無しさん:2011/06/27(月) 11:48:36.99
荒らしをスルーできないのは君だったか。以降君にはレスはしない
391デフォルトの名無しさん:2011/06/28(火) 02:37:33.51
Lispのデバッグのコツみたいなチュートリアルビデオがあるなら見てみたい
途中で止めてコード修正して、継続実行できるのがすごいんだとかが書籍にとかインタビュー記事にあるけど、実際どうやんのかとかさっぱりわからん
392デフォルトの名無しさん:2011/06/28(火) 10:48:54.42
手取り足取りでプログラマーになるつもりかよ
393デフォルトの名無しさん:2011/06/28(火) 11:13:37.68
Gauche本が結構詳しく書いていなかったっけ?
394デフォルトの名無しさん:2011/06/28(火) 21:00:04.43
ちなみに「ガッチェ」と読みます。(キリッ
395デフォルトの名無しさん:2011/06/28(火) 21:01:52.29
ガウチョ!
396デフォルトの名無しさん:2011/06/28(火) 22:10:17.57
397デフォルトの名無しさん:2011/07/11(月) 17:00:48.69
398デフォルトの名無しさん:2011/07/12(火) 23:37:56.03
>>397
javascript流行ってるのかな
中間表現としてはいいよね
399デフォルトの名無しさん:2011/07/13(水) 00:15:51.04
>>398
JavaScript は Lisp in C's clothing と言うくらいで、
Lisp と相性が良いし、言語の素性も良いからね

ウェブアプリの分野は JavaScript の独占状態だし
400デフォルトの名無しさん:2011/07/13(水) 01:34:02.68
アイク先生がブラウザ内で動くSchemeを実装する約束でNetscape社に入ったら、
いつの間にか文法をC風にすることになっていて驚いたって逸話があるくらいだからな。
401デフォルトの名無しさん:2011/07/13(水) 12:01:37.43
LIST遊びって本良いの?
402デフォルトの名無しさん:2011/07/14(木) 06:17:58.79
ずぶの素人には難しかった
403デフォルトの名無しさん:2011/07/14(木) 11:10:08.25
>>401
Emacs使い以外には用のない本。
Elispは古典的なLispだけど、今や少数派なので。
404デフォルトの名無しさん:2011/07/15(金) 00:38:25.57
>Emacs使い以外には用のない本。

全くそんな事はない。
あくまでもElispを題材にとっているだけであって基本の説明をしている。
405デフォルトの名無しさん:2011/07/15(金) 01:22:53.96
しっかりとした内容で良い本だと思うけど、lambda が出て来ない(よね?)のはどういう意図なのかな

続編として、マクロ遊びもキボンヌ
406デフォルトの名無しさん:2011/07/15(金) 01:35:04.32
高階関数とかまでを扱うレベルの関数型プログラミングの本じゃない、ってことでしょ
407デフォルトの名無しさん:2011/07/15(金) 07:19:50.85
だが高階関数を封じてlispを使うのは両腕を縛って泳ぐようなものではないかね。
がんばれば溺れることはないだろうがとても苦しそうだ。
408デフォルトの名無しさん:2011/07/15(金) 14:42:36.67
アスペかよ。
409デフォルトの名無しさん:2011/07/15(金) 17:11:17.12
気楽に再帰に親しんで貰うための本だったような。
410デフォルトの名無しさん:2011/07/15(金) 22:07:12.13
『第4章の「再帰」は本書で最も読んで頂きたい書です。』って前書きに書いてあるね。

つーか、「リスト遊び −Emacsで学ぶLispの世界−」ってタイトルを見て、なぜ高階関数とか出てくんのかね。
ちなみに薄い120Pで1200円。
411デフォルトの名無しさん:2011/07/15(金) 22:19:01.33
リスト関連の関数と高階関数は結構深い関係だと思うぞ
412デフォルトの名無しさん:2011/07/15(金) 22:56:02.51
遊びの本なのに
> 高階関数を封じてlispを使うのは両腕を縛って泳ぐようなもの
なんて大上段なレス返すのがおかしいだろ、って話よ。
その先は他の本格的な本読んでくれってスタンスだろあの本は。
文句の付け方がおかしい。
413デフォルトの名無しさん:2011/07/15(金) 23:18:35.65
でも今読むならscheme手習いでいいんじゃない?
414デフォルトの名無しさん:2011/07/16(土) 01:16:24.78
>>413
後書きによれば、それは「次に読むべき本」だって
415デフォルトの名無しさん:2011/07/16(土) 01:58:55.23
>>410
リスト遊び → リスト操作 → 高階関数
Lisp の世界 → S 式 → マクロ

っておもたよ
でも、どっちもないよ

ただ、lambda は敢えて入れてない様に見えたので
対象読者のレベルを考えて入れなかったんだろうね

だから続編キボンヌ

本の内容はとても良いので、読んでない人は買って
読んだらいいと思います
416デフォルトの名無しさん:2011/07/16(土) 02:42:43.99
Lisp でゲームエンジンちゃん

http://elliottslaughter.com/2011/06/blackthorn-3d
417デフォルトの名無しさん:2011/07/16(土) 07:28:19.50
続編きぼーつうたって、著者の興味は今やHaskellだし
418デフォルトの名無しさん:2011/07/16(土) 10:55:05.59
著者だと気づかず、twitterでフォローしてた俺
419デフォルトの名無しさん:2011/07/16(土) 11:52:02.01
てか「あどけない話」の人だったのか!
420デフォルトの名無しさん:2011/07/16(土) 14:34:35.69
Mewの人でもある。
421デフォルトの名無しさん:2011/07/16(土) 22:18:08.27
リスト遊び好きだったなぁ
良い本だよ、楽しい。
422デフォルトの名無しさん:2011/07/16(土) 22:57:42.74
いつの間にかSeasoned Schemeが和訳されていた。

Scheme修行
http://www.amazon.co.jp/dp/4274068536/
423デフォルトの名無しさん:2011/07/17(日) 00:55:02.87
『ハッピー・ネットワーキング』は名著
424デフォルトの名無しさん:2011/07/19(火) 14:32:58.46
lispからhaskellに行く人ってなんでいくんだろ
あんま違わないと思うんだけどなあ
425デフォルトの名無しさん:2011/07/19(火) 18:26:35.70
根本の考え方は確かに似てるだろうけど
手続き型言語同士の別言語くらいには違うと思うぞ
426デフォルトの名無しさん:2011/07/19(火) 23:08:03.69
チワワとシベリアンハスキーくらい違うだろ
427デフォルトの名無しさん:2011/07/20(水) 01:27:12.43
いやー、まったくの別物だと思うよ。コードを書くときの考え方すら違うと言われることもある。
モナドひとつとってもLispとHaskellで全然使用感違うし、Lispで関数合成多用とかしないでしょ?
Lispは「コンビネータも使える」だけど、Haskellは「コンビネータを使うのが普通」って感じだし。
428デフォルトの名無しさん:2011/07/22(金) 22:08:55.52
Gauche-mingw-0.9.1.exeでインストールしたら
環境変数のPATHの設定値がGaucheのパスだけになって
もともとの設定値がみんな消えてしまった。

トップページをよく見たらその問題について書いてあったけど後の祭り。
せめてインストーラのダウンロードページに書いといてほしい。

「対応策を考えています」ってなってるけど半年経っても修正されてない。
429デフォルトの名無しさん:2011/07/23(土) 02:46:31.26
Chickenでeggのbindを使ってC++のクラスを呼びたいんだけどmake-instanceでunbound variableってなってこける
(use bind)って書くだけじゃだめなの?
430デフォルトの名無しさん:2011/07/23(土) 06:48:26.37
>>428
そんな苦労してまで Windows を使わなくても良いと思うんだが...
確かお金も掛かるんだよね?
431デフォルトの名無しさん:2011/07/23(土) 07:31:44.40
ここに書くより本家に突撃した方がいいんじゃないか。要望が多い方が対応が速いだろう。
432デフォルトの名無しさん:2011/07/23(土) 10:39:19.78
「お金が掛かる」ってのは「Gaucheが有料なのか」ってことなら無料だよ。
PATHが消えたこと以外は問題なく使えてるし。

「PATHの内容が1000文字に近い場合」に問題が発生するということらしいけど
大抵の人はそこまで長くなくて問題も出ず、対応も鈍いのかも。
うちのPCは前に何か実験したときに無駄に長くなって放置してたはず。

本家に突撃すべきってのはその通りですね。
433デフォルトの名無しさん:2011/07/23(土) 10:45:17.79
OS (Windows)自体が有料、ということじゃない?
それはともかく1000文字なら超える人がいてもおかしくない数字だね
434デフォルトの名無しさん:2011/07/23(土) 11:05:30.88
NSIS の問題なんだろ? NSIS は問題を認識してるっぽいから修正を待つしかしょうがないんじゃないか?
Gauche のプロジェクトとしてできる対策は NSIS を使わない (じゃあ何を使う?) か、
NSIS へ改良案を出すということになるけど、 NSIS の改良を Gauche の開発者に求めるのは筋合いだろ。
435デフォルトの名無しさん:2011/07/23(土) 12:16:06.43
自分では修正できないにしても
問題点の周知について改善すべき状態ではあるね
436デフォルトの名無しさん:2011/07/23(土) 15:12:20.08
>>432
Gauche がお金掛かる訳無いじゃん...
オープンソースでフリーソフトウェアなのに
437デフォルトの名無しさん:2011/07/23(土) 17:40:38.31
GaucheをWindowsで動かすこと自体が目的でないなら、
別の処理系使うか仮想LinuxをWindows内で動かすか、
Macに鞍替えしたほうが早いと思う。残念ながら。
438デフォルトの名無しさん:2011/07/23(土) 17:51:45.66
早いというのはどういうこと?
「とりあえずschemeを使いたい」という目的は十分果たせているけど。
439デフォルトの名無しさん:2011/07/23(土) 18:40:30.00
とりあえずでいいなら、いいんじゃないの
440437:2011/07/23(土) 19:11:52.53
>>438
すまん、とりあえず問題ないならいいんだけど。
正直、おれはWindowsでSchemeしたい人がどういう層か分かってないんだ。

schemeを使ってWebアプリ書いたりデータベース作ったり、
もしたいなら、Linuxの方が断然楽だよ。
Windowsにこだわるより、Linux環境を作ってそっちも
一緒に勉強したほうがいいんじゃないか、という意味で書いた。

いやおれは自分のことしか考えてないな、すまんかった。
441デフォルトの名無しさん:2011/07/23(土) 19:30:16.00
>>440
そうなんだよな、winはwinの流儀のプログラム書くツール使う方が遙かに楽だし。
なもんで俺はwin機でunix流の事するときはvmに載せたos使ってる

シームレス表示使うとめちゃ便利だし
442デフォルトの名無しさん:2011/07/23(土) 19:31:39.12
人が Scheme を始めるとき、手段ではなく目的である場合が多い。
443デフォルトの名無しさん:2011/07/23(土) 19:40:37.05
Mac を含め Unix 系 OS だと楽で良いよね
444デフォルトの名無しさん:2011/07/23(土) 19:48:26.40
Scheme を始める理由の5割くらいは処理系の実装じゃないだろうか
445デフォルトの名無しさん:2011/07/23(土) 20:15:39.86
俺はスクリプト言語的に使ってるだけ。
フィートを提供してないサイトの巡回を自動化するだとか、
ファイルの種類ごとにフォルダ分けしたりだとか、そういうの。
446デフォルトの名無しさん:2011/07/23(土) 21:50:37.31
>>443
Macは日本語ファイルの扱いがgitやsvn使ってるときにむかつく以外は良くできたunixだな
447デフォルトの名無しさん:2011/07/24(日) 07:54:14.33
>>446
むかつくを再現してみたいので、どんな設定にしているのか教えて下さい。
448デフォルトの名無しさん:2011/07/24(日) 09:28:01.41
設定も何も、OS Xの標準ファイルシステムのUnicode正規形がNFD(「が」のような単独コードポイントでも複数コードポイントでも表現できる字を
「か」と濁点のような複数コードポイントで表現する正規形)だって話じゃないの?
文字集合としては合成という機能があるなら合成で表現できる文字に別の符号を割り当てるのは美しくない(=NFDだけがある文字集合の方が良かった)ようにも思えるが
既存の文字集合の上位集合にするには「が」みたいなものも必要だったし、現にNFC(「が」を単独コードポイントで表現する正規形)なシステムの方が多いからな……Canonical XMLもNFCだったはず
449デフォルトの名無しさん:2011/07/24(日) 12:50:55.54
stalinが使いたいのが目的だった
450デフォルトの名無しさん:2011/07/24(日) 18:43:11.17
>>447
>>448が技術的背景を描いてくれてるので、具体例をあげると
svnやgitのリポジトリに"debug担当者の作業手順.txt"をコミットしても問題起きないが
"デバッグ担当者の作業手順.txt"をコミットすると"デバッグ”が濁点との合成文字でファイルシステムに書かれるためにgitやsvnからは別ファイルにみえちまうってこと
日本語いれんなってのはまぁ解決方法の一つだが、チーム全体でそういう統一ができなかったりする。

451デフォルトの名無しさん:2011/07/25(月) 02:23:14.34
どっかのブログでracketは最新版は怪しいから
常に少し古いの使ってるってみかけた
どのぐらい古いの使うのがお勧めなんだろ
5.1.1が今のだけど4.**とか?
452デフォルトの名無しさん:2011/07/25(月) 11:38:13.47
>>450
HFSやCocoaのことしか考えられてないからねえ。
ブラウザのファイル操作、USBサムドライブ、ネットワークヴォリューム、
あちこちで問題起こしてる。NFDもNFCも積極的にはやらないのが、
外界とのやりとりでのトラブル防止に一番いい。
要するに相手の事情に寛容になって受け入れるってことなんだけど。
ファイル名だけでもopen/creat/symlink/mkfifo/socketのwrapperを
Lisp/Schemeの処理系で使うだけでは済まずに、
アーカイバなどのアプリケーション層まで影響する。
453デフォルトの名無しさん:2011/07/25(月) 20:13:31.44
>>428
次の版から WiX へ切り替えるそうだ。
http://practical-scheme.net/chaton/gauche/a/2011/07/25#entry-4e2d459e-175af
454デフォルトの名無しさん:2011/07/25(月) 20:22:46.21
WiXか、いいね
455デフォルトの名無しさん:2011/07/25(月) 20:31:42.68
>>429
C++とschemeの混合してみたいなら
試してみては
http://www.suri.cs.okayama-u.ac.jp/servlets/APPLICATION.rkt
456デフォルトの名無しさん:2011/07/25(月) 20:47:20.90
(define (a) (b))
(define (b) (c))
(define (c) (a))
全然ダメですな

template<typename AType>
AType a()
{
return b();
}

template<typename BType>
BType b()
{
return c();
}

template<typename CType>
CType c()
{
return a();
}
457デフォルトの名無しさん:2011/07/25(月) 21:04:09.28
Schemeのコードは無限ループだよね?
TCOされるからスタックも溢れない。

C++の方はどういう結果になるの?
458デフォルトの名無しさん:2011/07/26(火) 10:23:29.74
a b cが関数ってことならあってるのでは?
459デフォルトの名無しさん:2011/07/26(火) 14:56:14.24
>>456
(define (a-int) (b-int))
...
型指定すればそれっぽくなるけど


int a_int()
{
return b_int();
}

int b_int()
{
return c_int();
}
...
460デフォルトの名無しさん:2011/07/26(火) 21:05:24.54
なるほどですね。
ぼっちで閉じた環境で居ると他のファイルシステムを気にしませんもんね。
勉強になるぅ...。
461デフォルトの名無しさん:2011/07/26(火) 21:36:29.19
462デフォルトの名無しさん:2011/07/26(火) 23:22:54.47
正規化しないならしないでファイル名をhexdumpしないと何が起きてるのかさっぱり分からない状態が作れるけどな
完全なローカルファイルでそうなるのは単に困惑するだけだから公開されない限り大したことないが
ドメイン名でそんなこと許したら目視で判別できないフィッシングサイト作り放題だから、RFC 3491やRFC 3987の正規化はローカルに適用する気も起きない特別仕様

基本的にファイルシステムやVCSのリポジトリでは正規化せずに、もっと上で(例えば検索する前などに)正規化を施した方が融通が利く
より多くの開発者に普段から正規化を意識するように要求する方法でもあるが
463デフォルトの名無しさん:2011/07/26(火) 23:27:01.02
>>455
ありがとう、色々試してみる

ここから日記
ソースを落として読んだらmake-instanceなんてのは存在しなかった
で代わりに
(use bind coops cplusplus-object)
(bind-file* "hoge.h")
と頭に書いて(new <Hoge>)でインスタンス生成(delete hoge)で削除
make-instanceに捕まってた自分が馬鹿だった

一つ問題があってhoge.hで他のヘッダ(<iostream>とか)をインクルードするとコンパイルが通らない
山括弧で囲むのがだめなのかもしれない
わけがわからないよ
464デフォルトの名無しさん:2011/08/01(月) 22:36:39.34
一般プログラマが Lisp を勉強する事の最大の利点って何だと思います?

・REPL の便利さが理解出来る
・末尾再帰や相互再帰のプログラムを奇麗に手早く書ける様になる
・副作用を意識したプログラムが書ける様になる
・関数型言語のイディオムが身に付く
・プログラム言語を扱うプログラムを書ける様になる
・プログラム処理系を書く為の知識が身に付く
・ラムダ算法への理解が深まる
・人生の楽しみが増える
・その他
465デフォルトの名無しさん:2011/08/01(月) 22:53:22.05
グダグダ考えている間に、
触ればひとまずは使えるようになる簡便な言語であること。
466デフォルトの名無しさん:2011/08/01(月) 22:57:54.97
思想の違いに寛容になる(一部除く)
467デフォルトの名無しさん:2011/08/01(月) 23:28:21.28
組み込みスクリプトとして便利
単純なので処理系のバグが少ない
覚えることが少なく、プログラミングの本質を学べる
468デフォルトの名無しさん:2011/08/02(火) 01:01:42.99
関数型ですっきり書けないような問題は何が原因なのか考えてみることは
手続き型で仕事をするプログラマにとっても参考になる、かもしれないよ

すっきり書けているように見えて効率が悪い原因とか
469デフォルトの名無しさん:2011/08/02(火) 02:19:54.06
あらゆることを動的に変更できる利点と欠点を知れる。
メタプログラミングの力に触れることができる。

現在のLisp特有の利点っていったらこれくらいだと思う。
他は別の関数型言語でも体験できるんじゃないかと。

他の言語も色々なアプローチをしてるみたいだから将来は分からないけど、
メタプログラミングの分野において、現時点で一番実績があって実用的なのは間違いなくLisp。
470デフォルトの名無しさん:2011/08/02(火) 08:11:01.81
>>464
関数が1st classである事とREPLだと思う
この2つはLipsの特徴だし。

REPL無しのLispとか泣けるし、関数が1st classじゃなかったらもっと泣ける。
471デフォルトの名無しさん:2011/08/02(火) 10:17:03.52
(+ 1 2 3 4)
=>10

最近こういう使い方ばっかり
472デフォルトの名無しさん:2011/08/02(火) 23:40:33.94
腎臓悪い俺の .emacs には以下の関数が書かれている(男性用)

(defun eGFR (cr age)
(* 194 (expt cr -1.094) (expt age -0.287)))
473デフォルトの名無しさん:2011/08/03(水) 00:47:13.28
「プログラムを扱うプログラムを書ける様になる」が仕事で役にたってるな。
MDAですとかテキトーな事いって括弧は隠してる。
474デフォルトの名無しさん:2011/08/04(木) 19:12:47.12
Clozure CL 1.7 リリースおめ
475デフォルトの名無しさん:2011/08/04(木) 21:20:48.16
今回はARM以外あんま改善点ないから、焦ってバージョンアップしなくても良いと思う。

ttp://trac.clozure.com/ccl/wiki/ReleaseNotes/1.7
ttp://cl.cddddr.org/index.cgi?Clozure%20CL#H-hprg7871

注意点:

- FASLとイメージのバージョンが上がったので、要再コンパイル・ダンプ
- さようならDarwin/ppc
- ASDF-Installさんお疲れっした
476デフォルトの名無しさん:2011/08/06(土) 01:09:55.88
>>466
寛容かもな。それぞれの言語のコミュニティって 色があるよね。
477デフォルトの名無しさん:2011/08/06(土) 13:29:51.56
大学でコンピュータ専攻した人教えて下さい。
日本の学校でもSICPが教科書指定になったりする?

Schemeは良い教科書いっぱいあるのに、日本ではSICPの情報が
目立って多い気がする。しかもチョット崇拝されて。

学校でコンピュータ勉強しなかったので、みんなどこでSICPと出会うか不思議。
478デフォルトの名無しさん:2011/08/06(土) 13:39:09.53
2ちゃんねるに専用スレがあるくらいなのに不思議なのか。
479デフォルトの名無しさん:2011/08/06(土) 13:47:54.78
stalinより速い処理系作ったら論文になるかな
480デフォルトの名無しさん:2011/08/06(土) 13:51:21.49
日本の情報処理なんて
既存の処理系の特定の処理を高速化しただけで
論文になるレベルだろ
481デフォルトの名無しさん:2011/08/06(土) 14:01:20.38
>>477
・SICP は Scheme の教科書という括りではなく、プログラミングの教科書として評価が高い
・評価が高いから色んな所で話題になる
・日本で特別評価が高いという訳ではなく、海外でも評価は高い
・プログラミング言語に興味を持っていれば大学の専攻に関係無く自然と出会うもの

最近も HN で話題になってた
http://news.ycombinator.com/item?id=2846799
http://news.ycombinator.com/item?id=2843715
482デフォルトの名無しさん:2011/08/06(土) 14:25:34.96
SICP評価高いのになんでまともな日本語訳ないの?
クリエイティブなんとかで自由に翻訳していいのに
483デフォルトの名無しさん:2011/08/06(土) 14:27:49.17
>>482
【SICP】計算機プログラムの構造と解釈 Part2
http://hibari.2ch.net/test/read.cgi/tech/1203096230/
484デフォルトの名無しさん:2011/08/06(土) 15:09:44.70
>>481
 丁寧な解答ありがとう!
上のリンクやってない人以外と多くてワラタ。

そこにもあったけど自分はBerkeleyの授業(OCW)で読んだ。
SICPも良かったけど講義してたBrian Harveyの方に惹かれたので、
この人のsimply schemeも日本でもう少し人気でないかな〜って思うけど
こっちはschemeよりだから難しいかなぁ。残念だ。
485デフォルトの名無しさん:2011/08/06(土) 15:39:10.46
>>477
九大にいった友人は、一年時はschemeの演習だったって聞いたな。
SICPが教科書指定だったかは聞いてないけども
ちなみに、俺の居た大学はprologで、教授が作った気合いの入った資料だった。
聞いた話によれば、prologを海外から輸入したスゴい教授が居るらしい。
486デフォルトの名無しさん:2011/08/06(土) 18:54:21.24
>>482 文句あるならおまえがやれ、以上
487デフォルトの名無しさん:2011/08/06(土) 21:18:41.38
訳について文句を言う奴か、いちいち反応する奴か
どちらか一方でいいからいいかげん学習しろよ
488デフォルトの名無しさん:2011/08/06(土) 21:33:11.08
和田が英語を学習しろ
489デフォルトの名無しさん:2011/08/06(土) 21:46:30.57
和田っちが日本LISP界、プログラミング界のボトルネックって状況はやばくね?
490デフォルトの名無しさん:2011/08/06(土) 21:50:58.18
LISP知らない人には
和田さんはキーボードの人でしょ
491デフォルトの名無しさん:2011/08/06(土) 22:54:18.89
Gauche0.9.2きてるー
492デフォルトの名無しさん:2011/08/07(日) 01:09:08.10
>>476
 他人に興味がないだけな気もする。
自分の世界あってナンボみたいな印象だ。
社会的なLisperには怒られるでしょうが。
493デフォルトの名無しさん:2011/08/07(日) 01:17:36.69
Lisp の場合は大抵の事は自分で実装出来てしまうから、
思想のぶつけ合いをしている暇があったら手を動かす
ってな感じなんじゃないかな

あれいいなー から つくったよ までの期間が短い
というか
494デフォルトの名無しさん:2011/08/07(日) 02:13:44.17
>>488
> 和田が英語を学習しろ

和田は英語は得意だよ。若い頃の海外論文の紹介とかの翻訳はマトモというか実に読みやすい。
SICPの訳は恐らくは機械翻訳で粗訳してから手を入れるという方法で手抜きしようとして、手入れの際の見落としがあるんだと思う。
それか東大退官後にどっかの大学で教えてゼミとかで学生に順番に読ませて学生に訳させたかのいずれかだな。
しかしまあ、名著をああいう翻訳で出すのは学問に対する良心を疑う、という批判には賛成だな。
自分でちゃんと訳す時間が自分になければ最初から訳者を引き受けなければいいんだからね。
495デフォルトの名無しさん:2011/08/07(日) 02:55:08.49
噂によれば一章以外はまともなんじゃないの?
496デフォルトの名無しさん:2011/08/07(日) 03:09:29.01
元の英文がやさしい文章はまとも
497デフォルトの名無しさん:2011/08/07(日) 03:11:50.29
いやいや
あんな文体で翻訳するソフトないから
498デフォルトの名無しさん:2011/08/07(日) 05:12:11.44
あの訳は好きなんだけどなあ
賛否あるのは分かるが
499デフォルトの名無しさん:2011/08/07(日) 06:36:05.66
>>485
prologを海外から輸入したらスゴイのか
俺もなんか輸入するかな
500デフォルトの名無しさん:2011/08/07(日) 07:14:00.56
他所から持ってきただけでスゴイスゴイと言われるのはおかしな話に聞こえるが
海のものとも山のものとも知れない時期に有用性を理解して
早期に導入したんだとしたら、それはある程度評価されてもいいんじゃない
その人が輸入した時代のprologをとりまく状況は知らんけど
501デフォルトの名無しさん:2011/08/07(日) 08:57:42.75
あんな文章をひねり出す機械翻訳やら、いまどきあんな大時代な文章を書ける学生or院生が、
いたらそのほうが凄いわw

他人に訳させて監修者がろくに監修の仕事してないだろ、とか言われたものといえばK&Rだが、
なんかそういう「世間の悪評」って奴を適当に拾ってきて継ぎ接ぎしただけで、全く一文もSICPを
読んでないのが丸分かりで馬鹿を晒してる >>494 が哀れを通り越して滑稽。
502デフォルトの名無しさん:2011/08/07(日) 13:02:50.71
翻訳ソフトの訳そのまま載せて
回収になった本あったな
503デフォルトの名無しさん:2011/08/07(日) 13:16:07.81
【SICP】計算機プログラムの構造と解釈 Part2
http://hibari.2ch.net/test/read.cgi/tech/1203096230/

続けるならそろそろこっちに行こうな。
504デフォルトの名無しさん:2011/08/07(日) 13:36:19.34
そっちは真面目なスレだから雑談はこっちです
505デフォルトの名無しさん:2011/08/07(日) 13:38:05.55
>>502
これな

アインシュタイン その生涯と宇宙 下
http://www.amazon.co.jp/dp/4270006501/
506デフォルトの名無しさん:2011/08/07(日) 13:41:46.05
>「数数千が、訪問代表団と会合するためにユニオン列車車庫に群がった、そして、パレードは200台の酔っぱらっていて旗の包茎の車を含んでいた」

これか
普段から糞訳本読みなれてるうちらからしたら
わりとありふれたレベルの訳だな
507デフォルトの名無しさん:2011/08/07(日) 13:44:19.79
>>504
雑談ならこっちで

雑談スレ 4
http://hibari.2ch.net/test/read.cgi/tech/1302223650/
508デフォルトの名無しさん:2011/08/07(日) 20:21:42.05
>>506
包茎の車がありふれてるとかどんな本読んでるんだ…
そうぞうすらできん
509デフォルトの名無しさん:2011/08/07(日) 20:25:59.14
アインシュタインの伝記だよ。
510デフォルトの名無しさん:2011/08/07(日) 20:26:10.25
ここまでの珍訳だと回収前の本はプレミアつくだろうな
511デフォルトの名無しさん:2011/08/07(日) 22:09:40.34
そんなことよりGaucheの話しようぜ!
512デフォルトの名無しさん:2011/08/07(日) 22:12:15.41
好きに話していいのよ
513デフォルトの名無しさん:2011/08/07(日) 22:30:28.71
>>475
ccl って地味に凄いよね
自分はもうしばらくまとまった量の Lisp のコードは書いてないけど、
Lisp でアプリケーションを作る事になったらこれを使うわ
514デフォルトの名無しさん:2011/08/07(日) 22:36:57.44
>>513
先輩にCommon Lispやるならsbcl使えって言われたんだけど、cclってそんなにいいの?
どっかのブログの人も推してたし
515デフォルトの名無しさん:2011/08/07(日) 22:50:36.99
>>514
SBCL も良いと思いますよ

歴史的な経緯や目指している方向が大分違うと思うので、自分は CCL の方が好きです
516デフォルトの名無しさん:2011/08/07(日) 23:09:26.54
>>511
github を検索してみると Gauche を使ったものって意外にあるよね。
517デフォルトの名無しさん:2011/08/07(日) 23:14:57.81
Gaucheのダウンロードリファレンスマニュアルまだ0.9.1なのな
518デフォルトの名無しさん:2011/08/07(日) 23:25:33.10
普通に make しても html 版は生成されない。
doc ディレクトリに行って make htmls すること。
519デフォルトの名無しさん:2011/08/07(日) 23:27:54.15
>>516
SICP とかの本の演習問題を解いたのとかがたくさんあって、注目すべきプロジェクトとか探すのめんどい。
520デフォルトの名無しさん:2011/08/07(日) 23:31:34.33
>>513
商売でやってるから、SBCLとかだと後回しにされがちな所も、
きっちりサポートされてたりするのが良いよね。ARMとかだと現状多分これ一択。

>>514
最適化とか型推論とかの性能はSBCLのが基本的に良いよ。
流石に国防総省に金もらってやってたCMUCLの派生だけあって。
人気も断トツだから、ライブラリからのサポートも厚いし。

どっかのブログの人が推してたのは安定性の観点からだけど、
SBCLも別に不安定って訳じゃないし、CCLも1.5とか凄いバギーだったよ。
SBCLのWindowsスレッドサポートも進展してきたし、今割と熱いかも。
521デフォルトの名無しさん:2011/08/07(日) 23:49:00.48
どっかのブログの人で通じるんだなwwww
まあLisp界隈は狭いしな……
522デフォルトの名無しさん:2011/08/08(月) 00:57:18.32
Windowsでまともに使えるタダで速いclはどれ?
523デフォルトの名無しさん:2011/08/08(月) 01:04:37.22
ccl のソースツリーに android と書かれているけど arm 対応はそういう事か
凄いな
524デフォルトの名無しさん:2011/08/08(月) 01:16:49.32
>>522
商用処理系とSBCLとCCLくらい。
525デフォルトの名無しさん:2011/08/08(月) 07:40:59.10
>>518
知らんかった。
地味にありがたい情報だわ。
526デフォルトの名無しさん:2011/08/08(月) 12:40:18.01
たとえばリテラルを書き換えたときの挙動なんかは未定義だったりするけど、
うっかりやっちゃうことだってよくあることじゃん?
最適化かけたら問題が顕在化するとかありがちじゃん?
言語処理系としては仕様に従ってたらいい話なんだけど、
言語ユーザーの誰も彼もが仕様の詳細を把握してるわけでもないし、
ちょっとしたミスを許容するナイーブな処理系の方が結果的に安定して動くことはありえる。

これはちゃんと仕様を習得するのにかかるコストだとか、
必要なパフォーマンスとかとのトレードオフになってくる話で、
どちらがより安定しているかという客観的な指標で言うのは難しいと思うんだよな。
527デフォルトの名無しさん:2011/08/08(月) 12:55:32.52
とりあえず使ってからコメントしては?
528デフォルトの名無しさん:2011/08/08(月) 13:05:52.70
やっぱりGaucheなのか
Racket常用してる自分は少数派なのか
529デフォルトの名無しさん:2011/08/08(月) 13:31:00.10
>>528
mz系もウィンドウズ使ってる人にはいるだろ。
俺はSTk。Demo-htmlのダサさは癖になる。
530デフォルトの名無しさん:2011/08/08(月) 13:31:15.99
>>526
それ安定性って言わんと思う。処理系には何の責任もない。
強いて言えば、どっちかというと堅牢性(robustness)に類する話だと思う。
規格に反する書き方すると警告出してくれたりすると親切で良いかもね。

この手の性質について定量化するのは難しいという部分には同意。
さらに、一般的に言われる不安定さっていうのは、イメージによるものが大きいし。

>>528
Racket便利じゃん。
531デフォルトの名無しさん:2011/08/08(月) 13:35:02.59
526は小難しい事言ってますって満足感得たいだけのアホ
532デフォルトの名無しさん:2011/08/08(月) 15:51:28.16
>>528
> やっぱりGaucheなのか
> Racket常用してる自分は少数派なのか

俺もPLT Scheme時代からずっと使ってるRachet派だ
533526:2011/08/09(火) 01:07:53.94
>>530
処理系の責任とは思ってないよ。 むしろ、「それって処理系以外の要因で結果的にそう見えてるだけじゃね?」という意味合いのつもり。 先に述べたように、言語処理系としては仕様に従ってたらいい話だとは思う。
ちゃんと規格通りに言語を使えている人とそうでない人にとって見え方が違うということで、使い方によって印象に差が出ることもあるという例で出しただけ。

安定性の話に限らず、速さとかでも総合的なベンチマークの結果がよくても弱点を踏んだとたんに遅くなることもあったりするし、必要なのは特性を把握するってことなんだよなぁ。 万能はあり得ないんだから。

だから >>528 が少数派であろうが多数派であろうがその選択肢が用途にマッチしていると考えたのならそれでいいんじゃないのか。
折角だからどういう用途で使ってるかも書いて欲しいね。 その上で各処理系のメリット・デメリットの情報を共有するのが建設的だろう。
534デフォルトの名無しさん:2011/08/09(火) 02:40:09.13
>>533
>>530は「安定性という言葉の認識がおかしいよ」って言ってるんであって、
別にそれ以上でもそれ以下でもない。書いてある通り。

あと、言いたいことは理解できるんだが、割と致命的に文章がおかしい。
言葉の選び方から文章の前後の繋がり方まで色々。もうちょっと推敲して欲しい。
535デフォルトの名無しさん:2011/08/09(火) 03:12:50.41
悪いがてめーのレスはread-errorだぜ!HAHAHA!
536526:2011/08/09(火) 12:49:08.54
何気なく
「コンピューターおばあちゃん♪コンピューターおばあちゃん♪」
と口ずさんでいたら、いつのまにか
「ハンバーガーおばあちゃん♪ハンバーガーおばあちゃん♪」
と言っていた。

な… 何を言ってるのか わからねーと思うが おれも何をされたのかわからなかった…
頭がどうにかなりそうだった…
催眠術だとか超スピードだとかそんなチャチなもんじゃあ 断じてねえ
もっと恐ろしいものの片鱗を味わったぜ…
537526:2011/08/09(火) 12:49:52.35
すいません誤爆しました。
上の書き込みは忘れてください。
538デフォルトの名無しさん:2011/08/09(火) 12:59:27.09
>>534からの流れワロタ
539デフォルトの名無しさん:2011/08/09(火) 14:16:52.50
macのハンバーガーwww
540デフォルトの名無しさん:2011/08/10(水) 05:53:42.01
>>536 ですべてがどうでもよくなった。どこに投稿するつもりだったんだw
541デフォルトの名無しさん:2011/08/10(水) 23:35:53.08
やっぱお前らって面白くないわ
542デフォルトの名無しさん:2011/08/11(木) 00:03:43.15
>>541 の面白い話が終わる事無く次から次に出てくるスレと聞いてやってきましたよ!
543デフォルトの名無しさん:2011/08/11(木) 02:23:48.81
Lispを手足のように使いこなす俺らの会話は
パンピーにはちょっとハイセンスすぎるんだよな…
544デフォルトの名無しさん:2011/08/11(木) 11:35:17.19
>>541
日本人だからしゃーない黄色人種だし
そっちの方がレアだろ
545デフォルトの名無しさん:2011/08/11(木) 14:33:29.76
一人頑張ってる奴がいるけど
引き際が肝心
546デフォルトの名無しさん:2011/08/14(日) 00:52:32.05
http://twitter.com/#!/ohmsha_pr/status/94201701321555968

Scheme修行、売れてるのかな?
547デフォルトの名無しさん:2011/08/14(日) 01:12:33.52
にわかには信じがたい。
548デフォルトの名無しさん:2011/08/14(日) 01:28:17.27
どっかで教材ででも使ったのかな?
6月だとそれもあんまりないよな
いちおう有隣堂には、たくさん置いてあったが、、、、
549デフォルトの名無しさん:2011/08/14(日) 16:41:48.05
Scheme勉強中でSICP買おうか迷ってたんだけど
手習いと修行ってそんなに良い本なの?
550デフォルトの名無しさん:2011/08/14(日) 17:11:26.96
551デフォルトの名無しさん:2011/08/15(月) 00:27:56.98
>>549
SICPはschemeの為の学習本じゃないって事は知っておいた方がいい。
552デフォルトの名無しさん:2011/08/15(月) 08:38:58.09
プログラミングHaskellの役者って山本和彦だったんだ。
やっぱ時代はHaskellだな。
553デフォルトの名無しさん:2011/08/16(火) 18:01:14.32
SICPってやたら推してくるヤツいるけど、別に読む必要なくね?
554デフォルトの名無しさん:2011/08/16(火) 18:07:12.10
解読?
555デフォルトの名無しさん:2011/08/16(火) 18:22:45.40
世の中に絶対必要なものなんてない。
556デフォルトの名無しさん:2011/08/16(火) 18:57:29.85
>>555もまた孤独。誰よりも愛深きゆえに…。
557デフォルトの名無しさん:2011/08/16(火) 19:30:36.83
絶対とか極論するなよ
558デフォルトの名無しさん:2011/08/16(火) 19:40:42.80
SICPは単なる教科書のひとつだから、別に他の教科書で勉強しても、
同じ内容を理解できてれば何だって良いよ。一定の評価を得てるから、
初学者に教科書を紹介するときにしばしば引き合いに出されるだけ。
559デフォルトの名無しさん:2011/08/16(火) 19:57:06.12
同じ内容を理解する必要はあるの?
560デフォルトの名無しさん:2011/08/16(火) 20:20:37.10
そりゃ基礎だから、理解できてないとまともなプログラム作れんでしょう。
まともな教育機関なら、普通にやることだと思うけど。独学でも途中で通過する所だし。

同じ内容って表現が悪かったかな。アプローチはそれぞれ違うだろうから。
根底にある考え方とか、そういったものの話ね。
561デフォルトの名無しさん:2011/08/16(火) 20:24:54.41
>>559
ないよ
読まなくてもいいよ
562デフォルトの名無しさん:2011/08/16(火) 20:28:37.81
翻訳がクソだってさんざん言われてるけど、そこまでか?
翻訳本ってあんなもんじゃないの?
563デフォルトの名無しさん:2011/08/16(火) 20:32:43.33
いやまあ、計算量とか再帰とかデータ構造とか抽象的な計算機の概念とか、
そういった諸々知らなくてやってけるなら読まなくてもいいだろうけど。

Cのプログラマとかだって普通に知ってる(使ってる)内容だよ?
564デフォルトの名無しさん:2011/08/16(火) 20:36:51.05
まあ経路が違っても、あの内容は全て知ってるのが普通。
565デフォルトの名無しさん:2011/08/16(火) 21:25:11.95
SICPはMITの電気電子/情報科学コースで「最初に」「4ヶ月で」やる授業の教科書だった。
プログラムの初心者や、自己流でやってきた学生に、短期間でそれなりの基礎を
身につけさせるって目的で書かれた。Schemeを使ってるのもそれが理由。
言語そのものの説明が簡単に済むから。
既にある程度経験があったり、時間をかけたり、独学するんだったら、他に良い本もあるだろうさ。
566デフォルトの名無しさん:2011/08/16(火) 22:26:49.46
問題は、この本を読まなくてもこれくらいの内容既に身に付けているか
そのうち身に付けてしまうような人ほど喜々として読んで
「面白かった」と言うけれど、

この本をペンと計算機片手に読む必要のある人ほど
言い訳したり何だりでマトモに読まず
「クソ本だ」と言っているところ

まあこの本に限ったハナシでもないんだけど
567デフォルトの名無しさん:2011/08/16(火) 23:09:59.24
みんながみんな、理想的なプログラマになる必要も無いでしょうし、
自分も、プログラミングは好きだけど、他の事は沢山さぼってるからなあ
568デフォルトの名無しさん:2011/08/16(火) 23:11:41.12
>>567
pgr
569デフォルトの名無しさん:2011/08/16(火) 23:12:41.16
>>568
ポール・グレアム?
570デフォルトの名無しさん:2011/08/17(水) 02:49:16.19
またジジイの繰り言か。
さっさとくたばれ。
571デフォルトの名無しさん:2011/08/17(水) 03:04:12.06
そういうのは他のスレでどうぞ
572デフォルトの名無しさん:2011/08/17(水) 04:06:42.04
scheme手習い買いました
eq?という使い方の分からないものが出てきました
こういう時のために関数の一覧とかないんですか
573デフォルトの名無しさん:2011/08/17(水) 06:10:40.08
釣れますか?
574デフォルトの名無しさん:2011/08/17(水) 12:33:10.95
釣りとかじゃありません。 ほんとにわからないんです。
それともこの本は私が読むには早いんでしょうか?
575デフォルトの名無しさん:2011/08/17(水) 12:49:00.39
その本は単語帳よろしく右半分を隠して読む本じゃないぞ、とエスパー
576デフォルトの名無しさん:2011/08/17(水) 12:50:55.22
誰だって最初は初心者だ。分からないことがあって当然。
分かってる人はそれをふまえて発現しないとな。俺がまだ初心者の頃、先輩はこう言ってくれた。

半万年ROMれ
577デフォルトの名無しさん:2011/08/17(水) 18:16:40.76
私がつまずいているのはすごく基本的なとこるみたいですね。
経済関連のニュースで、 Yahho Shoppong のベースになった view-web は
パウログラハムさんが Lips で描いたと知って興味をもったんですが、
文系には Lips は難しいみたいです。 もうちょっと独自に勉強してまだ来ます。
578デフォルトの名無しさん:2011/08/17(水) 18:48:04.20
あやつめついに法王の座にまで上り詰めおったか
579デフォルトの名無しさん:2011/08/17(水) 20:56:19.31
>>577
俺も文系だけど、Lisp が好きだし、Lisp の処理系の実装を読むのも大好きだよ

個人的には、Sheme 手習いは初心者の一冊目の本としては向いてないと思う
ウェブ上の解説とかで良いので、Scheme の基礎的な所を理解してから
再挑戦されると良いと思います
580デフォルトの名無しさん:2011/08/17(水) 22:58:04.88
英単語をスペルミスする呪いにでも罹ったのか
581デフォルトの名無しさん:2011/08/17(水) 23:13:30.61
lisp スレだからな
582デフォルトの名無しさん:2011/08/17(水) 23:18:55.55
なるほど
583SCHEME餃子 ◆8X2XSCHEME :2011/08/17(水) 23:35:13.66
>>579
ネタにマジレスなんとやら。
584デフォルトの名無しさん:2011/08/17(水) 23:37:59.04
時代はlispよりもhaskell
教養としてのプログラミングならこっちを勧めたい
585デフォルトの名無しさん:2011/08/17(水) 23:40:19.57
意図的にスペルミスしてるのは釣りなんだから相手しちゃだめ
586デフォルトの名無しさん:2011/08/17(水) 23:41:43.22
スチームと読ませるのはありなのか
587デフォルトの名無しさん:2011/08/17(水) 23:46:36.11
lips で描くとか、どんだけ苦行なんだ
588デフォルトの名無しさん:2011/08/17(水) 23:59:40.18
俺は ESC/P ならプログラムから出力したことある
589デフォルトの名無しさん:2011/08/18(木) 00:04:37.92
Haskell怖いよ
590デフォルトの名無しさん:2011/08/18(木) 00:23:14.75
>>577
via web は c++ で置き換えられちゃったみたいね...
理系出身でも、ちゃんと計算機科学を専攻していないと、lisp ナニソレ
フルクサイいんたーぷりたゲンゴでしょ状態の人が自分の周りには多かった。
いやいや今どきの lisp はコンパイラの方が主流だよって教えてあげたら、
ソモソモいんたーぷりたが何なのかすらきちんと分かってない感じだったわ。
591デフォルトの名無しさん:2011/08/18(木) 00:27:29.32
え?
Gauche=インタープリターが主流じゃないの?
592デフォルトの名無しさん:2011/08/18(木) 00:30:20.16
ばいとこーどいんたーぷりたーのハナシ?
593デフォルトの名無しさん:2011/08/18(木) 00:51:49.08
商用系 Common Lisp とかはコンパイラだよねぇ?
594デフォルトの名無しさん:2011/08/18(木) 00:53:36.49
オープンソースでもメジャーなのは全部コンパイラじゃないかな
しかも clisp 以外はネイティブコンパイラばかり
595SCHEME餃子 ◆8X2XSCHEME :2011/08/18(木) 00:54:37.24
Gauche が主流とか、それどこ情報よー。
と、煽りにノってみるテスト。
596デフォルトの名無しさん:2011/08/18(木) 02:40:06.88
せっかく出したトリップだがNGにしてやんよ
597572:2011/08/18(木) 04:57:38.08
僕は一度しかレスしてないんですがなりすましを見るのは楽しいですね
eq?は右を見れば理解しました
598デフォルトの名無しさん:2011/08/18(木) 05:10:42.36
>>593 >>594
ttp://cl.cddddr.org/index.cgi?%bd%e8%cd%fd%b7%cf

ある程度ユーザが付いてるのは全部コンパイラ持ってる。
というか、Common Lispは規格によりコンパイラ必須。
599デフォルトの名無しさん:2011/08/18(木) 07:39:03.14
>>595
なんで餃子?
600デフォルトの名無しさん:2011/08/18(木) 07:52:34.32
さめこ定食一つ
601デフォルトの名無しさん:2011/08/19(金) 00:24:14.47
初めてのscheme書籍のお勧めをいくつかお願いしまうす
602デフォルトの名無しさん:2011/08/19(金) 00:31:19.53
603デフォルトの名無しさん:2011/08/19(金) 06:29:47.58
>>602
ありがとん。
電車の中で読むのに、プリントアウトすんの面倒だな〜と思って。
604デフォルトの名無しさん:2011/08/19(金) 10:31:06.08
http://karetta.jp/book-cover/gauche-hacks
プログラミングGaushe 立ち読み版

ipadは横幅あっていいんだよ
605SCHEME餃子 ◆8X2XSCHEME :2011/08/21(日) 19:57:48.46
>>602
「プログラミング Gauche」は Scheme の初心者に適した内容になっていてオススメできるかな。
Gauche の名前を使ってはいても前半は Scheme 全般に通用するし。
逆に、 Scheme をある程度知っている人が Gauche 特有のことを学ぼうと思うとかなりヌルい本だと感じるかも。

それから、「プログラミング言語 SCHEME」もオススメ。
単に順番に言語機能を紹介するのではなく、 Scheme の理念をきちんと解説しているところに好感が持てた。
Lisp は関数型と分類されることもあるし、リスト操作に注目されることが多いけど、
実際の強みはそういった基本機能の上に様々なパラダイムを構築できることにあることがよくわかった。

これらの後に「Scheme 手習い」「Scheme修行」で演習というのが初心者向けにはいいコースなんじゃないかと思う。

SICP は名著だけど、 Scheme を学ぶために最初に読むような本ではないので注意。
いきなり読み始めても早々に脱落するケースが多いのでそれで Scheme を諦めるともったいない。
606デフォルトの名無しさん:2011/08/21(日) 20:29:42.54
「プログラミング言語 SCHEME」は初心者向けじゃない、クイックリファレンスだって尼の評価にあったから避けてたな〜。
ポチっとこ。
607デフォルトの名無しさん:2011/08/21(日) 20:53:36.88
原著が公開されてるのでどういう本かぐらいはチェックしたほうが
608SCHEME餃子 ◆8X2XSCHEME :2011/08/21(日) 23:26:34.64
>>606
Scheme というか Lisp 系言語も世間で言われているほどに難しいわけでは全然ないと思う。
でも、異質であるのは事実だから、機能だけ紹介されても使いどころがわからんのよ。
「プログラミング言語 SCHEME」では、その機能がどうしてそうあるのか背景となる理念と同時に基本となる使用例を押さえている点で初心者に読んで欲しい本だと思った。
俺自信はある程度 Scheme に慣れてから読んだのでもしかすると初心者には難しいと感じられるのかもしれん。
まぁ >>605 はあくまで感想レベルの話だから他のレビューも見て総合的に判断してくれ。
社会人にとっては高い本でもないからとりあえず買っといて難しいと思ったら後回しにするっつーのもアリだろうし。
609デフォルトの名無しさん:2011/08/22(月) 01:37:18.44
今月の情報処理の教育カリキュラム連載が、萩谷さん担当だった。
うろ覚えだけど内容は、
京大情報学科一学年後期から一年間SICP使ってるのは、初学者にアルゴリズムやパラダイムを教えるのに、
実際動かしながら勉強することが出来た上で余分な言語知識を教える必要が少ないから
というとになっていた。
(本にはschemeの使い方はあまり書いてないので逐次必要なときに教えてる)
http://winnie.kuis.kyoto-u.ac.jp/~okuno/Lecture/10/IntroAlgDs/
610SCHEME餃子 ◆8X2XSCHEME :2011/08/22(月) 02:27:26.75
>>609
基本要素が少ないことを活かしてるわけだな。 事前に言語そのものの教育をする必要がそれほどないと。

つっても Scheme のサブセットで済ましてるから、 SICP をまともに理解したとしても Scheme を充分に理解できてるわけではない。
だから SICP で Scheme を学ぶのは向いてないと思うわけだ。

R6RS の範囲に踏み込むと割と複雑になってくるし。 特にマクロまわりが。
マクロを話題に上げればフェイズの話になるし、フェイズとなると library もからんでくる。
俺としては R6RS はキッチリしてて好きなんだけど、これをちゃんと説明して理解させるのは難しいと思うわ。

R6RS を前提とした書籍っていうのは (日本語では) 多分一個も無いんじゃないかと思う。
ただ、「プログラミング言語 SCHEME」ではフェイズの問題には触れない範囲とは言え R6RS のマクロシステムの解説をしているので、目を通しておくといいと思った。
(厳密には R6RS のマクロシステムではなく、 R6RS の元になった提案。 そのマクロシステムの提案者が著者自身であることからもわかる通り、著者は Scheme 界の大御所であるので記述がそれなりに信頼できるというのもある。)
611609:2011/08/22(月) 03:54:51.74
あがー、萩谷さんじゃなくて湯浅さんだった、すんません
KCL開発者って覚えてて、いつも混同してしまう、、、
612デフォルトの名無しさん:2011/08/22(月) 06:50:37.96
言われて調べてみたけど、「プログラミング言語SCHEME」ってDybvigが書いてんだね。
何か引っ掛かってたけど「The Scheme Programming Language」の邦訳か。スッキリした。
613デフォルトの名無しさん:2011/08/22(月) 09:09:36.43
まぁはぎゃ先生ないし湯浅先生の指導で勉強する、とかいうんだったら、前提が全然違うわ。
しかも奥乃先生も付いてるんでしょ? 鬼に金棒、じゃなくて、鬼が二人w
614SCHEME餃子 ◆8X2XSCHEME :2011/08/22(月) 09:47:40.02
>>612
原書 (英語) の方が通りがいいのか。
お前インテリだなー。
615デフォルトの名無しさん:2011/08/22(月) 17:34:16.84
横のものを縦にするだけで食っていける国健在なり
616デフォルトの名無しさん:2011/08/22(月) 20:20:08.27
http://iup.2ch-library.com/i/i0399045-1314011959.png
横のものを縦にしてみた。
617デフォルトの名無しさん:2011/08/23(火) 01:34:09.42
インテリだなー。
618SCHEME餃子 ◆8X2XSCHEME :2011/08/23(火) 12:52:16.17
Shibuya.lisp の発表者を募集してるらしいね。
誰か応募した?
619デフォルトの名無しさん:2011/08/23(火) 12:57:01.87
締め切りはいつ?
620SCHEME餃子 ◆8X2XSCHEME :2011/08/23(火) 13:02:21.19
621デフォルトの名無しさん:2011/08/23(火) 14:56:29.65
募集してるのは発表者だけだよね?
参加したいな〜と思って参加登録探したけど見つからない
622デフォルトの名無しさん:2011/08/23(火) 15:10:55.92
コテハンに反応するなっておばあちゃんが言ってた。
623デフォルトの名無しさん:2011/08/24(水) 03:20:22.75
お前はもう 反応している
624デフォルトの名無しさん:2011/08/24(水) 07:42:37.79
>>613
奥乃先生は授業でリリカルLispを紹介したらしい。
なんか凄いな。

学生が撮った写真がTwitterにあがってる。
ttp://twitpic.com/357uj4
ttp://twitpic.com/357veq
625デフォルトの名無しさん:2011/08/24(水) 10:53:23.38
学生が食いつくと思ったんだろう
626デフォルトの名無しさん:2011/08/25(木) 11:53:55.98
R7RSって大体R5RSを拡張したようなもんって聞いてるけど
「Scheme:マクロ:CommonLispとの比較:意味論」で言われてるような問題って解消されてるの?
(問題点:R5RSでは<expression>≡<datum>って解釈の実装を許すような意味論定義がされてる)
627デフォルトの名無しさん:2011/08/25(木) 12:42:35.22
今ドラフトの第三稿見てるけど、そこで指摘されてる点はそのまま残ってるように見える。
全文を読んでないから断言はできないけど。

まあ、R7RSのsmall languageってsyntax-case入ってないし。
628デフォルトの名無しさん:2011/08/25(木) 13:00:19.23
んー、でも6.3.2に

> That is, according to Scheme's grammar, every <expression> is also a <datum> (see section 7.1.2).

って書いてるな。これはR5RSの6.3.2にもある文。まあ、7.1.2の方は例によって指摘通りなんだけど。

ちなみに、>>626の「<expression>≡<datum>」ってtypoだよね? それだと逆になっちゃう。
629デフォルトの名無しさん:2011/08/25(木) 17:30:38.38
the datumではなく、a datum。
630デフォルトの名無しさん:2011/08/25(木) 17:45:00.91
Gaucheはイカ娘になるしかないな
631デフォルトの名無しさん:2011/08/25(木) 18:01:44.29
>>629
ごめん。英語苦手なんで、できればもう少し詳しくお願いしたい。
具体的にはどう解釈する余地があるの?
632デフォルトの名無しさん:2011/08/25(木) 18:25:50.92
>>626
古典的なSchemerにとっては解決する必要のない問題。
ダングリングエルス問題に似てる。
633デフォルトの名無しさん:2011/08/25(木) 19:16:54.17
そもそも、意味論が完璧になっても、使う側からしたら何の役にも立たんしね。
多少穴があろうが、syntax-caseとかexplicit renamingが使えればどうでも良い訳で。
634デフォルトの名無しさん:2011/08/26(金) 11:36:50.38
てすと
635デフォルトの名無しさん:2011/08/27(土) 11:32:53.85
問: 「あたかも」を使って短文を作りなさい。
答:R6RSから俺にとってどうでもよくなる危険性が
あたかもしれない
636デフォルトの名無しさん:2011/08/27(土) 14:42:05.05
『プログラミングgauche』の問題(p.56)について2点質問します
1.リストの長さを計算する関数をfoldを使わずに定義するものとしてこう書いてみました

(define (length2 lis)
(if (null? lis)
0
(+ 1 (length2 (cdr lis)))))

通常のリストならただしく動くのですが、ただ、'(2 . 3) のようなドット対がくると動きません

2. リスト中から条件を満たす要素だけを抜き出してリストを返す関数が動きません

(define (filter2 pred lis)
(cond
([(null? lis) '()]
[(pred (car lis)) (cons (car lis) (filter2 pred (cdr lis)))]
[else (filter2 pred (cdr lis))])))

> (filter2 even? '(1 2 3 4 5))
*** ERROR: invalid application: (#f ())

それぞれどう修正すればいいのでしょうか
637デフォルトの名無しさん:2011/08/27(土) 15:11:58.47
null?を(not (pair? にすればいいんじゃね
condの括弧が大杉なんじゃね
638デフォルトの名無しさん:2011/08/27(土) 17:19:59.54
(cond ([...] [...] [...]))
(cond [...] [...] [...])
ぱっと見勘違いしちゃうよな
やっぱり括弧の種類増やしたら駄目だ、全部(...)で統一しようぜ(w
639デフォルトの名無しさん:2011/08/27(土) 17:41:37.31
括弧を廃止して(a)を a begin endにしよう
+ begin 1 2 3 end => 6
うむ。
640デフォルトの名無しさん:2011/08/27(土) 20:46:50.24
condはclojureのが好きだなぁ、括弧の数省略されてて楽だ
641デフォルトの名無しさん:2011/08/27(土) 21:30:28.36
また cond
642デフォルトの名無しさん:2011/08/27(土) 21:50:54.86
lambdaこりゃ
643636:2011/08/27(土) 23:51:22.02
>>637
ありがとうございます。
その通りでした
644デフォルトの名無しさん:2011/08/28(日) 16:48:24.87
括弧の数え間違えなんて思考停止をいつまで続けるつもりだ?
BASICみたいに対応付けが簡単な仕組みに変えればいいんだよ

+begin 1 2 3 end+ => 6

あ、あれ?これって○MLじゃ
645デフォルトの名無しさん:2011/08/28(日) 17:16:32.98
それのどこが簡単なの?
646デフォルトの名無しさん:2011/08/28(日) 17:20:14.93
それのどこがBasicだよ

begin-endはAlgolだ
647デフォルトの名無しさん:2011/08/28(日) 17:38:44.42
上のを見て括弧の数え間違えとか言っちゃう人はLisperじゃないだろ。
あれはcondの文法を少し勘違いしてただけで、一度覚えたらああいう間違いはしない。

S式disりたいなら式単位で編集できるようになってから出直してこいよ。
648デフォルトの名無しさん:2011/08/28(日) 17:41:09.07
どう見ても括弧の問題です。
ありがとうございました。
649デフォルトの名無しさん:2011/08/28(日) 17:42:55.35
どうみてもおまえの目が節穴です
650デフォルトの名無しさん:2011/08/28(日) 17:54:31.89
それなりの経験があって括弧に文句言ってる奴とそうでない奴はすぐわかる
651デフォルトの名無しさん:2011/08/28(日) 23:21:20.82
だから糖衣構文の問題なんだよ
(cond ([...] [...] [...]))
(cond [...] [...] [...])
このふたつは勘違いしやすいが

(cond ((...)(...)(...)))
(cond (...)(...)(...))
これなら分かりやすいだろ? 純粋なS式なら問題ないんだよ
652デフォルトの名無しさん:2011/08/29(月) 02:19:51.48
>>651
どういう根拠で[ ]の方が間違いやすいのかまるで理解できない。
それじゃあ単に[ ]が嫌いなだけにしか見えないよ。

>>638もそうだけど、具体的な理由も出さずに否定されても。
見栄えの問題を、新たな記号の導入で解決するのはスマートじゃない、
みたいな主張なら、聞いたことがあるし、理解もできるけど。
653デフォルトの名無しさん:2011/08/29(月) 02:44:47.39
知るとちょっと使って偉そうにしたがる言葉ナンバー1だよね。
糖衣構文って。
654デフォルトの名無しさん:2011/08/29(月) 06:54:15.33
clojure 良く知らないんだけど、いつ[]を使っていつ()を使うか、
って明確に文法的に分かれてるの?
おれはカッコの数を気にしない回路が脳内に出来てしまってるから、
覚えることが少ない方が嬉しいなぁ。
655デフォルトの名無しさん:2011/08/29(月) 07:20:23.93
じゃあ気にするな
656デフォルトの名無しさん:2011/08/29(月) 07:43:51.47
clojureはすべてがlistではなく、コレクションによってカッコ変える方針
http://clojure.org/cheatsheet
http://clojure.org/lisps

下記の下半分も括弧の話題だよ
http://practical-scheme.net/wiliki/wiliki.cgi?Lisp%3AS%E5%BC%8F%E3%81%AE%E7%90%86%E7%94%B1
657SCHEME餃子 ◆8X2XSCHEME :2011/08/29(月) 23:35:50.52
Scheme の宿題スレが無いのはなんで?
658デフォルトの名無しさん:2011/08/30(火) 06:22:56.32
作ってくれればSICPわかんなくなった時に気軽に質問しまくるわ
659デフォルトの名無しさん:2011/08/30(火) 06:35:57.82
ジュンク堂で「リスト遊び」があったのでつい買ってしまったけど、薄っぺらで割高だし、
内容も薄くて買って損したわ。これならオライリーのフグ本の方がずっといいな。
660デフォルトの名無しさん:2011/08/30(火) 07:47:29.60
確かにフムフムヌクヌクアプアアはフグ目だが。
661デフォルトの名無しさん:2011/08/30(火) 09:12:45.94
フグ本、というのは、ハリセンボン本の自称として予約されてるから混乱する。
662デフォルトの名無しさん:2011/08/30(火) 10:47:44.57
まあでも、スコープ的にはフムフムなんとかが優先じゃね
663デフォルトの名無しさん:2011/08/30(火) 11:39:56.96
任意の数値リストをシリアライズしてテキストファイルに保存したいけど
どんな形式がいいんだろ

S式そのままだとmatlabとかRが読めないんだよなあ
664デフォルトの名無しさん:2011/08/30(火) 14:47:34.95
Lion で ypsilon を make しようとして失敗。
http://ken-wakita.net/ja/2009/11/building-ypsilon-on-snow-leopard/
をしても、出来上がった実行ファイルは Segmentation fault: 11 で死ぬ。

Xcode プロジェクトでも、最適化をオンにすると失敗する。
結局、SDKをCurrent にした後、コンパイラを GCC から LLVM へと変更したらそれで解決した。
665デフォルトの名無しさん:2011/08/30(火) 19:23:30.74
>>659
え、この内容で薄っぺらなの?
そもそもこの程度の本の技術は持ち合わせていて必要無かっただけでは?

本は薄いけど、初心者の俺にとって中身めちゃめちゃ濃すぎ。
666デフォルトの名無しさん:2011/08/31(水) 01:45:49.49
lambdaを入れてない段階で糞本だろ。幾ら薄いといってもそれに触れてこそ、Rubyとか
他のプログラミング言語でのプログラムに役に立つ知見が得られる。
いまこの本を読む(初心者としてLISPに触れる)ならそれがないと。
安いといっても薄いし、説明の丁寧さではGauche本だって同じくらい詳しいし、到達する
地点はずっと遠いわけだから、いまリスト遊びを選ぶ意味はまったくない。
667デフォルトの名無しさん:2011/08/31(水) 02:06:28.85
機会があれば読んでみるかな
668デフォルトの名無しさん:2011/09/01(木) 00:49:35.69
on lisp読み終わって
let overlambdaがつまらないので途中でやめた
SICPは最後の章以外呼んだ

さて次なに読もう
669デフォルトの名無しさん:2011/09/01(木) 00:52:39.64
>>668
『リスト遊び』
670デフォルトの名無しさん:2011/09/01(木) 08:53:57.31
AI memo の lambda the ホゲホゲを全部
671デフォルトの名無しさん:2011/09/01(木) 09:15:26.28
LionのGCCはPICがデフォルトになって云々ってGaucheのMLでも見かけたな
672デフォルトの名無しさん:2011/09/03(土) 01:52:01.94
Mosh作者が作ったOS新スレ

なあ、Monaの開発は順調さ build5
http://hibari.2ch.net/test/read.cgi/os/1314741952/
673668:2011/09/03(土) 21:21:24.04
The Seasoned Schemer
の和訳が本屋に積まれてた

立ち読みしてみたけど
以外と面白いね

次はこれいいかも
674デフォルトの名無しさん:2011/09/03(土) 23:50:22.39
>>670
>AI memo の lambda the
http://en.wikipedia.org/wiki/AI_Memo
AI Memo 353 (1976), "Lambda: The Ultimate Imperative"
AI Memo 379 (1976), "Lambda: The Ultimate Declarative"

これのこと?
675デフォルトの名無しさん:2011/09/04(日) 00:19:18.72
今始めるならClojureがGaucheかどっちがいいですか?
676デフォルトの名無しさん:2011/09/04(日) 00:50:45.59
windowsやmacでやるならclojureがいい、環境ととのえるの楽だし
本を読みながらならgaucheがオススメ
677デフォルトの名無しさん:2011/09/04(日) 00:55:32.50
ここで聞いたらGauche。
向こうのスレで聞いたらClojure。

基本だけならSchemeのがおぼえやすいかな
JAVAプログラマでライブラリ使える程度知識あるなら、
Clojureのが応用しやすい
678デフォルトの名無しさん:2011/09/04(日) 02:21:52.27
Kawaのことも思い出してあげてください
679デフォルトの名無しさん:2011/09/04(日) 02:30:15.85
>>677
> ここで聞いたらGauche。
> 向こうのスレで聞いたらClojure。
なんでそんなこと言っているの。ここはLisp・Scheme全般のスレなんだが。
Gaucheは実用基本ライブラリが充実しているが、速度が難点だし、マンセーしたいならScheme単独スレ立てれば?

とJava嫌いのsbcl使いが言ってみる。
680デフォルトの名無しさん:2011/09/04(日) 10:09:50.32
Scheme単独スレってあったっけ?
681デフォルトの名無しさん:2011/09/04(日) 11:39:24.95
ない。CL単独ならあるけど。
682デフォルトの名無しさん:2011/09/04(日) 12:26:09.29
>>675
どんなことやりたいのか教えてくれないと、答えにくいと思うよ。

ライブラリを組み合わせてアプリケーションを手早く作るなら、
Javaの資産をそのまま使えるClojureが有利で、FFI頼りのGaucheは分が悪い。

日常的に使うスクリプトなんかをUNIX向けに書いたりする場合、
shebangをそのまま使えるGaucheの方が楽だろうし、何より処理系が軽い。

あと、JVMが動かない場所ではClojureは動かないけど、
Boehm GCが動けばGaucheは大体どこでも動くだろうし。
683デフォルトの名無しさん:2011/09/04(日) 12:52:47.72
使い捨てスクリプトにはClojureみたいなJVM言語は向かないね
nailgunみたいな起動高速化技術を使ってもスタートアップに時間がかかりすぎる
684デフォルトの名無しさん:2011/09/04(日) 12:58:39.74
>>682
ClojureだとAndroidでもうごいちまうからなぁ
BoehmGCが動かない環境の方が少ないかもしれないが身の回りのプラットフォーム考えたらClojureに軍配があがっちまう
javavmとwget、leiningenスクリプトの3つがあればコンパイルとかせんでも動くってのは魅力だよ

ただスクリプトとして速起動ってのが目的だったらGacusheが一番いいだろう。
Win,Mac限定ならYpsilonも魅力的
685デフォルトの名無しさん:2011/09/04(日) 13:36:24.63
なんでChicken schemeが選択肢に上がらないのかと

R5RS準拠でC/C++の資産がそのまま使えて、移植性抜群の上
とっつきやすさはGaucheと同レベル、コンパイラとして使えばトップクラスの速度
どうしておまえらChickenを選ばずGaucheを使うんだ
686デフォルトの名無しさん:2011/09/04(日) 13:56:20.73
うるせーんだよチキン野郎
687デフォルトの名無しさん:2011/09/04(日) 14:09:32.93
Chicken scheme、MacPorts 使って Lion に入れてみたけど、駄目だなこりゃ。
csi -v すら暴走してCPU100%になる。

git clone git://code.call-cc.org/chicken-core

で落とした奴はコンパイルすら出来んし。
688デフォルトの名無しさん:2011/09/04(日) 14:31:25.87
揚げ足取るわけじゃないけど今時のOSでJVM動かないのなんてあるのかしらん
689デフォルトの名無しさん:2011/09/04(日) 14:36:28.82
>>688
iOSくらいじゃね?

あとは古いCPUのが動かないけど今時じゃないし
690デフォルトの名無しさん:2011/09/04(日) 14:40:50.51
BiglooはだめですかそうですかAndroidもいけるのに
ttp://www-sop.inria.fr/mimosa/fp/Bigloo/
691デフォルトの名無しさん:2011/09/04(日) 14:46:50.16
chickenそんなにいいならとおもっていれてみた
さっそくman chicken

だれがマンチキンやねん
692デフォルトの名無しさん:2011/09/04(日) 17:37:22.95
>>687
MacはMach-O形式その他独自なところが
UNIX方言としては敷居高くて保守が行き届かないことが多いね。
693デフォルトの名無しさん:2011/09/04(日) 18:55:31.50
gauche64bitはGCのバグでFreeBSD(amd64)ではportsのコンパイル通らない。
694デフォルトの名無しさん:2011/09/04(日) 19:15:54.00
んーGCヘッダのインクルードまわりで何か変なことが起きてるようなら、
どこかで似たようなの最近見たぞ。

俺がチェックしてる範囲内だから、確かそれも言語系だったはず。
695デフォルトの名無しさん:2011/09/04(日) 19:38:46.60
>>678
Kawaはslibに使えないのがいっぱい
あれなんとかならないの
696デフォルトの名無しさん:2011/09/04(日) 20:19:41.86
kawaってまだproper tail recusionじゃないんでしょ?
697デフォルトの名無しさん:2011/09/04(日) 20:48:07.01
一応 --full-tail-calls オプションがあって、 eval 以外は OK らしい。
でも JVM 使ってる限り R5RS が言うような proper tail recursion は
期待しない方がいいと思う。
698デフォルトの名無しさん:2011/09/04(日) 20:51:16.05
独学でschemeを学んでいます。

defineで関数を定義している中でさらにdefineを使っているコードをみかけたのですが、これは中でdefineする意味はあるのでしょうか?
別々に定義する事はできないのでしょうか?
699デフォルトの名無しさん:2011/09/04(日) 21:53:50.38
>>698
その定義が関数の中からしか参照できなくなる。

つまり、他から不要な物を外に見せずに済むので衛生的。
実用的な話なら、意図しない関数や変数の参照を防げる。

もちろん、関数の外で定義しても良い。そういうスタイルもある。
ただし、R5RSではモジュールの機能がないので、
グローバルな定義になってしまうのだけ注意。
700デフォルトの名無しさん:2011/09/04(日) 21:59:55.65
ちなみに、処理系の独自の機能としてモジュールの定義ができたり、
あるいは名前空間を分けられたりするので、処理系に依存するコードで良いなら、
問題にはならない。あと、新仕様のR7RSからはモジュール機能が導入される予定。

パッケージで名前空間を扱うCommon Lispだと、ローカル関数を定義せず、
小さい関数も外に出すスタイルが主流なので、好きな方を使えば良いよ。
701デフォルトの名無しさん:2011/09/04(日) 22:55:44.20
λかわいいよλとつぶやくとEmacsからのtweetだが
LispかわいいよLispとつぶやくと声優オタになる不思議
702デフォルトの名無しさん:2011/09/04(日) 23:03:11.59
LISPもう終了したじゃないですかー!
703デフォルトの名無しさん:2011/09/04(日) 23:15:57.34
カッコいいよならいいんじゃね?
704SCHEME餃子 ◆8X2XSCHEME :2011/09/04(日) 23:17:17.23
>>700
R7RS (ドラフト) のモジュールと R6RS のライブラリの違いをちょっと解説してくれんか
705デフォルトの名無しさん:2011/09/04(日) 23:23:49.38
>>702
そりゃ舌っ足らずなんて名前の声優ユニット無くなって当然じゃなかろうか?
706デフォルトの名無しさん:2011/09/04(日) 23:37:21.05
あらためて考えると相当やばいネーミングだな
707デフォルトの名無しさん:2011/09/04(日) 23:45:08.44
>>704
ttp://trac.sacrideo.us/wg/attachment/wiki/WikiStart/r7rs-draft-3.pdf

私JKだけど2ページ弱なのに"5.5. Modules"読まない男の人って…。

ベースはR6RS library。名前を変えてることからも分かる通り、互換性を保とうとはしていない。
R6RSでの<library body>は(begin <library body>)としなくちゃいけなくなったり、
SRFI-0のcond-expandも統合されていたり、includeできるようになったいたり、かなり違う。
簡略化されている部分(バージョンとか)と、拡張されている部分がある。
708デフォルトの名無しさん:2011/09/04(日) 23:55:41.79
つまり、違う部分が多いし、R6RSの仕様と照らし合わせるの面倒だし、
短いから自分で読んでくれなさい。
709デフォルトの名無しさん:2011/09/04(日) 23:57:36.07
俺そろそろ寝るわ。

lambda が1匹、lambda が2匹、lambda が3匹、・・・
710SCHEME餃子 ◆8X2XSCHEME :2011/09/04(日) 23:57:53.17
>>707
いや、 >>700 の「新仕様のR7RSからは」とあるのが気になった。
R6RS では名前空間を分けられてない致命的なところでもあったのかと思ったけど、意味的にはそれほど大きな変化は無いのね。
711デフォルトの名無しさん:2011/09/05(月) 00:01:07.88
R5RS → R6RS
 ↓
R7RS
712デフォルトの名無しさん:2011/09/05(月) 00:03:17.72
と思ってたけど、R6RSベースのところがあるのか
713デフォルトの名無しさん:2011/09/05(月) 00:19:42.34
>>710
ああ、ごめん。そういうことか。
「新仕様」の部分は、俺も書いた後で気付いたんだけど、
本当に無意識にR6RSを黒歴史としてスルーしてたわw

用途と目的は一緒だけど、セマンティクスは全然違うよ。
精読はしてないけど、R6RSでの7.2の部分とか大幅に省略されてる。
現状ではR5RS以前までの、多くの実装を許す寛容さがある感じ。
714デフォルトの名無しさん:2011/09/05(月) 00:30:46.62
>>712
基本はR6RSのライブラリなんだけど、文法が少々変更されていて、
意味的にはインポート・エクスポートレベルとか、フェーズとか、
R6RSで非常に細かく決められていた仕様がなくなってる。
あるいは、まだ書かれてないだけでこれから追加されるのかもしれないけど。

R7RSドラフトでのモジュールは、"5.1. Programs"で本当にさらっと触れられてて、
あとは"5.5. Modules"で書かれてる程度。細かい挙動とかは定義されてないっぽい。
715デフォルトの名無しさん:2011/09/05(月) 00:45:39.52
SchemeはR4RSからやり直す必要があるのさ
716デフォルトの名無しさん:2011/09/05(月) 10:03:08.40
Gaucheのモジュールはどれに一番近い?
717SCHEME餃子 ◆8X2XSCHEME :2011/09/05(月) 10:47:16.32
>>716
Common Lisp
718デフォルトの名無しさん:2011/09/05(月) 11:23:28.44
http://codepad.org/arrsvMiU

↑このコードで
35行目の部分なのですが、expがpairじゃなかったら35行目にいきますよね?
つまり#fという事なのに(#t (format・・・frames))))
とはどういうことなのでしょうか?
#tの意味がわかりません。
どなたかお答えお願いします。
719デフォルトの名無しさん:2011/09/05(月) 11:29:05.69
29行目の(pair? exp)を評価すると偽(#f)なので、35行目に行く。
#tを評価すると真(#t)なので、それ以下が実行される。
720デフォルトの名無しさん:2011/09/05(月) 11:34:35.66
>>719
以下が実行されるということは
#tを書かずに(format-variable exp depth frames)
だけでも同じ動作をすると思うのですが、違うのでしょうか?
実際に試せば速いのですが、今手元に環境がないので検証できません。
どうかお答えお願いします。

また、このプログラムでoutputに表示させてるのは21行目のvであってますよね?
721デフォルトの名無しさん:2011/09/05(月) 11:37:16.41
(cond (条件式1 式1)
(条件式2 式2)
...
(else 式n))

のelseを省略して、代わりに条件式に常に真になる式#tを使っただけ。
必ず真だからそこで引っかかるわけで、昔のlispのcondはelseなんて
なかったからむしろこういう書き方が当たり前だった。
722デフォルトの名無しさん:2011/09/05(月) 11:41:09.54
>>721
なるほど。
elseの代わりだったということですね。
では#tをelseに変えることはできて、どちらも書かない事は出来ないという解釈でいいですか?
723デフォルトの名無しさん:2011/09/05(月) 14:20:35.70
>>722
condは、(条件 式 ...)を任意の個数受け取る条件式で、
それぞれの(条件 式 ...)の「条件が成立したときだけ式を評価する」ものなので、
条件を省略することはできません。elseは必ず成功する条件の構文糖です。

(cond ...
((format-variable ...)))

とか、

(cond ...
(format-variable ...))

みたいにできないか、ってことですよね? 無理。
724デフォルトの名無しさん:2011/09/05(月) 15:53:08.77
>>712
R6RS - R5RS ∩ R7RS = やったら、逆に怖いわ。
単なる戦争やん。
725デフォルトの名無しさん:2011/09/05(月) 17:02:49.20
racketのパッケージシステムになれちゃったから
それに合うようにマクロ書けるならそれでいい
726デフォルトの名無しさん:2011/09/05(月) 17:25:43.91
R6RSでlibraryって名付けたものをmoduleって改名したり、
意味論までR5RSまで逆戻りってのを見てると、喧嘩売ってるとしか思えないけどな。
727デフォルトの名無しさん:2011/09/05(月) 18:10:54.99
まあ実際R6RSって誰が得したの? とは思う
728SCHEME餃子 ◆8X2XSCHEME :2011/09/05(月) 18:44:05.81
モジュールの仕様をこれから詳細に決めていったら結局は R6RS みたいな感じになるんでないの?
729デフォルトの名無しさん:2011/09/05(月) 19:03:10.24
可能性がないとは言わないけど、限りなく低いとは思うよ。
R6RS推進してたPLTの中の人とかはRacketに行っちゃったし、
Dybvigいないし、ドラフトもR5RS以前への揺り戻しが凄いし。

多分、そんなんやったら、またSussmanがどっか行っちゃう。
730SCHEME餃子 ◆8X2XSCHEME :2011/09/05(月) 19:09:05.59
とは言っても、フェイズの問題とかを未定義で済ますわけにもいかんし。
環境を分離しないのがいいなら Common Lisp 使っとれって思うし。
R6RS がそんなに忌避されるのが納得いかないんだけど。 複雑ではあってもキッチリしてていいじゃん。
731デフォルトの名無しさん:2011/09/05(月) 19:53:04.37
フェーズとかが仮に入るとしたら、多分R7RS large languageの方に入るのかな?
ただ、どうもWG2の作業予定リスト見る限りでは、WG1の仕様の詳細化は考えてないっぽいんだよね。
実際はMLとかで熱く議論してたりするかもしれないけど、そこまでは追ってない。

ttp://www.scheme-reports.org/2010/working-group-2-charter.html
ttp://trac.sacrideo.us/wg/wiki/StandardDocket

R6RSは最小主義派には嫌がられると思うよ。プリミティブでない物をこれでもかと取り込んだから。
最小構成要素でないものはSRFIにしよう、っていうのがR6RS反対派の主な意見。

それと、CLの部分は外してると思う。CLはコンパイル時のマクロなどの処理について、
順番から環境まで非常に詳細に決められている。HyperSpec読むと分かるけど。
むしろ、色々きっちり決まってる方が良いなら、CLの方が性に合うかもよ。試してみない?
732デフォルトの名無しさん:2011/09/05(月) 20:12:10.34
さらに調べてみたけど、Alex Shinnが考えた案が採用されてるみたい。

ttp://trac.sacrideo.us/wg/wiki/ModulesShinn

で、これにはWG2でフェーズの問題は多分考える、って書いてある。
WG2はまだ全然動いてなくて、work itemsに入ってないって話なのかな?

情報がバラけてて追いづらいなー。これ作業してる人把握できてんのかな。
733SCHEME餃子 ◆8X2XSCHEME :2011/09/05(月) 20:16:26.89
>>731
Common Lisp がキッチリしてないとは思ってないよ。
Common Lisp についてよく知らんけど、記述は詳細だというのは知ってる。

フェイズの考え方をどう決めるかについて、
Common Lisp 的にしちゃうくらいならそういう奴は Common Lisp を使っとればいいのであって、
Scheme でやるからには Scheme らしさってものがあって欲しいという意味合いのつもりだった。
そして俺は R6RS は Scheme らしさが有ると思ってる。
SRFI に追い出すべき部分がどれかについては議論すべきところはあると思うけど。

R6RS を元に削ぎ落していくんじゃいかんかったんか?
734デフォルトの名無しさん:2011/09/05(月) 20:35:25.88
>>733 これはどうしてこうなってないんだ? って思うような案は
既に出されて否決されてることが良くあるよ。例えばモジュールについて
r6rsを元に簡略化するって案も検討されて否決されてる。WG1のwikiのballotのところ参照。
それについて不満があって、WGメンバを説得できるだけの根拠を示せるなら
scheme-reports MLに投稿すればふたたび投票にかけられる可能性はあるけどね。
つうか、ほんとに疑問に思ったり良い案だと思うなら、こんなとこに書いてないで
MLにポストすればいいんじゃないか。単にどこにも影響を及ぼさない雑談を
したいだけならここでもいいけど。
735デフォルトの名無しさん:2011/09/05(月) 20:45:23.54
とりあえず、本筋から外れるCommon Lispは置いておいて。

R6RSは反対意見多かったし、一度R5RSから出直そう、ってことじゃないの?
R6RSは根本の意味論の部分からして操作的意味論になっちゃってるから、
削っていくのも難しいんだと思う。表示的意味論の方が良いって人もいるし。

で、ベースのコンセンサスの得やすい部分だけ小さな仕様としてまとめちゃって、
その上に実用を目指した詳細で(R6RSも考慮して)大きな仕様を乗せましょう、と。
前者がsmall languageで後者がlarge language。WG1とWG2がそれぞれ作ってる。

これ別にRnRS + SRFIと何も変わらなくね? と書いてて思った俺ミニマリスト。

>>734
ああ、興味なかったら長々と申し訳ない。
736SCHEME餃子 ◆8X2XSCHEME :2011/09/05(月) 20:47:43.39
>>734
だって俺、英語わからんし。
なんとか文章にしたことろで説得力のあるものになりそうもない。
737SCHEME餃子 ◆8X2XSCHEME :2011/09/05(月) 20:58:29.78
>>735
モジュールの枠組みは規格に入れなきゃならん最低限のとこじゃね?
そうなるとフェイズの話、マクロの話はくっついてくるし、個別に考えられるようなもんじゃないと思うんだよな。
Unicode 関係とかレコード関係とかは規格に入れずに済ませることもできたと思う。
大きな規格が望ましいと思ってるわけじゃないが、かと言って「最小限」のラインを小さく考えすぎだと思う。
738デフォルトの名無しさん:2011/09/05(月) 21:56:44.92
>>735
> R6RSは根本の意味論の部分からして操作的意味論になっちゃってるから、
> 削っていくのも難しいんだと思う。

なことはない。
739デフォルトの名無しさん:2011/09/06(火) 00:04:38.53
> >>734
> ああ、興味なかったら長々と申し訳ない。
基本、ここはスレ伸びないし、ネタになればなんでもありじゃない。

仕様が大きいと創始者がおれScheme言語つくるの大変だし、その言語の開発に関わりたい人もコミットしにくくそうだよね。
そもそもだけど、R5RSの問題点ってなんなの?
740デフォルトの名無しさん:2011/09/06(火) 04:47:31.09
「Guile-Schemeは最良の拡張言語だ」という主張
http://developers.slashdot.jp/story/11/09/05/0922202/

>Schemeベースのプログラム言語の1つに、「GNU Guile」がある。Guileはアプリケーションの機能を
>拡張するためのスクリプト言語として開発されたものの、利用しているソフトウェアは少なく、
>現在ではPythonやJavaScriptなどが多く使われる状況だ。しかし、本家/.で「Guileは、
>ユーザーが少ないものの、GNUに最も適した拡張言語である」と主張する記事が話題となっている(本家/.記事)。
741デフォルトの名無しさん:2011/09/06(火) 06:07:23.03
末尾再帰の最適化もできないくせによー言うわ
742デフォルトの名無しさん:2011/09/06(火) 06:09:44.59
つかS式と基本5関数さえあれば何でもできるのに何でlispってアホみたいに方言多いの?
743デフォルトの名無しさん:2011/09/06(火) 06:19:13.95
>>739
モジュール機能が欠けていたり、移植性に致命的な問題があった。
R6RSの大きな目標のひとつは移植性。で、実際に改善はされた。

ttp://practical-scheme.net/wiliki/wiliki.cgi?R6RS%3aFAQ

ただ、十分なコンセンサスが得られる前に規格が成立してしまったので、
各所に未解決の争点が残ってしまい、色々揉めたのはご存知の通り。
744デフォルトの名無しさん:2011/09/06(火) 09:05:25.81
>>742 マルチレスするなゴミクズ
しかも嘘を。
745SCHEME餃子 ◆8X2XSCHEME :2011/09/06(火) 12:45:35.30
>>737
Unicode は別枠でいいかと思ったけど、ポートとか文字列とかのデザインにもかかわってくるな。

関数 (とかマクロ) を増やせばいいだけのものなら SRFI でって言えると思うけど、
実際にはコアの上に積み重ねるような単純な構成は無理だよ。 各機能は相互にかかるんだから。
746デフォルトの名無しさん:2011/09/06(火) 17:17:02.87
SRFI読んだことあるの?
747SCHEME餃子 ◆8X2XSCHEME :2011/09/06(火) 17:47:22.51
日本語訳されたものはそれなりに読んでるね。
leque さんがたくさん訳してるから助かる。
748SCHEME餃子 ◆8X2XSCHEME :2011/09/06(火) 18:12:53.07
RnRS で決めちゃったことは SRFI で無効にするってわけにもいかんのだから
(それともそういうのもアリなの? 拡張するならともかく、置換えちゃうのはマズいでしょう。)
「細かいことは SRFI で議論しろ」って言うなら RnRS ではなるべく未定義な部分を残すしかなくなる。
でも、それじゃ移植性が問題ってことで R5RS の問題が解決されない。

だいたい機能が本質的かどうかなんて相対的なものだろ。
全体が確定してないのに、どれが本質かなんて最初からわかるわけがない。
強いてやるのであれば large language を決めてから本質・非本質の区分けをすべきじゃないか?
749デフォルトの名無しさん:2011/09/06(火) 18:16:43.71
言ってることがMSIの黒田さんそっくりなのが面白いな。
Common Lispならまさに相性ばっちりだと思うんだけど。
何でそんなにSchemeにこだわるの?
750デフォルトの名無しさん:2011/09/06(火) 18:19:25.79
あと、その本質的な機能を求めて最小を作るのが誕生以来のSchemeの理念なんだから、
それを否定しちゃうとSchemeの存在意義も否定される。
751デフォルトの名無しさん:2011/09/06(火) 18:27:15.48
R7RSでさえ人がいなくなったのに、いまさら大きな言語とか
752デフォルトの名無しさん:2011/09/06(火) 18:43:42.34
簡単に実装できる
Common Lisp
のサブセットがあればschemeなみに流行するんでないか
753デフォルトの名無しさん:2011/09/06(火) 19:15:42.14
>>748
うーん、minimal+SRFI派の発想はちょっと違うんだな。議論が出て決まらない
ような機能についてはRnRSでは曖昧(どちらもアリ)にしといて、その空間で
色々実験するためにSRFIを出す。重複するSRFIが出たり、互いに矛盾するものが
出るかもしれないけれど、最終的には一番良く実装され使われたものが残るだろう。
そうやって「実績を積んだ」SRFIを徐々にRnRSに取り込んでゆけばいい、って考え。

R6RSで反発があったのは、そうやってたくさんの処理系で何年も、時には10-20年かけて
確かめられてからRnRSに取り込むってフローではなく、R6RSで新規にデザインされた
ものが2-3の参照実装だけで取り込まれたこと。
754デフォルトの名無しさん:2011/09/06(火) 19:17:23.72
ここまでexplicit-renamingなし
755SCHEME餃子 ◆8X2XSCHEME :2011/09/06(火) 20:24:29.75
>>749
愛ゆえに。

>>750 >>753
R6RS が急がれたのってなんで?
要するにもっと時間をかければよかったんだろ。

>>752
ISLISP がそれに近いと思う。
でも、流行しなかっただろ。
756デフォルトの名無しさん:2011/09/07(水) 01:44:36.62
結局規格よりも処理系の仕様が優先されるんだから
つまりおまえらがもっと処理系を作るべきだと思いましゅ
757デフォルトの名無しさん:2011/09/07(水) 01:45:26.53
ISLISP頑張って欲しいけど、四年くらい放置だよねー。
Common Lispもそろそろ改訂して欲しいけど、CLtL3とかフェードアウトしちゃったし。

アクティブに活動してるSchemeには頑張って欲しい。
758デフォルトの名無しさん:2011/09/07(水) 01:48:51.30
CLの処理系は割と頑張ってるよ。特に最近SBCLが熱い。
クラウドファンドでお金集めて、スレッドの実装を大幅に改善するために作業中。
759デフォルトの名無しさん:2011/09/07(水) 02:01:52.54
頑張って欲しい。頑張ってるよ。じゃねーだよ
そーじゃなくて、お前がやるんだよ
がんばれ東北、がんばれ日本じゃねーだろ
おまえがやるんだよ

おまえがやれやあああああああ
760デフォルトの名無しさん:2011/09/07(水) 02:04:58.30
市ねよ
761デフォルトの名無しさん:2011/09/07(水) 02:05:14.92
放射能で汚したなら
汚した奴が処理するのが当たり前だろ
そこは、がんばれ東北じゃねーだろ
東電さっさと掃除しろだろ
そもそも土地にがんばれつってどーすんだよ
気が狂ってるとしか言いようがないな
762デフォルトの名無しさん:2011/09/07(水) 02:07:20.10
復興も掃除した後だろ
掃除もせずに復興しろとか
無茶を言うなあああああああああああ
763デフォルトの名無しさん:2011/09/07(水) 02:10:43.25
結局規格よりも処理系の仕様が優先されるんだよ
処理系の最大公約数が規格になるべきなんだよ
CommonLispはそうして出来たんだよ
そこを間違えんなよ
764デフォルトの名無しさん:2011/09/07(水) 02:13:48.40
汚したら掃除屋さんが掃除するにきまってるだろ
お前は駅のトイレでおしっここぼしたら
トイレ掃除するのかよ
765デフォルトの名無しさん:2011/09/07(水) 02:24:07.86
なんで駅のトイレ?家のトイレでいいだろ
お前は駅のトイレで汚したまま立ち去つもりか?
766デフォルトの名無しさん:2011/09/07(水) 02:26:43.02
>>764
> お前は駅のトイレでおしっここぼしたら
> トイレ掃除するのかよ
掃除しろよ。次の奴が使えないじゃないか。
767デフォルトの名無しさん:2011/09/07(水) 02:29:27.07
いちいち掃除するより
死んで因果関係が認められた奴にだけ賠償したほうが
安上がりだわなw
768デフォルトの名無しさん:2011/09/07(水) 02:47:39.69
>>763
てーか、Gray streamsとかMetaobject Protocolとか、
もう機能的には割と一定のコンセンサスの取れてんのがあるんだよ。
スレッドのAPIとかもそうかもな。

で、そういう事実上デファクトになってて良く使われてんのに、
規格が改定されてねー状況があんの。そのせいでAPIがバラけてんだよ。
Lisp quote unquote読んでこい。

あとは*features*の中身とかも全然統一されてなくて戦国時代なんだよ。
こんなん優先されるべき仕様なんてねーから規格でさっさと決めろとか思うだろ。
trivial-featuresとかマジ無駄な労力だろ。
769デフォルトの名無しさん:2011/09/07(水) 03:04:18.99
処理系開発側は別に困らないんだがな
それを使う奴が考えて必要なら処理系作者様方に
お願い申し上げて対応して頂くのが筋だ
押し付けんなカスが
770デフォルトの名無しさん:2011/09/07(水) 03:06:55.84
処理系作者様方はな、
有用だと思えば勝手に入れるだけだ
キモイ規格なんかはガン無視なだけ
771デフォルトの名無しさん:2011/09/07(水) 06:55:02.25
>>770
なんだそのUnCommon Lispは
レアリティ高そうだな
772デフォルトの名無しさん:2011/09/07(水) 09:08:22.40
R7RSでも() => #tなの?
() => #fにしようって動きはないのか
773デフォルトの名無しさん:2011/09/07(水) 13:50:01.92
そんなキモい動作はイヤだな
774デフォルトの名無しさん:2011/09/07(水) 15:51:15.82
assqとかの見つからなければ#fを返す系はどうなの?
キモイよね
775デフォルトの名無しさん:2011/09/07(水) 23:10:13.16
ISLISPはなんだかつまらない。
仕様が。これならCommon Lispでいいかなと。
EuLispの方に頑張って欲しかった。
776デフォルトの名無しさん:2011/09/08(木) 12:19:34.14
777デフォルトの名無しさん:2011/09/08(木) 14:38:16.51
17年なんてあっという間さ
778デフォルトの名無しさん:2011/09/08(木) 14:56:27.95
ISLisp
windows版しかないのか

EuLispはyacc/lexぽいから簡単そうだな
779デフォルトの名無しさん:2011/09/08(木) 15:56:05.06
>>778
それはOKI ISLispの話じゃ?
http://www.islisp.org/jp/other-ISLisp-jp.html

EuLispの仕様は結構良かったのに全く流行らなかったな。
780デフォルトの名無しさん:2011/09/08(木) 17:14:43.86
ウォーキングしながらiphoneでSICP読みたいけど
微妙に画面におさまりきらない
あのhtmlが画面に合わせてリサイズされるといいのに
781デフォルトの名無しさん:2011/09/08(木) 19:09:15.97
くぱぁすればいいじゃない
782デフォルトの名無しさん:2011/09/08(木) 19:12:08.26
>>780
板違い
783デフォルトの名無しさん:2011/09/08(木) 19:46:16.93
>>780
iphoneの対応ファイルって知らないけど、変換すればいいだけの話じゃないの。
784デフォルトの名無しさん:2011/09/09(金) 09:11:12.53
ここにソースあるし、自分でEPUBに変換したら?
http://sicpebook.wordpress.com/
785デフォルトの名無しさん:2011/09/10(土) 11:46:38.44
gaucheの入力列ポートについての質問です

第14章 入出力 - karetta.jp
http://karetta.jp/book-node/programming-gauche/197706

文字列入力ポートを作成して
(define in (open-input-string "(1 2 3\n\"foo\""))
read手続きを呼び出すと
(read in)

*** READ-ERROR: Read error at "(input string port)":line 2: EOF inside a list (starting from line 1)
Stack Trace:

こう表示されてしまいます
(1 2 3)がかえってくるものだと思うのですが
どこか間違っているのでしょうか
786デフォルトの名無しさん:2011/09/10(土) 12:20:53.35
閉じかっこが足りない

つーかエラーメッセージくらい読め
787デフォルトの名無しさん:2011/09/10(土) 12:35:16.38
つーかS式書くときは補助機能のあるエディタ使えよ
EmacsだろうがNotePad++だろうが何でもいいから
788デフォルトの名無しさん:2011/09/10(土) 18:01:09.89
sbclって爆速だな。
cmuclって速いのかとずっと思っていたけど、clispよりは速いけど、sbclより10倍以上遅いのね。
>>785
カッコ支援エディタを使うか。
カッコの数を数えやすいように改行することだね。
789デフォルトの名無しさん:2011/09/10(土) 18:05:11.53
SBCLはCMUCL派生で、
全てネイティブにコンパイルして実行する流儀を採用。
CMUCLは保守されてるだけで、開発はされてない。
CMUCLの財産でSBCLは成り立ってる。
790デフォルトの名無しさん:2011/09/10(土) 18:16:05.19
>>789
> CMUCLは保守されてるだけで、開発はされてない。
> CMUCLの財産でSBCLは成り立ってる。
いや、そうだけど。
8年前ぐらいのブログで数日かかる計算研究ツールに使っているというのがあったから、
x86に関してはそれなりの速度が出ていたのかなと思って。
ただ研究ツールは過去の遺産でそれを使っていたのかな。
791デフォルトの名無しさん:2011/09/10(土) 19:47:26.80
>>786
ありがとうございます。その通りでした
すみません

>>787
emacsを使っていたのですが、(define in の部分でエラーが出なかったので、
(返り値がおかしくはなかったので)
見逃していました。
792デフォルトの名無しさん:2011/09/10(土) 19:50:54.75
>>790
どんなコード?

SBCLは処理系の中で一番積極的に最適化の改善してるイメージあるけど、
それでもCMUCLが10倍遅いってのは、なんか違和感がある。

ttp://www.cliki.net/Performance%20Benchmarks

CMUCLそれ自体も、かなり優秀なコンパイラ。
793デフォルトの名無しさん:2011/09/10(土) 20:16:15.90
>>789
> CMUCLは保守されてるだけで、開発はされてない。

開発されてるみたいよ。

ttp://lists.common-lisp.net/pipermail/cmucl-cvs/

悲しいくらいにRaymond Toyしかコミットしてないけど。
794デフォルトの名無しさん:2011/09/10(土) 21:34:04.09
>>792
ブログのネタにしようと思っていたのに。sbclは最新。cmuclも最新だと思う。
(declaim (optimize (debug 0) (speed 3) (space 0) (safety 0) (compilation-speed 0)))
(setf *random-state* (make-random-state t))
(defun make-data (size)
(let ((ary (make-array size)))
(loop for i from 0 below size do
(setf (svref ary i) (random 1.0)))
ary))
(defun bubble-sort (ary)
(loop for i from (length ary) above 1 do
(loop for j from 1 below i do
(if (> (svref ary (- j 1)) (svref ary j))
(let ((temp (svref ary (- j 1))))
(setf (svref ary (- j 1)) (svref ary j))
(setf (svref ary j) temp))))))
(let ((ary (make-data 10000)))
(time (bubble-sort ary)))
795デフォルトの名無しさん:2011/09/10(土) 21:36:00.55
>>790
8年前だとSBCLはforkしてまだ間がないから、
Linux x86に注力してたはず。
CMUCLは主戦場がSolaris/SPARCだったから、
その人はSPARC使ってたんじゃないのかね。
796デフォルトの名無しさん:2011/09/10(土) 21:36:31.84
あと環境はi815系のCeleron1GHzメモリ384MB OSはLinux
797デフォルトの名無しさん:2011/09/10(土) 22:11:22.48
さっき確認したら、
10,000個
sbcl 3.278 seconds of real time
cmucl 3.53 seconds of real time
clisp Real time: 42.40196 sec.
でした。

デマ情報を流した。さーせん。
ネイティブでベンチマークして、sbclだけコンパイルして、ベンチマークして、寝ちまったみたいだな。
798デフォルトの名無しさん:2011/09/10(土) 23:14:36.42
sbclはwindowsでまともに動くようになりましたか?
799デフォルトの名無しさん:2011/09/10(土) 23:37:25.14
>>798
現在進行形でAnton Kovalenkoがハイペースで改善中。
バイナリもあるから試してみれば? 俺も今試しに使ってるところ。

ttps://github.com/akovalenko/sbcl-win32-threads/wiki
800デフォルトの名無しさん:2011/09/11(日) 07:36:16.04
clozure cl の方が好きだなあ
sbclすぐにヒープ使い切ったとかいうエラー出るんだもん
801デフォルトの名無しさん:2011/09/11(日) 08:14:53.50
802デフォルトの名無しさん:2011/09/11(日) 08:33:11.73
>>800
単にヒープのサイズ制限の初期値が低いだけな気がする。32ビット?
起動時に--dynamic-space-sizeでヒープのサイズ指定するのは駄目かな?

ttp://www.sbcl.org/manual/Runtime-Options.html#Runtime-Options
ttp://coding.derkeiler.com/Archive/Lisp/comp.lang.lisp/2007-03/msg00292.html

Clozure CLは単にデフォルト値が512GBなだけっぽい。

ttp://ccl.clozure.com/ccl-documentation.html#Command-Line-Options
ttp://ccl.clozure.com/ccl-documentation.html#Heap-space-allocation
803デフォルトの名無しさん:2011/09/11(日) 08:43:54.10
自分の環境でも調べてみた。SBCL 1.0.51 on Solaris/x86-64。

> (- sb-vm:dynamic-space-end sb-vm:dynamic-space-start)
8589869056
> (float (/ 8589869056 1024 1024 1024))
7.999939

この環境でのSBCLのデフォルト値は8GB。
804デフォルトの名無しさん:2011/09/11(日) 09:11:22.64
512GBフルに使ってもスラッシング起こさないPCはいつ頃出ますか
805デフォルトの名無しさん:2011/09/11(日) 09:23:45.86
いくらするか知らんがこんなのあるらしいぞ
ttp://www.nabe-intl.co.jp/largemem/largememIII.html
806デフォルトの名無しさん:2011/09/11(日) 14:07:40.67
>>805
120万くらいなら個人で欲しいけど、そんなもんじゃ済まんのだろうなぁ
807デフォルトの名無しさん:2011/09/11(日) 15:48:49.95
関数(function)と手続き(procedure)はどう違うの?
808デフォルトの名無しさん:2011/09/11(日) 17:26:25.80
手続きは計算するけど関数は計算しない単なる対応関係
809デフォルトの名無しさん:2011/09/11(日) 18:26:35.67
手続きを数学のタームを使って抽象化したのが関数とか関係
810デフォルトの名無しさん:2011/09/11(日) 19:12:49.18
個々の実装や仕様において「function」とか「procedure」と呼んでるものは、
そう呼んでる個々のそれぞれのものであって、個々に違う。
(例えば「C言語の関数」とか)
811デフォルトの名無しさん:2011/09/11(日) 19:20:49.26
言語仕様内での定義としては確かに別だけど
計算機科学の視点で見れば通常はサブプログラム、サブルーチンといったものでひとくくりにする事は可能だよ
812デフォルトの名無しさん:2011/09/11(日) 19:24:52.70
計算機科学の視点で見れば副作用があるものに「関数」とか言語道断……とは流石に言わないか。
数学の視点ならあるかも。
813デフォルトの名無しさん:2011/09/11(日) 20:56:34.78
>>805
ttp://www-06.ibm.com/systems/jp/x/scalable/3690x5/index.shtml
ttp://www-06.ibm.com/systems/jp/x/scalable/3690x5/spec.shtml
これもめいっぱい増設すればいけるが、増設メモリがいくら位なのかわからん

814デフォルトの名無しさん:2011/09/12(月) 23:58:25.35
Cは関数を使うから関数型言語
815デフォルトの名無しさん:2011/09/13(火) 00:47:39.15
片腹痛い
816デフォルトの名無しさん:2011/09/13(火) 01:56:19.92
拾い食いはやめろといったろ
817デフォルトの名無しさん:2011/09/13(火) 02:42:44.50
臍が茶を沸かす
818デフォルトの名無しさん:2011/09/13(火) 03:46:26.63
腹膜炎だよ。
819デフォルトの名無しさん:2011/09/13(火) 06:23:21.63
Excelは関数ありきなので関数型言語
820誘導:2011/09/13(火) 07:08:35.11
覚えたて厨はこちらへどうぞ

関数型言語Part5
http://hibari.2ch.net/test/read.cgi/tech/1252470706/
821デフォルトの名無しさん:2011/09/13(火) 17:23:51.22
c++0x はlambdaもあるし関数型言語だ
822デフォルトの名無しさん:2011/09/13(火) 17:26:38.07
Schemeは関数もprocedureと呼ぶので手続き型言語
823デフォルトの名無しさん:2011/09/13(火) 17:49:28.18
twitterとかfacebookでやって思う存分戦ってくれ
824SCHEME餃子 ◆8X2XSCHEME :2011/09/13(火) 19:40:37.29
何ネタにマジレスってんの?
うまいこと返せよ。
825デフォルトの名無しさん:2011/09/13(火) 23:31:44.21
>>455
にマクロ展開の機能追加
826デフォルトの名無しさん:2011/09/15(木) 23:35:46.78
速度を気にしないなら
(define-macro delay
(lamda (expr) `(lambda () ,exp))))

でいいと思うんだけど
何か不都合起きる可能性あるのだろうか
827デフォルトの名無しさん:2011/09/16(金) 01:10:30.20
速さを気にしないならそうだ。
forceで何度でも評価されてしまうが
828SCHEME餃子 ◆8X2XSCHEME :2011/09/16(金) 01:19:46.44
副作用がある場合はマズいだろ。
規格では一回だけ評価するって明記してあるのでそれを期待したプログラミングをするかもしれない。
829デフォルトの名無しさん:2011/09/16(金) 01:44:26.63
一度しか使わないことが分かっているなら代用としてありなんじゃないかな
830デフォルトの名無しさん:2011/09/16(金) 01:54:54.85
だせえw
831デフォルトの名無しさん:2011/09/16(金) 03:28:27.20
わざわざそうする意味があるかどうかだな
832デフォルトの名無しさん:2011/09/16(金) 22:18:05.63
元々副作用を前提にした歪な機能だから消えたんだろ
833デフォルトの名無しさん:2011/09/17(土) 23:54:16.92
1変数しか返さない関数に拡張情報も返したい

Common Lispでは
値しか返さない関数を
多値を返すように1変更しても

返値を受け取る側が変更されてない(1値しか返ってこない)前提でも問題ない(2番目以降が無視される)

Schemeでは多値を返すように変更すると
受け取る側を全部変更しないといけない(少なくともRacketではエラーになる)

Common Lispみたいに受け取る側を変更しないで
多値を返すように変更する方法ないでしょうか
834デフォルトの名無しさん:2011/09/18(日) 00:23:44.87
>>833
よくよく考えると、common lispの仕様って複雑なことをやっているんだな
そういうものかと流していたけど、実装するとなるとどうやっているのか思いつかない
不思議だ
835デフォルトの名無しさん:2011/09/18(日) 00:58:53.16
スタックトップにある多値を、
同じ数の多値を使う文脈なら普通に、
少ない数の多値(単値)を使う文脈なら上の部分だけ使うだけ。
足りなければエラー等だわな。
836デフォルトの名無しさん:2011/09/18(日) 01:44:31.97
>>833
そういう仕様は r5rs にも r6rs にもないはず。

call-with-values 的なものを実装することもできない。
手続きの arity を取得する方法が無いから、正しく apply する方法がない。

receive 的なものは一応実装可能。
トップレベル変数に値を保存しておけばいい。
837デフォルトの名無しさん:2011/09/18(日) 09:04:11.77
>>833
使い勝手を考えればCommon Lispの仕様の方が便利なのは確かなんだが、
Schemeの多値の論拠ってのは関数呼び出しとリターンの対称性なんで、
返される余分な多値が無視できるなら、関数に余分な引数を渡した時も
無視されるようになってないと整合性がとれない。
838デフォルトの名無しさん:2011/09/18(日) 09:11:38.88
整合性ときたか
839SCHEME餃子 ◆8X2XSCHEME :2011/09/18(日) 09:14:01.73
receive 的なものっていうとこんな感じかな。
余った分は捨てて、足りなければ補う。

(define-syntax receive*
(syntax-rules ()
((_ (var ...) expression body ...)
(call-with-values (lambda() expression)
(lambda x (let-optionals* x ((var #f) ... . rest) body ...))))))

let-optionals* は RnRS には無いけど定義は省略。 RnRS の範囲内で実装可能なのでググれ。
↓こんな感じで使う。

(receive* (x y z) (values 1 2 3 4 5) (list x y z)) => (1 2 3)
(receive* (x y z) (values 1 2 ) (list x y z)) => (1 2 #f)

受け側を何も弄らずにというのは無理だけど、このマクロで覆っている箇所でなら受け取る値の数が増減しても吸収できる。
Scheme として可能な対処はこれが限界じゃないかなぁ。
840SCHEME餃子 ◆8X2XSCHEME :2011/09/18(日) 09:16:20.80
「RnRS の範囲内」を「R5RS や R6RS の範囲内」に訂正。
841デフォルトの名無しさん:2011/09/18(日) 09:51:46.20
gaucheはreceiveとか使わないと最初の値だけ返してくれるけど、これ使ったらヤバイの?
842SCHEME餃子 ◆8X2XSCHEME :2011/09/18(日) 10:34:20.35
>>841
規格では、継続が期待しているのと違う数の値を渡した場合は未定義のはずだよ。
Gauche に限って言えばイマサラ挙動が覆されることは無いと思うけど、
Gauche のドキュメント中でも明記はされてないみたいなんだよな。

ざっと見た感じ、関連する記述は↓くらいだった。

> http://practical-scheme.net/gauche/man/?l=jp&p=values
> 呼び出し側は、組み込み構文の receive (変数束縛参照)か、
> 下に説明するR5RSの手続きcall-with-valuesを使って多値を受け取ることができます。

つまりは多値を receive とか使わずに受けた場合は Gauche でも未定義って解釈になると思う。
843デフォルトの名無しさん:2011/09/24(土) 18:42:41.81
(define (add3 a b c) (+ a b c))
という関数を作ったとき、
(add3 1 2)
はエラーではなく、
(lambda (c) (+ 1 2 c))
を返すとかって便利だと思う?

おれは余計なお世話だと思う。
844デフォルトの名無しさん:2011/09/24(土) 18:48:50.77
そんな処理系有るのか?
845デフォルトの名無しさん:2011/09/24(土) 18:59:40.70
つまり可変長の多値インターフェースなんか必要ない。
受け側で数が合わなければ未定義ではなく、エラーにすべきだろう。
実装するなら多値の数は固定にすべきだ。
数学的根拠もない、対象性もない、便利でもない、意味がない。
846デフォルトの名無しさん:2011/09/24(土) 19:48:47.28
((values 1 2 3) a b c (+ a b c))
=> 6
って感じに使えたら素敵じゃね?
847SCHEME餃子 ◆8X2XSCHEME :2011/09/24(土) 20:02:43.94
>>844
いわゆるカリー化ってやつだろ。 Haskell なんかではそうなってるよ。

例えば↓こう書いたら3引数のように見える。
hoge x y z = x + y + z
でも、これは構文糖に過ぎなくて、↓のように書くのと同じと解釈される。
hoge = (\x -> (\y -> (\z -> (x + y + z))))
この場合は演算子の優先順位的に括弧を省略できるので
hoge = \x -> \y -> \z -> x + y + z
とも書ける。

つまり、 Haskell に於いては全ての関数はたかだかひとつの引数しかとらない。
Haskell のこの方式はそれなりに使い勝手がいい面もあるんだけど、
あくまでも全体がそれで統一されてるから出来ることなんで、 Scheme でうまく整合性はとれんと思う。
定義のときに明示する形であれば出来るけど、便利という気はしないなぁ。
http://practical-scheme.net/wiliki/wiliki.cgi?Scheme%3a%E6%89%8B%E7%B6%9A%E3%81%8D%E3%81%AEcurry%E5%8C%96
848デフォルトの名無しさん:2011/09/24(土) 20:03:32.23
+ とかどうすんのさ、と
849デフォルトの名無しさん:2011/09/24(土) 20:41:06.28
Haskellの自動カリー化は、純粋関数型言語だからこそ、というところがあると思う。
MLは副作用あるくせに自動カリー化らしいけど、納得いかない。
850デフォルトの名無しさん:2011/09/24(土) 21:57:54.61
自動カリー化、とか考えるからおかしくなる

引数をひとつしか取らないだけだ
851デフォルトの名無しさん:2011/09/24(土) 21:59:49.67
とゆーかふと思ったが、部分適用のことを「カリー化」って言ってないか?
852デフォルトの名無しさん:2011/09/24(土) 22:25:59.35
Lispで部分適用する関数をcurryとか最初に命名しちゃった人は罪深いな。
853デフォルトの名無しさん:2011/09/24(土) 23:50:03.09
>>845
> つまり

飛躍しすぎw
854デフォルトの名無しさん:2011/09/25(日) 00:43:13.47
r6rs や r5rs の Lexical syntax, BNF を読むと、手続き + の文字が字句解析されないように見えるのだが、
どういうこと?
855デフォルトの名無しさん:2011/09/25(日) 01:03:37.62
っ<peculiar identifier>
856デフォルトの名無しさん:2011/09/25(日) 01:17:38.70
>>855
<peculiar identifier> はケツに付くだけで、<identifier> になるには頭に <initial> が必要。
857デフォルトの名無しさん:2011/09/25(日) 01:25:10.82
>>856
<special subsequent>と勘違いしてる?
<peculiar identifier>は単独で<identifier>だよ
858デフォルトの名無しさん:2011/09/25(日) 01:26:53.69
>>857
うわー、普通に | をスルーしてた。サンクス

目が曇ってた
859デフォルトの名無しさん:2011/09/25(日) 06:10:15.99
可変引数といえば
(define (add3 a b . c) (+ a b . c))
という関数がエラーなのはおかしい。
仕様に則れば、
(define (add3 a b . c) (apply + `(,a ,b ,@c)))
とでも書き直されるケースだが、そもそも有限の引数を、
わざわざ効率が悪いと判りきっているリストで処理したいなんて
一体誰が思うのだろうか?
いまだにこのような思考停止を何の疑問にも思わず、
伝統として受け継いでいる事自体が、
LISP全体の進歩の妨げになっているのではないか。
860デフォルトの名無しさん:2011/09/25(日) 06:36:54.90
そもそもapplyは気持ち悪い。
誰もが避けて通りたい機能の筆頭に挙げるはずだ。
リストへの変換を強制され、マクロや構文は受け付けない。
こんな気味の悪い遺物を使い続けるのはまさに愚行に見える。
その上で多値を可変で扱いましょうだなんて戯言にしか聞こえない。
861デフォルトの名無しさん:2011/09/25(日) 06:45:07.23
apply消せたら国民栄誉賞あげるよ
Bad Apply!!
862デフォルトの名無しさん:2011/09/25(日) 08:32:02.57
SICPの表紙にさえ使われてるのに? >> apply
863デフォルトの名無しさん:2011/09/25(日) 08:35:13.63
ISLISPでもevalは消えたけどapplyは残ってたっけ?
864デフォルトの名無しさん:2011/09/25(日) 08:41:21.68
つかなんで
(apply + a b c)
と書いちゃいけないのさ
865デフォルトの名無しさん:2011/09/25(日) 09:26:11.08 BE:1213375436-2BP(0)
>>847
なるほど。
じゃあ、 Haskell では可変長引数はどう解決すんの?
866デフォルトの名無しさん:2011/09/25(日) 09:29:50.00
15年前からかんかんがくがくやってる
Haskell printfでぐぐれ
867SCHEME餃子 ◆8X2XSCHEME :2011/09/25(日) 09:31:45.50
>>865
だから全ての関数は一引数なんだって。
型の付け方を工夫して可変長引数みたいに見せる方法はあるけど、それは Scheme では真似できない。
868デフォルトの名無しさん:2011/09/25(日) 17:53:05.21
(+ 0 1 . (2))を扱って欲しい? Common Lispが良いんですね。分かります。

>>864
単に仕様を知らなかったんじゃないかな。(apply + `(,a ,b ,@c))なんて書き方、
無駄にコンシングが入るから、普通しないし。

「Lispを知らない人に限って」理論は今日も絶好調。
869デフォルトの名無しさん:2011/09/26(月) 01:37:13.85 BE:404458632-2BP(0)
ところで、 SICP もそうだけど、手習いとかでもマクロについては取り上げてないよね。
マクロの凝った使い方を学ぶ良いテキストってどんなのがあるかな? 一応日本語限定縛り付きで。
とりあえず R5RS の範囲内だけでもいいけど、 R6RS とか、規格に採用されなかったシステムとかも興味有る。
870デフォルトの名無しさん:2011/09/26(月) 02:34:15.14
>>869
伝統的なマクロの話で良いなら、Common Lispの本が参考になるよ。
On LispとかLet Over Lambdaとか。

健全なマクロについての良い本とかは、自分は聞いたことない。
ただ、SRFIのリファレンス実装とか濃いのはたくさんあるから、
そういう意味では教科書には困らないんじゃないかとも思う。
871デフォルトの名無しさん:2011/09/26(月) 02:41:46.20
でも英語なんでしょう?
872デフォルトの名無しさん:2011/09/26(月) 02:48:57.88
On LispとかLOLとかの話なら邦訳あるよ。

SRFIとかの話なら、手本のコードだけなら腐るほどあるって意味だから、
英語でも日本語でも読み解く難易度に違いはないよ。
873デフォルトの名無しさん:2011/09/26(月) 04:15:35.22
s式限定のphaseなら
パターンマッチのマクロあれば
yacyいらないなあ
874デフォルトの名無しさん:2011/09/26(月) 10:57:20.78
>>860
applyはevalの関数適用担当の下請け関数なので。

> リストへの変換を強制され

もともとリストになっている時(関数適用のcdr部)に使うものですし。
875869:2011/09/26(月) 16:39:25.92
>>870-872
On Lisp を一回は読みました。

マクロシステムを実装したいわけではないので、
各システムのパラダイムを理解する助けになるような小ネタ集みたいなのが読みたかったんです。
各パラダイムの中で限界に挑むようなパズル的な面白さがあるものがいいですね。
手習いのマクロ版みたいなのをイメージしてました。

コードを見れば英語でも日本語でも関係ないという主張は理解できるのですが、
英語だとそもそも見つけるのが難しいので、心当たりがあれば紹介してもらえらば助かります。
876デフォルトの名無しさん:2011/09/26(月) 16:57:16.26
877デフォルトの名無しさん:2011/09/26(月) 16:58:14.27
基本的なものだから既に読んでいると思うが、
http://community.schemewiki.org/?scheme-faq-macros
878SCHEME餃子 ◆8X2XSCHEME :2011/09/26(月) 18:07:55.45
>>875
俺が凄いと思ったネタはこれだな。
syntax-rules で anaphoric if
http://d.hatena.ne.jp/leque/20100826/p1

(aif (assoc foo alis) (cdr it) #f)
とした場合に assoc の結果が it に代入されてて欲しいわけだけど、
マクロに it という識別子が入力されてないと it に代入することは出来ない。
いやいや、 it は与えられてるじゃん、
(aif (assoc foo alis) (cdr it ←ここに ) #f)
という目からウロコな話。

言われて見ればそりゃそうだって感じだけど、
syntax-rules に慣れてると逆に思い付かないんだよな。
879デフォルトの名無しさん:2011/09/26(月) 18:55:10.90
Lisp勉強したい→とりあえずScheme→入門書読み終えてある程度動かせるようになった
→マクロの勉強したい→on Lisp→これCommon Lisp本だウボァー
880デフォルトの名無しさん:2011/09/26(月) 20:06:37.45
>>879
それなんて俺
881デフォルトの名無しさん:2011/09/26(月) 20:08:39.67
syntax-caseとかexplicit renamingみたいな低レベルマクロって、
名前の衝突を回避するアプローチがdefine-macroと違うだけで、
本質的には同じものだから(だよね?)、別に無駄にはならんと思うけど。

それに、define-macro自体に対応してる処理系も多いんじゃなかったっけ?
882デフォルトの名無しさん:2011/09/26(月) 21:41:05.75
>>878
何がすごいんだか判らない・・
883デフォルトの名無しさん:2011/09/26(月) 22:00:20.56
>>882
hygienicマクロで無理矢理変数を捕獲してるのが凄い。
884デフォルトの名無しさん:2011/09/26(月) 22:13:24.71
初歩的すぎる質問で恥ずかしいんですが、R5RSやR6RSのSchemeって
スコープの外側の変数に対して破壊的操作はできない……ですよね?
処理系依存なのか、規格にあるのか気になって

(define x #t)
((lambda () (set! x #f))) => xを操作できない?
885デフォルトの名無しさん:2011/09/26(月) 22:18:57.62
できる。というか、できないと割とみんな困ると思う。
逆に、なんでできないと思ったの?
886デフォルトの名無しさん:2011/09/26(月) 22:27:30.24
>>885
すみません、できるんですね。
なんか自前の脳がよくわかんなくなっててうまく説明しにくいです
ほかの言語でもスコープの内側からの操作は普通にできるのに、なんで疑問に思ったのか……
内側のスコープで変数が操作できることを確認して、なぜか驚いて
なぜか『別のスコープ操作できちゃだめなんじゃない?』と思い込んでしまって
内側なんだから別のスコープではないですよね
変なこと質問しちゃってすみません
887デフォルトの名無しさん:2011/09/26(月) 22:34:51.78
割とそういうのは誰でもあると思うから、気にしないで良いと思う。
上のは別に責めたりしてるわけじゃなくて、どこで勘違いしたのか知りたかっただけ。
その過程で>>886みたいに自分で勘違いに気付けることも多いし。
888デフォルトの名無しさん:2011/09/26(月) 22:39:33.91
フォローありがとうございます。
お礼書き忘れてましたが、>>885の回答も、ありがとうございました。助かりました。
889デフォルトの名無しさん:2011/09/26(月) 23:50:58.05
>>884
インタプリタですぐに試せよ。
890デフォルトの名無しさん:2011/09/27(火) 00:27:40.44
>>889
的外れな批判する前にちゃんと読めよ。

試したらできたけど、勘違いしてたから妥当な動作に思えなくて、
規格で決められた動作なのか質問したんだろ?
891デフォルトの名無しさん:2011/09/27(火) 07:54:45.58
ナウシカscheme?
って何する奴なの?
892デフォルトの名無しさん:2011/09/27(火) 08:01:06.84
様々な出来事を通して人類と自然の関係を知るんじゃないか?
893デフォルトの名無しさん:2011/09/27(火) 08:09:38.08
>>890
答をもらったらグダグダの日本語で弁解してないで失せろ

自前の脳に雑音大杉なのは割と誰でもあることだが
そのまま書いちゃう癖は改めた方がいいぞ
894デフォルトの名無しさん:2011/09/27(火) 08:27:07.83
>逆に、なんでできないと思ったの?
ってあるから>>886はその説明でしょ。

つか、なんで>>890に難癖つけてるのか分からん。誰にでも偉そうにしたいお年頃の子?
895デフォルトの名無しさん:2011/09/27(火) 08:33:05.27
自前の脳っていうのは流行りなのか
896デフォルトの名無しさん:2011/09/27(火) 12:02:43.47
自分がlispで出来てるとかいう人いなかった
On Lispの作者だっけ?
897デフォルトの名無しさん:2011/09/27(火) 12:21:08.96
「Paul Graham自身すべてLispで書かれている。
 書いたのは以前のバージョンの彼であり、その彼もまた、さらに前の彼によってLispで書かれていた。」

http://www.aoky.net/articles/leon_bambrick/lisp_truth.htm
これとは違う?
898SCHEME餃子 ◆8X2XSCHEME :2011/09/27(火) 13:01:31.34
>>881
CL と Scheme で単に書き方が違うだけと言えばそうなんだけど、
その書き方の違いが全体の構成の仕方に影響している部分もあると思う。

例えて言うなら、文章の構成の仕方って起承転結が基本だけど、
日本語以外では必ずしもそれが普通ってわけではない。
英語に翻訳するときには単に英語にしたらやっぱり不自然さが残っちゃうよね。

念のため言っておくけど、
これは Scheme 使いに On Lisp が役に立たないと言いたいわけじゃないよ。
本質的でない違いが重要じゃないかというとそんなこともないんじゃないかなぁという感想。
違いを意識してよむと良い知見が得られるんじゃないかと思う。

あと、マクロのシステムごとの能力の差もちょっとはある。
CL風のマクロの限界についての記述は↓が参考になる。
http://blog.practical-scheme.net/shiro/20100425-scheme-macro
899デフォルトの名無しさん:2011/09/27(火) 13:07:09.95
>>896
さすがに自分で言ったりはしないだろ……
900デフォルトの名無しさん:2011/09/27(火) 13:08:02.29
自己言及のパラドクス
901デフォルトの名無しさん:2011/09/27(火) 14:49:07.39
racketのlibraryがいろいろgaucheに移植されてるけど
時々挙動が違うんだよなあ
902デフォルトの名無しさん:2011/09/27(火) 16:25:19.47
>>901
え、どこにあるの? 使ってみたい。
903デフォルトの名無しさん:2011/09/28(水) 00:09:10.43
>>893
>>884の名誉のために言っとくけど、>>890>>885>>887書いた俺な。
904デフォルトの名無しさん:2011/09/28(水) 00:55:22.14
>>898
その内容だと>>881と何も食い違わないんだが、何故俺に言う。
あと、できればもっと具体的に頼む。流石に抽象的過ぎて反応できない。

ちなみに、リンク先のは、名前衝突がCLで完全に回避できないって話だから、
マクロの限界って表現には違和感があるな。Shiroさんも何度か言ってるけど、
CLではclパッケージのシンボルを普通束縛しないし、主要処理系では警告される。
実際には問題にならないことを限界って言うのは違和感があるよ。
905SCHEME餃子 ◆8X2XSCHEME :2011/09/28(水) 07:37:51.91
>>904
> その内容だと>>881と何も食い違わないんだが、何故俺に言う。

私が書いているのは「本質的に同じだから無駄にならない」じゃなくて、「本質的じゃない部分の違いも面白い」って話。
特に反論のつもりではないよ。 >>881 を発展させる形で書いたつもりだからアンカーつけたってだけ。

> 実際には問題にならないことを限界って言うのは違和感があるよ。

「本質的には同じ」ということだったので 「(処理系レベルの裁量ではない) 理屈の上での差はある」 ということを示したんだけど…。
906デフォルトの名無しさん:2011/09/28(水) 09:53:33.31
>>905
伝統的なマクロも、衛生的な低レベルマクロも、式をリストとして組み立てて、
という本質的な流れが同じじゃないの、というのが>>881の要旨なので、
別に機能的に同等だという主張じゃないよ。曖昧な表現だったなら悪かった。
リスト作ってそれを返すだけのお仕事に、そう違いはあるめえよ、という話。

その上で、そっちの本質的ってのはどういう意味で言ってるのか知りたい。
マクロのレイヤで不自然さとか知見とか言われても、正直ピンと来ない。
単に、SchemeとCLの構成要素からくるスタイルの違いじゃなくて?
その辺が一番面白い所だと思うから、できれば具体的に教えて欲しい。
907デフォルトの名無しさん:2011/09/28(水) 10:41:53.86
中村正三郎氏が黒田さんの言をひいてなんやかや言ってるのが3年前くらいにあるけど
それのような話か?
908デフォルトの名無しさん:2011/09/28(水) 10:58:12.72
黒田さんより小黒さんの方が好きです
プレゼンが面白いという意味で
909デフォルトの名無しさん:2011/09/28(水) 11:45:13.98
>>902
xmlのフェーズするのとか移植されてるじゃない
910デフォルトの名無しさん:2011/09/28(水) 12:00:44.97
deliciousに保存してたlisp関係のブックマークがほとんど読めなくなった
何これ
911デフォルトの名無しさん:2011/09/28(水) 13:52:10.66
>>909
ssaxとかsxpathのこと? あれはRacket発祥じゃなくて、もともとSchemeポータブル
な実装があったのを、Racket (PLT)とGaucheがそれぞれ別個に移植したもの。
Gaucheが取り込んだ後で本家がバージョン更新してるんで、違いはそのせいかもね。
912デフォルトの名無しさん:2011/09/28(水) 16:17:55.41
ところで
「Scheme」でググってるのに「スキーマ」までヒットするのは
小さな親切大きなお世話だと思うんだ
913SCHEME餃子 ◆8X2XSCHEME :2011/09/28(水) 16:50:33.46
>>906
> その上で、そっちの本質的ってのはどういう意味で言ってるのか知りたい。

運用や実装を除いた言語仕様として出来ること、くらいの意味かな。

> リスト作ってそれを返すだけのお仕事に、そう違いはあるめえよ、という話。

私もそう思ってる。 そこでは認識の差は無いと思う。
「本質的」というのを上のような解釈で考えていたので、
強いて厳密に言えば差があるというくらいの意味で shiro さんの記事を示した。

> 単に、SchemeとCLの構成要素からくるスタイルの違いじゃなくて?
> その辺が一番面白い所だと思うから、できれば具体的に教えて欲しい。

私は CL はあんまりしらないし、伝統的マクロってのをほとんど使ったこと無いんだわ。
具体的に想定してたものがあるわけじゃない。
でも、なんかさぁ、文化の違いみたいなのはあるでしょ?
むしろ私も知りたいから話を振った感じ。 なんか無い?
914デフォルトの名無しさん:2011/09/28(水) 16:59:15.90
>>911
最近のGoogle先生はちょっとお節介すぎる気がするな。

単語の前に+を付けるか、""でくくると同義語検索を抑制できる。
検索結果ページの下にある「ご意見をお寄せください」から
「これとこれを同義語にするのは好ましくない」とか理由つきで書いておくと
しばらくすると改善されることもある。
915デフォルトの名無しさん:2011/09/28(水) 20:22:41.07 BE:3303075877-2BP(0)
>>898
話が逸れるけど、syntax-case (と言うか R6RS のマクロ) と CL のマクロは
健全性を別にしたら基本的に出来ることは同じって思っていい?

CL では書けるけど R6RS では書けないとかその逆とかってある?
916デフォルトの名無しさん:2011/09/29(木) 01:00:46.36
>>914
そんな面倒なこといつもやってるの?
917デフォルトの名無しさん:2011/09/29(木) 11:41:39.08
>>915
細かいこと気にしなきゃほぼ同じ。

>>911
SGMLが操作言語としてSchemeを採用していたから、
その流れでXML系のライブラリはポータブルなのを含めてたくさんあったね。
918デフォルトの名無しさん:2011/09/29(木) 15:06:55.51
DSSSL はいったいどこへ行ってしまったのか。
919デフォルトの名無しさん:2011/09/29(木) 15:46:45.41
James Clarkが死んだら一緒に墓に埋められるんじゃないか。
920SCHEME餃子 ◆8X2XSCHEME :2011/09/29(木) 18:05:35.90
>>918-919
一応は JIS 化されたんだから、業界ではそれなりの期待があったんだろうになぁ。
921SCHEME餃子 ◆8X2XSCHEME :2011/10/02(日) 10:14:55.79
datum->syntax でスコープをいじるのと同じことが CL で出来るかやってみようと思って、
CL は全然知らないけどググって情報を集めながら↓の移植を試みた。
http://d.hatena.ne.jp/SaitoAtsushi/20090812/1250080462

(defmacro let/scope (scope-name &body body &environment env)
`(macrolet ((,scope-name (&body body)
(macroexpand (cons 'progn body) ,env)))
,@body))

Clozure CL で試してるんだけど、期待通りに動作しないし、そもそも env に nil が入ってる。
environment の扱いがオカシイ?
nil じゃなかったとしても外部表現を持たないようなオブジェクトを unquote するのもマズイかな。
CL については初心者以前なのでかなり変なことやってるかもしれない。

どう書くべきなのか CLer に解説して欲しい。
そもそも CLer はこういう実用に無意味なものは書かないのかもしれないけど。

CL のマクロは explicit renaming に似てると言えば似てるかもと思ったけど、
識別子が情報を持ってるんじゃなくて展開器に情報を与えるってところで全然違うね。
922デフォルトの名無しさん:2011/10/03(月) 01:36:54.48
質問です。
(string-append 関数)で文字列を結合したいのですが、
関数の戻り値がlist e.g.'("suwa" "kero")なので拒絶されてしまいます。
listを展開させるために,@を使って
‘(string-append ,@(関数))
としましたが、今度はstring-appendが動きません。
都合良く展開させる方法はありませんか?
923922:2011/10/03(月) 01:53:15.16
自己解決しました。
(eval ‘(string-append ,@(関数)))
で無事動作しました。
失礼しました。
924デフォルトの名無しさん:2011/10/03(月) 02:44:36.55
(3年後ぐらいにのた打ち回ることになるんだろうなー)
925デフォルトの名無しさん:2011/10/03(月) 04:26:57.53
apply
926デフォルトの名無しさん:2011/10/03(月) 08:34:11.38
gaucheのmatchマクロをcommon lispでも使いたいのですが
検索しても移植したものがみつかりません
on lisp のmatchは何か違うし
探し方がたりないのでしょうか
927デフォルトの名無しさん:2011/10/03(月) 11:26:49.36
CPS変換をかけたプログラムが遅くなるのは仕方ないことなのでしょうか
deley->lazy みたいな入れ替えで速くする方法ないのでしょうか
928デフォルトの名無しさん:2011/10/03(月) 12:33:16.55
CPS変換したものを素直に実行しちゃうと、関数呼び出しのたびにクロージャが作られる
から遅くなるでしょう。
CPS変換はコンパイラの中間表現と考えて、最後には不要なクロージャを消去して命令列
として出力するのが良いんじゃないかと。
929デフォルトの名無しさん:2011/10/03(月) 15:43:45.20
SchemeでMySQLにアクセスする方法はありませんか?
930デフォルトの名無しさん:2011/10/03(月) 15:48:47.72
>>929
つかってるSchemeの実装名とMySQLあたりでググれば?
931デフォルトの名無しさん:2011/10/03(月) 16:04:23.03
>>930
ありがとうございました!
"Scheme MySQL"で検索していたので全くヒットせず困っていました。
実装名で検索するのは思い付きませんでした。
932デフォルトの名無しさん:2011/10/04(火) 10:07:18.80
GaucheでScheme系言語を学び始めたばかりなんですが‥‥
日付関係は (use srfi-19) ! ベクタライブラリなら (use srfi-43) !
素人目にはどうかしてる命名だと思うのですが、こんなの一々覚えるものなのでしょうか?
--------------
http://www.atmarkit.co.jp/fcoding/articles/gauche/02/gauche02d.html
Gaucheでプログラミング
まず、指定された日の曜日を求める関数を作りましょう。Gaucheユーザーリファレンスの「10.10 srfi-19 - 時間のデータ型と手続き」に日付を扱う関数があります。
gosh> (use srfi-19)
#<undef>
gosh> (current-date)
#<date 2008/12/07 19:20:39.922021000 (32400)>
gosh> (date-week-day (current-date))
0

SRFI(サーフィ)というのはScheme Requests for Implementationの略で、Schemeの実質的な標準ライブラリの仕様です。云々
http://practical-scheme.net/gauche/man/gauche-refj_105.html
--------------
933デフォルトの名無しさん:2011/10/04(火) 10:35:58.63
必要に応じてリストを照会すればいいだけじゃん
934デフォルトの名無しさん:2011/10/04(火) 10:40:53.12
RFCとかPEPとかと同じで番号で管理してるものだからしょうがない。

名前で管理してても「Nokogiri」とか、名前からじゃ何がなんだかわからん名前を付ける
奴がいたり、「cgi」という特等席の名前が基本設計が古すぎるライブラリに占有されたり、
どうかしてると言いたい事態はどっちにしろ起きるもんだ。
935デフォルトの名無しさん:2011/10/04(火) 10:48:36.11
>>932
全部覚えてる人はさすがにいないと思うが、ネットワーク関係プログラミング
してる人なら主要なRFCは番号で覚えちゃうくらい何度も参照するでしょ?
それと同じかな。
srfiはさらに、似た機能で別々の規格が出てくる可能性があるから (例えばsrfi-0
とsrfi-7)、安易に名前をつけられないんだよ。
936デフォルトの名無しさん:2011/10/04(火) 11:26:33.03
RFCも2616と3987と4287しかとっさに思い出せない
937デフォルトの名無しさん:2011/10/04(火) 11:35:13.91
.gauchercみたいなファイルに書いておいて、起動時に毎回読み込みってできなかったっけ。
Gaucheをほとんど使っていないからくわしくないけど。
938デフォルトの名無しさん:2011/10/04(火) 11:45:29.73
>>936
2549と4824ぐらいしか覚えてないや
939SCHEME餃子 ◆8X2XSCHEME :2011/10/04(火) 12:42:35.18
このスレはあんまり CLer はいないのかな。
それとも >>921 はあまりにアホすぎてスルーされたのだろうか。

>>932
覚えにくいという意見はもちろん今までに出てないわけではない。
srfi の各ライブラリに名前付けようぜーっていう話は srfi-97 にある。
http://srfi.schemers.org/srfi-97/srfi-97.html
Gauche は srfi-97 を採用してないけど。

私は覚えずに毎回ドキュメントを見てる。
940932:2011/10/04(火) 14:06:08.00
srfiについて回答していただいたみなさん、ありがとうございます。
941デフォルトの名無しさん:2011/10/04(火) 14:51:58.34
srfiってどうやってライブラリーを階層化してるの?(ネットワークライブラリーの中のhttpライブラリーの中のwgetライブラリー、とか)それとも階層なんてないの?
942デフォルトの名無しさん:2011/10/04(火) 20:09:48.99
>>921
schemeわかんないし、リンク先の文書もよくわかんないけど、2つ目の引用から
察するにanaphoricなマクロなんでは?
あってるなら、OnLispとLOLに詳しくかいてある
943942:2011/10/04(火) 20:20:58.40
見当違いなこと↑かいてごめんなさい。
私では力不足なので、他の方のレスを期待してください
944デフォルトの名無しさん:2011/10/04(火) 20:24:39.77
>>942
違う。anaphoricなマクロでも、(aif ... (aif ... it)) とネストすると内側の
itは内側のaifが束縛するものになるっしょ。外側のaifが束縛してるitを
内側から参照したかったらどうするの? みたいな話。aifに限った話でなく、
letによる明示的束縛でもいいんだけど。
俺はCLで実現するにはcode walker書いてローカル束縛をリネームするくらいしか思いつかん。
defmacro/macroexpandのenvはローカルなマクロ束縛(macrolet)を考慮するためのもんで、
レキシカルな束縛の情報は入ってないはず。(macroletした名前がさらにlabelsでシャドウされてたら
その情報は除かれるけど)
945デフォルトの名無しさん:2011/10/04(火) 20:34:35.90
fluid-let
とは違うの?
946デフォルトの名無しさん:2011/10/05(水) 01:41:50.93
>>934
なんだよNokogiri って!w って思ったら、実在するのか…('д';)
947デフォルトの名無しさん:2011/10/05(水) 02:17:43.56
あれはXMLのタグの開始記号が < なので
<
<
<
をノコギリの刃に見立ててnokogiriってつけられたんだよ

と妄想
948デフォルトの名無しさん:2011/10/05(水) 05:10:40.68
>>944 環境情報は処理系依存だし、リンク先の例だとコンパイラに伝えないと外側の
変数は最適化で消えてもいいだろう…明示的に束縛しない限り。で、どうせ明示するなら
必要なら↓みたいに変数名を明示して macro 内でlet 束縛しなおすなぁ。ポータブルだし。
(let ((x 1))
(let/scope (x) s1
(let ((x 2))
(let/scpde (x) s2
(let ((x 3))
(list (s1 x) (s2 x) x))))))
949デフォルトの名無しさん:2011/10/05(水) 05:36:29.17
>>948
それCLで出来る? 参照だけなら簡単だけど、ネタ元のSchemeマクロと同等にするなら
内側で (setq (s1 x) 3) とすると外側のxが変更されないとならないんじゃないかと。
もちろん、let/scopeがその内側にあるletなどを全部調べて重なる変数名を
リネームすればいいわけだが。もっと簡単な方法はあるかな。
950949:2011/10/05(水) 05:48:32.22
自己レスだが、setqじゃなくsetfにして、let/scopeでs1に対して
setfマクロを作っとけばできるような気がしてきた。
951デフォルトの名無しさん:2011/10/05(水) 06:01:04.24
>>926
おれも探したけど見つけられず、結局自分で書いた>match
でもバグだらけだw
952デフォルトの名無しさん:2011/10/05(水) 06:54:05.21
もともと更新は考えてなかったけど、Schemeと「同等」はムリだと思う。
Schemeは良く知らないが、変数のスコープを曲げてるんだろ?

結局、CLでは変数名はただの「名前」であって、lexical bindingと組み合わせて
変数が参照されるだけ。同名の名前がきたら、外側のはshadowされる。外側の変数をポータブルにズバリを示す方法はないと思う。

別にSchemeより低機能でもいい。俺はシンプルなCLが好み。
必要なら「スコープを曲げる」より外側のスコープの変数へのgetter/setterを定義しとくし。
953デフォルトの名無しさん:2011/10/05(水) 07:55:30.12
独自用語で一人納得
954デフォルトの名無しさん:2011/10/05(水) 19:05:21.77
推論規則の辺な記号の意味が知りたい
どこかにわかりやすい教科書ないの
955デフォルトの名無しさん:2011/10/05(水) 20:50:07.40
豆知識:
数理論理学の本は文系の棚においてある
956デフォルトの名無しさん:2011/10/05(水) 21:46:37.62
Schemeを学びたいとい思います。R7RSは長持ちしそうでしょうか?
957デフォルトの名無しさん:2011/10/05(水) 21:59:06.78
論理記号は知ってるけど

分数みたいな記号あるじゃないですか
 G |- a ↓b
------------
G|- ¥forall a

みたいなの。これの読み方がいまひとつ分からない
958デフォルトの名無しさん:2011/10/05(水) 22:31:13.02
俺は
G |- a ↓ b から G |- \forall a を導ける
と読んでいた。
959デフォルトの名無しさん:2011/10/06(木) 07:15:45.01
960デフォルトの名無しさん:2011/10/06(木) 10:48:46.59
961デフォルトの名無しさん:2011/10/06(木) 18:21:14.82
>>921
こう言う場合はコードウォークするだろうね
macroexpand-allを使って楽するとこんな感じ

#+sbcl
(use-package :sb-cltl2)
(defmacro let/scope (name &body body)
(let (gsym-sym-list)
(declare (special gsym-sym-list))
(let ((form (macroexpand-all
`(macrolet ((,name (sym)
(declare (special gsym-sym-list))
(let ((pair (list (gensym) sym)))
(push pair gsym-sym-list)
(car pair))))
,@body))))
(let ((bindings gsym-sym-list))
`(let ,bindings
#+sbcl
,@(cddr form)
#+ccl
,form
)))))
962デフォルトの名無しさん:2011/10/06(木) 19:55:56.75
更新したかったみたいよ。オイラの案も貼っておくか。
(defmacro capture ((&rest vars) env &body body)
(let (($bindings (mapcar (lambda (x) (cons x (gensym))) vars))
($var (gensym)))
`(flet ,(mapcar (lambda (x) (list (cdr x) () (car x))) $bindings)
(flet ,(mapcar (lambda (x) `((setf ,(cdr x)) (value) (setf ,(car x) value))) $bindings)
(macrolet ((,env (var)
(let ((binding (assoc var ',$bindings)))
(list (cdr binding)))))
,@body)))))

(let ((x 1)) (capture (x) s1 (let ((x 3)) (princ (list (s1 x) x)) (setf (s1 x) 10))) x)
=> (1 3) 10
963デフォルトの名無しさん:2011/10/06(木) 19:59:18.25
似せても結局Schemeとは違うんだよね 。マクロ周り違いが大きいよな。
964デフォルトの名無しさん:2011/10/07(金) 02:15:10.62
>>955
> 豆知識:
> 数理論理学の本は文系の棚においてある

哲学の論理学じゃなくてちゃんとした数理論理学の教科書ならば
少なくともマトモな大手書店ならば数学書の棚に並んでいる。
965デフォルトの名無しさん:2011/10/07(金) 04:05:15.34
>>964
何を持ってして「ちゃんとした数理論理学の教科書」と呼ぶのかはわからんけど
記号論理の基礎が書いてあるような本だったら、言語学関連の棚付近が一番多いよ
そこから一歩進んだ内容だと計算機科学の棚
数学関連の棚に並んでる本はかなり少ない
966デフォルトの名無しさん:2011/10/07(金) 05:07:43.43
> 記号論理の基礎が書いてあるような本だったら、言語学関連の棚付近が一番多いよ

嘘だろ
967デフォルトの名無しさん:2011/10/07(金) 07:31:05.52
そうか言語学か。
今は数学の棚がひどいことになってるのかな
968デフォルトの名無しさん:2011/10/07(金) 08:09:49.05
本屋の店員がまともなら、それらのどの分野でも、まともな本とダメな本はあるていど
分かれている。
969デフォルトの名無しさん:2011/10/07(金) 08:13:01.03
書店員の知識や棚にも依存する。
図書館も同様だろうけれど、日本十進分類法などで分類されている分、
図書館の棚のほうが議論しやすいか?
970デフォルトの名無しさん:2011/10/07(金) 08:30:37.59
人月の神話が神話・宗教の棚に置いてあるのを見たことがあるから
数学の本が別の所にあっても別に驚かない
971SCHEME餃子 ◆8X2XSCHEME :2011/10/07(金) 10:06:21.46
俺の母校の図書館では暗号系の本が言語関連に分類されてたわ。
司書を含む専門の図書館職員が何人もいたのに…。
972デフォルトの名無しさん:2011/10/07(金) 10:12:58.56
はじめてのC
973デフォルトの名無しさん:2011/10/07(金) 10:40:49.81
古典的な暗号学は計量言語学と縁があるけどな
974デフォルトの名無しさん:2011/10/07(金) 13:25:25.02
論理学の書籍として言語・哲学のあたりに置かれてるってだけだから、別に分類ミスってわけでもない
数理論理学の基礎を作った人らに関する書籍も、こっち方面に置かれてるわけだし
975デフォルトの名無しさん:2011/10/07(金) 20:09:42.64
数学には無知で、ウィトゲンシュタインとかかじってると、
素朴な論理学も言語学の一種でいいと思ってしまうかも。
976デフォルトの名無しさん:2011/10/07(金) 21:16:25.33
「素朴な」論理学が言語学じゃなかったらどこに分類してやればいいんだ?
977SCHEME餃子 ◆8X2XSCHEME :2011/10/07(金) 21:25:35.73
>>961
最適化まで含めたらだいたい近い結果になりそうだね。
でも、そういう操作って他のマクロとのコンボでわけわかんない事態になりそうでちょっと怖い。

ところで syntax-rules を CL で再現するパッケージ見付けた。
http://www.ccs.neu.edu/home/dorai/mbe/mbe-lsp.html
どの程度ハイジニックを実現できてるかイジめてみよっと。
978デフォルトの名無しさん:2011/10/08(土) 12:10:36.96
つーかそんな中途半端なことせずにschemeの皮をかぶればいいのに
979デフォルトの名無しさん:2011/10/08(土) 12:14:02.25
誰が皮被りだって?
980デフォルトの名無しさん:2011/10/09(日) 14:33:53.77
呼んでねえよ
981デフォルトの名無しさん:2011/10/09(日) 17:31:53.64
次スレたのむ
982デフォルトの名無しさん:2011/10/09(日) 17:59:05.01
983デフォルトの名無しさん:2011/10/09(日) 18:45:47.23
984デフォルトの名無しさん:2011/10/09(日) 23:08:46.48
>>982
乙です。
埋めつつ。
おれquicklispには非常に期待してるんだ。ネイティブコンパイラのある言語で、
ああいうライブラリ管理がある言語って、実は少ないんじゃないかしら。
SRFIにもquicklispみたいな仕組みあると良いよね。
985デフォルトの名無しさん