Lisp Scheme Part41 (855レス)
Lisp Scheme Part41 http://mevius.5ch.net/test/read.cgi/tech/1531587928/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
177: デフォルトの名無しさん [] 2020/03/10(火) 18:23:23.35 ID:BcZoFSIR hy マクロの入力にpair入れたのに マクロ実行時にunquoteするとlistに化けるバグがある気がする http://mevius.5ch.net/test/read.cgi/tech/1531587928/177
178: デフォルトの名無しさん [sage] 2020/03/26(木) 18:40:18.93 ID:jDMenf5s 日本の理系人のLisp好きは異常 http://mevius.5ch.net/test/read.cgi/tech/1531587928/178
179: デフォルトの名無しさん [sage] 2020/03/26(木) 21:06:12.72 ID:x3TTE31H 土日はおとなしくLispでも http://mevius.5ch.net/test/read.cgi/tech/1531587928/179
180: デフォルトの名無しさん [sage] 2020/04/24(金) 18:37:15.78 ID:3QH+ANBn Clozure CL 1.12 がでてきた。 https://github.com/Clozure/ccl/releases/tag/v1.12 ぜんぜん 1.11 からバージョンあがらないから死んじゃったのかと思ったよ。 http://mevius.5ch.net/test/read.cgi/tech/1531587928/180
181: デフォルトの名無しさん [sage] 2020/04/24(金) 19:04:52.05 ID:aAxBS6wC 死んでるんじゃない 枯れてるんだ😡 http://mevius.5ch.net/test/read.cgi/tech/1531587928/181
182: 180 [sage] 2020/04/25(土) 00:16:26.67 ID:iXfl78KC >>181 ごめんなさい ECL(Embeddable Common-Lisp)もバージョンアップしてた。 16.1.3から20.4.24になってる。 まだトップページ更新がないけど……。 https://common-lisp.net/project/ecl/index.html 変更点は以下 https://gitlab.com/embeddable-common-lisp/ecl/-/blob/20.4.24/CHANGELOG http://mevius.5ch.net/test/read.cgi/tech/1531587928/182
183: デフォルトの名無しさん [sage] 2020/04/25(土) 01:57:04.26 ID:u9oymkho >>180 キタ━━━━(゚∀゚)━━━━!! http://mevius.5ch.net/test/read.cgi/tech/1531587928/183
184: デフォルトの名無しさん [sage] 2020/04/25(土) 07:07:50.62 ID:q++AEQsZ 小学校でlispを教えたらいいのに http://mevius.5ch.net/test/read.cgi/tech/1531587928/184
185: 182 [sage] 2020/04/25(土) 13:34:52.97 ID:tfHLOmTJ News が更新されたよ。 https://common-lisp.net/project/ecl/posts/ECL-20424-release.html http://mevius.5ch.net/test/read.cgi/tech/1531587928/185
186: _ [sage] 2020/04/28(火) 00:30:29.10 ID:moc7J10E SBCL 2.0.4 リリースされたよ。RISC-V プロセッサに対応したのが目玉みたいだよ。 http://www.sbcl.org/news.html#2.0.4 http://mevius.5ch.net/test/read.cgi/tech/1531587928/186
187: デフォルトの名無しさん [sage] 2020/04/28(火) 11:03:05.28 ID:jkGkDNpV Scheme の map 手続きについて、 手続きを適用する順序 (副作用が発生する順序) は仕様上は未規定ということになっています。 各処理系として保証するということは有りえるんですが、 Racket の場合は保証されていると読み取って良いでしょうか? https://docs.racket-lang.org/reference/pairs.html?q=map#%28def._%28%28lib._racket%2Fprivate%2Fmap..rkt%29._map%29%29 わざわざ "from the first elements to the last" という書き方をしているからには順
序を意図しているように 解釈するのが自然かとは思うんですが、単に範囲を言っていると解釈できなくもないので、 英語と Racket に明るい方がいればご教示賜りたいです。 http://mevius.5ch.net/test/read.cgi/tech/1531587928/187
188: _ [sage] 2020/04/28(火) 14:05:01.63 ID:moc7J10E >>187 racket使ってるわけでも英語ができるわけでもないけど。 最初から最後までって範囲の話してるんじゃなかろうか。 順序の保証があるなら IN ORDER とか付きそうな気がする。 http://mevius.5ch.net/test/read.cgi/tech/1531587928/188
189: デフォルトの名無しさん [sage] 2020/04/28(火) 14:43:15.44 ID:jkGkDNpV >>188 R5RS などでは手続きが各要素に適用される dynamic order は unspecified である というような表現になってるんですよ。 order という語が主語になってます。 https://docs.racket-lang.org/r5rs/r5rs-std/r5rs-Z-H-9.html?q=map#%25_idx_580 だからわざわざ変えた表現をするからには違うこと (順序が保証される) を言おうとしているんだろうと思いつつも、 明確に順序を強調してるわけでもないな……? というところで解釈に迷ってました。 私は R5RS (
など) と言い回しが違うという点に引きずられていましたが、 "from the first elements to the last" というフレーズ単体で見ると範囲のニュアンス で捉える方が自然ですかね。 私自身はいずれにしても map の副作用の順序に期待しないんですが、 しばらく前に Qiita に投稿されていた記事の中で map の順序が効いてくるコードがあったので、 これってありなんかなぁと思ったという経緯です。 http://mevius.5ch.net/test/read.cgi/tech/1531587928/189
190: デフォルトの名無しさん [sage] 2020/04/29(水) 01:16:58.58 ID:y02v3tEE >>187 保証とはどういうことを指しているのだろう 将来仕様を変更しないとは書いていないのは確かなようだ racketでは引数の評価もleft to rightとは書いてあった schemeでもfor-eachは先頭から順番に評価する 実際に評価順の違いが観察できるのはchezかな http://mevius.5ch.net/test/read.cgi/tech/1531587928/190
191: デフォルトの名無しさん [sage] 2020/04/29(水) 03:18:21.69 ID:ALOjMFFX >>189 > 私は R5RS (など) と言い回しが違うという点に引きずられていましたが、 > "from the first elements to the last" というフレーズ単体で見ると範囲のニュアンス > で捉える方が自然ですかね。 いや、違う。 R5RSとRacket Reference v7.6とでのmapが手続き(proc)を適用する要素の順番に関して言及しているのは 各々、以下の箇所だが、両者では明らかに全く異なる。 R5RS>The dynamic order in which proc is applied to the element
s of the lists is unspecified. Racket>Applies proc to the elements of the lsts from the first elements to the last. R5RSは>>187で君が述べていた通り、リストの要素への適用順序はunspecifiedだと明確に書いてある。 これに対してRacket v7.6ではprocをlstsの最初の要素から最後の要素へと適用すると書いてある、 つまりリストlstsの要素の並びの順番に手続きprocを適用して行くと明記している。 だからprocとして受け取った値を標準出力に書き出す手続きを渡せば、R5RSでは表示される要素の順番はどんな順序でも良いのに対して Rac
ket v7.6では元のリストlstの要素の並び順に必ず表示せねばならない。 これは私の想像だが、R5RSでmapが手続きを適用する要素の順番を規定しないと明記しているのは長大なリストに対する並列処理を可能にするためだろう。 逆に言えば手続きの適用順序を確実に把握したい場合にはmapでなくfor-eachを使えというのがR5RSを定めたチームの言語設計上の意図だろう。 >>190 > 保証とはどういうことを指しているのだろう その言語仕様書のそのバージョンに準拠していると宣言している言語処理系は、それを守らねばならない(守っていなければバ
グだ)という意味だよ。 だから今の例では、Racket Reference v7.6準拠と処理系が宣言したら、その処理系はmapで手続きを適用する要素の順番を必ずリストの並び順に する義務が生ずる(Racket v7.6の定める言語仕様=Racket v7.6ユーザとの約束の順守を保証せねばならない)、ということだ。 当然ながら、言語仕様書のバージョンが変われば約束(つまり言語仕様による規定の内容)も変更され得る。 http://mevius.5ch.net/test/read.cgi/tech/1531587928/191
192: デフォルトの名無しさん [sage] 2020/04/29(水) 06:44:54.55 ID:bLWOmnfL >>187 処理系によって(A B C)の評価順序が (1 2 3)だったり(3 1 2)だったり(3 2 1)だったりするから mapのようなリストで処理結果を返すような関数のクロージャ内では原則副作用は起こさないことが求められる for-eachみたいな初めから副作用を期待する関数はどう並べようが問題は起きない http://mevius.5ch.net/test/read.cgi/tech/1531587928/192
193: デフォルトの名無しさん [sage] 2020/04/29(水) 09:21:45.86 ID:sxS/u8Yc >>192 それは承知しているのです。 ここでは Racket のドキュメントをどう解釈すべきかというのが論点です。 >>191 > 最初の要素から最後の要素へと適用すると書いてある 順番に (in order) とは書いていません。 順序が意味を持つ箇所ではおおよそ order という語で強調しているのに それがないここでも順番であることを確信してよいほどに (英語のニュアンスとして) 自明でしょうか。 http://mevius.5ch.net/test/read.cgi/tech/1531587928/193
194: デフォルトの名無しさん [sage] 2020/04/29(水) 09:54:06.36 ID:sxS/u8Yc >>191 > 長大なリストに対する並列処理を可能にするためだろう 手続きの引数の評価順序については未規定ではあるものの "some sequential order of evaluation" という制約がついています。 https://docs.racket-lang.org/r5rs/r5rs-std/r5rs-Z-H-7.html#%_sec_4.1.3 ちょっとわかり難いんですが、これは「同時ではない (かのように動作する)」と解されるそうです。 たとえば (list (begin (display 'a) (display 'b) 1) (begin (display 'c) (di
splay 'd) 2)) とあったときに表示は abcd か cdab のどちらかであり acbd だったり cabd だったりはしない ということです。 map についてはこういう制約は書かれてはいないものの、 順序は規定しないという文言は「既定はしないけどなんらかの順序を想定する」 とも読めなくもないので並列化を許しているとは言い切れない気がします。 副作用がないときに限っては並列化しても仕様に反しないのは間違いないですけど、 その場合は順序に関して有るとも無いとも書く必要がないんですよね。 どうせ観測できないので。 http://mevius.5ch.net/test/r
ead.cgi/tech/1531587928/194
195: デフォルトの名無しさん [sage] 2020/04/29(水) 12:39:32.81 ID:qQMMu/UY >>194 mapについては、まえからか、うしろからか好きな方で実装すればいいよ、程度のはなしだとおもってた。 継続を突っ込むとどうとかいうのがあったとおもうけどだれか解説pls http://mevius.5ch.net/test/read.cgi/tech/1531587928/195
196: 187 [sage] 2020/04/29(水) 13:42:08.04 ID:sxS/u8Yc >>195 継続については「call/cc は副作用を生じる」というひとことで説明できます。 副作用とは何かというのは色々なモデル化のやり方があってはっきりしたひとつの定義を 定められないみたいなんですが、この説明が納得感があって参考になると思います。 https://practical-scheme.net/wiliki/wiliki.cgi?Scheme%3Acall%2Fcc%E3%81%A8%E5%89%AF%E4%BD%9C%E7%94%A8 副作用がないなら順序なんか考える必要はないんですよ。 どの順序で実行されようと並列であろうと (観測できる) 結果
は同じなので順序を気にする意味がありません。 結果が同じにならない場合 (副作用がある場合) がどうあるべきか考えるから順序が効いてくるんです。 で、副作用がある手続きの中でも特に第一級継続は (観測できるだけでなく) 流れを変えることが出来るから どれが妥当なのか結論が出ないなぁってことです。 http://mevius.5ch.net/test/read.cgi/tech/1531587928/196
197: デフォルトの名無しさん [sage] 2020/04/29(水) 14:57:29.24 ID:u7alO7eW グラフかくのってどうしたらいい?gnuplotの🎺使うの? gnuplot使ったことないけど難しいのか? http://mevius.5ch.net/test/read.cgi/tech/1531587928/197
198: デフォルトの名無しさん [sage] 2020/04/29(水) 18:27:14.43 ID:OS1rodDF やりたいことをやろうとすると難しい http://mevius.5ch.net/test/read.cgi/tech/1531587928/198
199: デフォルトの名無しさん [sage] 2020/04/29(水) 23:11:18.94 ID:ALOjMFFX >>193 "from the first elements to the last"は最初の要素から最後の要素へだから当然ながらin orderの意味を含む もしも、上の表現を使ってin orderを保証しないことを意図する言語仕様があったら、 その言語仕様を書いた人間が英語(というよりも人間の使う言葉)の常識を知らないと言うべきレベルの代物 procの適用にin orderを保証したくないのならば"from the first elements to the last"などではなく、例えば “(map) Applies proc
to every elements of the lsts exactly once”とでも書くべき というか、そもそもR5RSでのmapに関する表現をそのまま使えば良い >>194 なるほど、インターリーヴを起こしてはならない、ということですね 良い反例ですね、了解しました 確かにそれだと並列処理という話は排除されますね http://mevius.5ch.net/test/read.cgi/tech/1531587928/199
200: デフォルトの名無しさん [sage] 2020/04/30(木) 01:56:25.80 ID:qpY4nJGd 実用性皆無の話だなschemeらしいや racketとの比較ならr6だと思うのだが しかもr7でなくr5とな scheme間でさえ移植性は低いんだからどんな挙動でも良いんじゃねえか racketはまだ実装が複数存在するような状況ではないらしいが schemeとは文化が違うんで実用性に舵切った仕切りになりそうね http://mevius.5ch.net/test/read.cgi/tech/1531587928/200
201: デフォルトの名無しさん [sage] 2020/04/30(木) 02:18:30.11 ID:7t452aCV >>199 > "from the first elements to the last"は最初の要素から最後の要素へだから当然ながらin orderの意味を含む この説明は説明になってなかったですね ちゃんと書くと、前置詞fromとtoとを同時に使う場合、前者は動詞が表す行為の始点を、後者は終点を表す つまり > "from the first elements to the last" という表現は先頭の要素たちがprocをapplyするという行為は、その行為の始点が先頭要素で終点が末尾の要素となる経路から
成るということ そうであるので、途中の要素に関しては193が心配している通り順序通り(in order)とは確かに書いていないけれど、 少なくとも最初に適用されるのは先頭要素たちで最後に適用されるのは最終要素だということは上の引用した英語句から確かだということ applyを行う最初と最後はそれぞれ先頭と末尾でなければならないのに途中はランダムでも可というのは不自然すぎる (なぜ最初と最後だけは変更を許さず先頭と末尾に確定させるのか?、ランダムを許すならば最初・最後も含め全部がランダム可にするのが自然) ということだ もし最初お
よび最後だけはそれぞれ先頭および最後だけに限定し、それ以外の途中の順番だけは規定したくない、という極めて不自然な仕様にしたいならば 誤解させないように、「但し、最初・最後以外の途中の順番は自由で規定しない」という趣旨の語句を挟む必要がある http://mevius.5ch.net/test/read.cgi/tech/1531587928/201
202: _ [sage] 2020/05/03(日) 15:45:23.91 ID:XyvLD4Kl そうこうしているうち Racket 7.7 リリースされたよ。 https://blog.racket-lang.org/2020/05/racket-v7-7.html 個人的なトピックス ・イミュータブルで高速なハッシュテーブルHAMT(hash array mapped trie)がインプリされた。 ・コンパイラの最適化でコードサイズ20%減。 ・GC1,2割高速化。 ・ドキュメント改善。 http://mevius.5ch.net/test/read.cgi/tech/1531587928/202
203: デフォルトの名無しさん [sage] 2020/05/03(日) 18:58:12.70 ID:BS5ww13P 今の Racket は ChezScheme をバックエンドにしたやつと従来からのやつがどちらも配信されているけど、 これって将来的には一本化される予定ってあるのかな? http://mevius.5ch.net/test/read.cgi/tech/1531587928/203
204: デフォルトの名無しさん [] 2020/05/04(月) 08:02:38.27 ID:QFOyDpRt hy言語をwindows10で使いたい pip install hyは成功するが コマンドプロンプトでhyと入力してもhyが実行されない 変なパスの設定がいる? http://mevius.5ch.net/test/read.cgi/tech/1531587928/204
205: デフォルトの名無しさん [] 2020/05/04(月) 17:14:51.89 ID:WvOaLqMC >>204 管理者権限でインストールしたなら C:\Program Files\Python37\Scripts だけど、 ユーザ権限なら %LocalAppData%\Programs\Python の下のどこからしい。 http://mevius.5ch.net/test/read.cgi/tech/1531587928/205
206: デフォルトの名無しさん [sage] 2020/05/07(木) 13:26:34.69 ID:fANici3H >>202 キタ━━━━(゚∀゚)━━━━!! http://mevius.5ch.net/test/read.cgi/tech/1531587928/206
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 649 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.010s