Lisp Scheme Part41 (809レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
193(1): 2020/04/29(水)09:21 ID:sxS/u8Yc(1/3) AAS
>>192
それは承知しているのです。
ここでは Racket のドキュメントをどう解釈すべきかというのが論点です。
>>191
> 最初の要素から最後の要素へと適用すると書いてある
順番に (in order) とは書いていません。
順序が意味を持つ箇所ではおおよそ order という語で強調しているのに
それがないここでも順番であることを確信してよいほどに
(英語のニュアンスとして) 自明でしょうか。
194(2): 2020/04/29(水)09:54 ID:sxS/u8Yc(2/3) AAS
>>191
> 長大なリストに対する並列処理を可能にするためだろう
手続きの引数の評価順序については未規定ではあるものの
"some sequential order of evaluation" という制約がついています。
外部リンク[html]:docs.racket-lang.org
ちょっとわかり難いんですが、これは「同時ではない (かのように動作する)」と解されるそうです。
たとえば
(list (begin (display 'a) (display 'b) 1)
(begin (display 'c) (display 'd) 2))
とあったときに表示は abcd か cdab のどちらかであり acbd だったり cabd だったりはしない
ということです。
map についてはこういう制約は書かれてはいないものの、
順序は規定しないという文言は「既定はしないけどなんらかの順序を想定する」
とも読めなくもないので並列化を許しているとは言い切れない気がします。
副作用がないときに限っては並列化しても仕様に反しないのは間違いないですけど、
その場合は順序に関して有るとも無いとも書く必要がないんですよね。
どうせ観測できないので。
196: 187 2020/04/29(水)13:42 ID:sxS/u8Yc(3/3) AAS
>>195
継続については「call/cc は副作用を生じる」というひとことで説明できます。
副作用とは何かというのは色々なモデル化のやり方があってはっきりしたひとつの定義を
定められないみたいなんですが、この説明が納得感があって参考になると思います。
外部リンク[cgi]:practical-scheme.net
副作用がないなら順序なんか考える必要はないんですよ。
どの順序で実行されようと並列であろうと (観測できる) 結果は同じなので順序を気にする意味がありません。
結果が同じにならない場合 (副作用がある場合) がどうあるべきか考えるから順序が効いてくるんです。
で、副作用がある手続きの中でも特に第一級継続は (観測できるだけでなく) 流れを変えることが出来るから
どれが妥当なのか結論が出ないなぁってことです。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.031s