Common Lisp、SchemeをはじめとするLisp族全般のスレです
■前スレ
Lisp Scheme Part40
http://mevius.5ch.net/test/read.cgi/tech/1426481152/
■テンプレ
ttp://wiki.fdiary.net/lisp/
■関連スレ
【Lisp】プログラミング言語 Clojure #4【JVM】 [無断転載禁止]©2ch.net
http://mevius.5ch.net/test/read.cgi/tech/1483498849/
【GNU】スクリプト言語 Guile【scheme】
http://mevius.5ch.net/test/read.cgi/tech/1239985829/
【入門】Common Lisp その11【質問よろず】
http://peace.2ch.net/test/read.cgi/tech/1411307361/
【Scheme】Schemeインタプリタ Mosh Part1【Lisp】
http://peace.2ch.net/test/read.cgi/tech/1272469779/
【魔法】リリカル☆Lisp【言語】
http://peace.2ch.net/test/read.cgi/tech/1183396621/
Lisp@UNIX版
http://mevius.5ch.net/test/read.cgi/unix/1019926525/
探検
Lisp Scheme Part41
2018/07/15(日) 02:05:28.62ID:oGr67yTf
127デフォルトの名無しさん
2019/11/09(土) 15:47:48.43ID:H0dhk6wi 闇の書を永久封印するために暗躍しているのかもしれん。
128デフォルトの名無しさん
2019/11/09(土) 18:42:51.61ID:PzSjhCYo テレビもねえ
130デフォルトの名無しさん
2019/11/10(日) 01:51:30.40ID:a/xfENId fooもねえ、barもねえ
hyperspecナニモノだ
hyperspecナニモノだ
131デフォルトの名無しさん
2019/11/10(日) 06:23:28.13ID:hnRZ9wTQ グラハムはハーバード、MIT人工知能研、イタリアの美術大出てるんでしょ?
アメリカの大学は学費も相当かかる
ビジネス始める前から「普通の奴等の上」を行ってる人なんだと思うなぁ
頭さえ良ければ、とか思うかもしれないが環境、友人は大事だよ
ビアウェブのパートナーはMITの教授だよね、確か
アメリカの大学は学費も相当かかる
ビジネス始める前から「普通の奴等の上」を行ってる人なんだと思うなぁ
頭さえ良ければ、とか思うかもしれないが環境、友人は大事だよ
ビアウェブのパートナーはMITの教授だよね、確か
132デフォルトの名無しさん
2019/11/10(日) 14:00:02.99ID:jFIdfEKQ いまPLAIの8章をよんでいるんだけど、次のExerciseの不変条件と言うのがよく分からん・・
ttp://cs.brown.edu/courses/cs173/2012/book/mut-struct-vs-var.html#%28elem._%28chunk._~3cms-setbox.C-case~3e~3a1%29%29
ソースコードはこれ https://bitsend.jp/download/d7ebf31e84a7dc5d8b55a3e3b66ce803.html
Storeに束縛を追加するのはbox、その束縛を参照するのはset-box!とunboxだけだから、
set-box!を評価するときに、ロケーションがStoreに存在しないことは無いように考えているんだけど、もっと数学的に
証明しなきゃいけないんですよねこれ・・
ttp://cs.brown.edu/courses/cs173/2012/book/mut-struct-vs-var.html#%28elem._%28chunk._~3cms-setbox.C-case~3e~3a1%29%29
ソースコードはこれ https://bitsend.jp/download/d7ebf31e84a7dc5d8b55a3e3b66ce803.html
Storeに束縛を追加するのはbox、その束縛を参照するのはset-box!とunboxだけだから、
set-box!を評価するときに、ロケーションがStoreに存在しないことは無いように考えているんだけど、もっと数学的に
証明しなきゃいけないんですよねこれ・・
133デフォルトの名無しさん
2019/11/18(月) 17:16:59.42ID:D69b6YL7 Emacs hy-modeがバグってて動かない
134デフォルトの名無しさん
2019/11/22(金) 03:17:25.81ID:LHM1yudT Lispworks 8いつ頃出ると思う?
135デフォルトの名無しさん
2019/12/06(金) 00:43:20.37ID:KafRVWs2 $ ros run
* (+ 31000 33500 1000 2300 16500 300 1000 10100)
64700
おいおい,なんだこのメチャクチャな値
こんなんじゃ,まったく信頼できないんだが
どうなってんだ
しかも再現できないし
$ ros version
roswell 19.09.12.102(NO-GIT-REVISION)
* (+ 31000 33500 1000 2300 16500 300 1000 10100)
64700
おいおい,なんだこのメチャクチャな値
こんなんじゃ,まったく信頼できないんだが
どうなってんだ
しかも再現できないし
$ ros version
roswell 19.09.12.102(NO-GIT-REVISION)
136135
2019/12/06(金) 03:21:18.04ID:KafRVWs2 正しい値は 95700 なのだが
(- 95700 31000)
が 64700 になることに気づいた
最初の引数,抜かしてんじゃん...
REPL の + 関数,バグってるんだが
それとも WSL がいけないのか? tmux がいけないのか?
(- 95700 31000)
が 64700 になることに気づいた
最初の引数,抜かしてんじゃん...
REPL の + 関数,バグってるんだが
それとも WSL がいけないのか? tmux がいけないのか?
137135
2019/12/06(金) 04:20:18.39ID:KafRVWs2 $ ros run -- --version
SBCL 1.5.5
SBCL 1.5.5
138はちみつ餃子 ◆8X2XSCHEME
2019/12/15(日) 17:37:59.94ID:jthcUe0A Gauche の 0.9.9 がリリースされたよー
139_
2020/01/17(金) 14:26:20.97ID:ceaCkwJJ Guile 3.0 でたよー JIT化されたのが一番大きいかも
https://lists.gnu.org/archive/html/guile-devel/2020-01/msg00080.html
SBCL も 2.0 になったよー 久しぶりに Windows のインストーラーも更新されてるね
http://www.sbcl.org/news.html
https://lists.gnu.org/archive/html/guile-devel/2020-01/msg00080.html
SBCL も 2.0 になったよー 久しぶりに Windows のインストーラーも更新されてるね
http://www.sbcl.org/news.html
140はちみつ餃子 ◆8X2XSCHEME
2020/01/17(金) 16:25:06.09ID:TQsEbuhA142_
2020/02/14(金) 11:14:07.86ID:m79sNhAX Racket 7.6リリースされたよー
https://blog.racket-lang.org/2020/02/racket-v7-6.html
Chez Schemeの取り込みが進んで、プロダクション・レディになったそうな。
デフォルトにはまだなっていないようです。
https://blog.racket-lang.org/2020/02/racket-v7-6.html
Chez Schemeの取り込みが進んで、プロダクション・レディになったそうな。
デフォルトにはまだなっていないようです。
143デフォルトの名無しさん
2020/02/14(金) 20:28:20.26ID:xdYnDj0z Chezか
スレッデドコードとか懐かしいな
スレッデドコードとか懐かしいな
144デフォルトの名無しさん
2020/02/14(金) 23:19:09.23ID:2TRtlmBi SICPを勉強したくてschemeを一通り勉強したけど
schemeが本当に好きになった
綺麗な言語だなと思ったのはschemeが初めて
schemeが本当に好きになった
綺麗な言語だなと思ったのはschemeが初めて
145はちみつ餃子 ◆8X2XSCHEME
2020/02/15(土) 13:53:27.59ID:cwLPNCdO Chez はパッケージマネージャがなぁ……。
146デフォルトの名無しさん
2020/02/18(火) 22:12:38.88ID:i+WlpfA0 SICPで4.4論理プログラミングがでてきたけど、論理プログラム言語(Prolog)なんて
一生使わんのじゃないのか・・・?俺みたいな雑魚PGは特に。
そもそも俺はなんでインタプリタ作ってるんや・・・
一生使わんのじゃないのか・・・?俺みたいな雑魚PGは特に。
そもそも俺はなんでインタプリタ作ってるんや・・・
147はちみつ餃子 ◆8X2XSCHEME
2020/02/19(水) 11:52:11.74ID:mcS2XXQq148デフォルトの名無しさん
2020/02/19(水) 13:12:57.48ID:YsbctBnB prologはともかくユニフィケーションはパターンマッチでたまに使うかも
149デフォルトの名無しさん
2020/02/22(土) 11:13:35.82ID:dEZr6bBq 歴史、哲学、思想を勉強しても目の前の仕事には直結しない
みたいなことなのかな
みたいなことなのかな
150デフォルトの名無しさん
2020/02/22(土) 11:15:49.62ID:dEZr6bBq PrologはSQLに近い(同じ?)という人もいるね
151はちみつ餃子 ◆8X2XSCHEME
2020/02/22(土) 12:07:02.06ID:5jIrjfcF 事実を列挙すれば解を求める処理をやってくれるってのは理想のひとつではあるよな。
実際にはには Prolog が答えを出すメカニズムを理解していないと
答えを (効率的に) 出しやすい事実を上手く与えられない場合もあるし、現実は厳しい……。
実際にはには Prolog が答えを出すメカニズムを理解していないと
答えを (効率的に) 出しやすい事実を上手く与えられない場合もあるし、現実は厳しい……。
152デフォルトの名無しさん
2020/02/22(土) 21:37:13.68ID:dEZr6bBq 思うんだけどLispというと悟りとか、ゲーデル云々みたいな話がよく言われるけど
Prologではあんまり関連付けて言われないですよね
Prologではあんまり関連付けて言われないですよね
153デフォルトの名無しさん
2020/02/29(土) 16:53:01.80ID:RQUlgixi 上にもあるけどprologは論理がそのままプログラムになるっていわれてんだろ
似たようなもん
似たようなもん
154デフォルトの名無しさん
2020/03/03(火) 08:38:08.45ID:VyHc4g1O hy面白いけどlisperにはrubyの方が人気なんだ
155デフォルトの名無しさん
2020/03/03(火) 12:21:06.15ID:t7WQy2vJ んなこたーない
156デフォルトの名無しさん
2020/03/03(火) 18:09:46.41ID:wrUSgHR4 >>152
> Prologではあんまり関連付けて言われないですよね
Prologは「論理プログラミング言語」と呼ばれたりするけれど書かれたプログラムを実行可能にするためのプログラミング言語であるために
論理のための言語(つまり論理式を記述するための言語)とはかなり違ってしまっているからね
その典型がPrologで動くプログラムを書く上で不可欠なカット “!” ね
あれは本来の論理には対応物がなく論理とは全く縁のないコンストラクトだが
カットを使わなければほとんどのPrologプログラムはまともに動かなくなってしまうだろう
その点、Schemeから命令的な言語コンストラクトおよび標準手続きであるset!とset-car!, set-cdr!を除いた部分は
弱い(weak, つまりλ抽象の本体式中のβ-簡約基(redex)は簡約せずに放置しておく)
作用的順序(applicative order)の評価戦略(reduction strategy)のλ計算そのものだ
call-ccは継続(continuation)というメタな(つまり意味論上の)値を対象レベルに持ち込むmeta-circular的な拡張であり
Schemeに限らずLisp一般で広く採用されているS-式という構文は自分の構文に対する抽象構文の表現になっているから
プログラムが自分自身(や同じ言語で書かれた他のプログラム)のソースコードを記述している言語を対象言語として
自分自身がそれを素直な形で操作できるメタ言語レベルの存在として振る舞えることになるからね
言い換えればS-式という表現形式のために括弧をやたらと多用させられるLisp言語では
ソースコードをその抽象構文(木構造)と同型な形で記述させていると言っても良い
だからLispのプログラムをLispで処理する場合には、C等のような普通のプログラミング言語で書かれたプログラムを処理する場合には
不可欠な字句解析や構文解析が実質上は不要なんだよ
何故ならば処理する側のLispプログラムにとって処理される側のLispコードは最初から抽象構文木と1:1対応する形式で提供される訳だから
正にゲーデルの不完全性定理で行っている形式化された論理のゲーデル数による表現とそれを原始再帰的函数や同述語を含むメタ論理のレベルで
処理する構造が、Lispの世界に対応していると言えるわけですよ
> Prologではあんまり関連付けて言われないですよね
Prologは「論理プログラミング言語」と呼ばれたりするけれど書かれたプログラムを実行可能にするためのプログラミング言語であるために
論理のための言語(つまり論理式を記述するための言語)とはかなり違ってしまっているからね
その典型がPrologで動くプログラムを書く上で不可欠なカット “!” ね
あれは本来の論理には対応物がなく論理とは全く縁のないコンストラクトだが
カットを使わなければほとんどのPrologプログラムはまともに動かなくなってしまうだろう
その点、Schemeから命令的な言語コンストラクトおよび標準手続きであるset!とset-car!, set-cdr!を除いた部分は
弱い(weak, つまりλ抽象の本体式中のβ-簡約基(redex)は簡約せずに放置しておく)
作用的順序(applicative order)の評価戦略(reduction strategy)のλ計算そのものだ
call-ccは継続(continuation)というメタな(つまり意味論上の)値を対象レベルに持ち込むmeta-circular的な拡張であり
Schemeに限らずLisp一般で広く採用されているS-式という構文は自分の構文に対する抽象構文の表現になっているから
プログラムが自分自身(や同じ言語で書かれた他のプログラム)のソースコードを記述している言語を対象言語として
自分自身がそれを素直な形で操作できるメタ言語レベルの存在として振る舞えることになるからね
言い換えればS-式という表現形式のために括弧をやたらと多用させられるLisp言語では
ソースコードをその抽象構文(木構造)と同型な形で記述させていると言っても良い
だからLispのプログラムをLispで処理する場合には、C等のような普通のプログラミング言語で書かれたプログラムを処理する場合には
不可欠な字句解析や構文解析が実質上は不要なんだよ
何故ならば処理する側のLispプログラムにとって処理される側のLispコードは最初から抽象構文木と1:1対応する形式で提供される訳だから
正にゲーデルの不完全性定理で行っている形式化された論理のゲーデル数による表現とそれを原始再帰的函数や同述語を含むメタ論理のレベルで
処理する構造が、Lispの世界に対応していると言えるわけですよ
157デフォルトの名無しさん
2020/03/03(火) 18:41:29.86ID:2IitENiP 3文字で頼む
158デフォルトの名無しさん
2020/03/03(火) 19:41:28.30ID:nd3HjawW マクロ
159デフォルトの名無しさん
2020/03/03(火) 20:29:22.74ID:44YhJRv6 要するにPrologはメタ論理レベルのプログラミングが出来ないってこと?
160デフォルトの名無しさん
2020/03/03(火) 21:31:50.71ID:s8qGwiQH >>157
ボイド
ボイド
161デフォルトの名無しさん
2020/03/03(火) 21:44:08.09ID:JAknlLuJ >>157
GEB
GEB
162デフォルトの名無しさん
2020/03/04(水) 12:43:41.99ID:XYd2gLmT CDR!!
163デフォルトの名無しさん
2020/03/04(水) 12:50:19.65ID:ujdXlrHA SECD
Landin’s J
Landin’s J
164デフォルトの名無しさん
2020/03/05(木) 20:29:29.92ID:h922Dn8C165デフォルトの名無しさん
2020/03/05(木) 20:29:51.26ID:h922Dn8C >>53
今はAIといえばPythonだろ?
今はAIといえばPythonだろ?
166デフォルトの名無しさん
2020/03/05(木) 20:30:44.79ID:h922Dn8C167デフォルトの名無しさん
2020/03/05(木) 20:32:32.21ID:h922Dn8C168デフォルトの名無しさん
2020/03/05(木) 20:34:42.44ID:h922Dn8C169デフォルトの名無しさん
2020/03/05(木) 20:39:40.49ID:h922Dn8C170デフォルトの名無しさん
2020/03/05(木) 20:41:41.16ID:h922Dn8C171デフォルトの名無しさん
2020/03/05(木) 20:42:43.57ID:h922Dn8C172デフォルトの名無しさん
2020/03/05(木) 20:44:54.71ID:h922Dn8C173デフォルトの名無しさん
2020/03/05(木) 20:47:20.68ID:h922Dn8C >>156
Lispはメタプログラミングしやすいって理屈は分かるが
実際にそれでものすごい作業効率が上がるかは疑問だな?
なぜんあらメジャーな言語はライブラリが充実してて
それ使えば最初から書かなくても済むわけだから早い
Lispはメタプログラミングしやすいって理屈は分かるが
実際にそれでものすごい作業効率が上がるかは疑問だな?
なぜんあらメジャーな言語はライブラリが充実してて
それ使えば最初から書かなくても済むわけだから早い
174デフォルトの名無しさん
2020/03/05(木) 20:48:56.47ID:h922Dn8C175デフォルトの名無しさん
2020/03/05(木) 23:31:57.86ID:ilhNvGHV 3文字で頼む
176デフォルトの名無しさん
2020/03/06(金) 05:04:10.79ID:nWpA6pnf スレチ
177デフォルトの名無しさん
2020/03/10(火) 18:23:23.35ID:BcZoFSIR hy
マクロの入力にpair入れたのに
マクロ実行時にunquoteするとlistに化けるバグがある気がする
マクロの入力にpair入れたのに
マクロ実行時にunquoteするとlistに化けるバグがある気がする
178デフォルトの名無しさん
2020/03/26(木) 18:40:18.93ID:jDMenf5s 日本の理系人のLisp好きは異常
179デフォルトの名無しさん
2020/03/26(木) 21:06:12.72ID:x3TTE31H 土日はおとなしくLispでも
180デフォルトの名無しさん
2020/04/24(金) 18:37:15.78ID:3QH+ANBn Clozure CL 1.12 がでてきた。
https://github.com/Clozure/ccl/releases/tag/v1.12
ぜんぜん 1.11 からバージョンあがらないから死んじゃったのかと思ったよ。
https://github.com/Clozure/ccl/releases/tag/v1.12
ぜんぜん 1.11 からバージョンあがらないから死んじゃったのかと思ったよ。
181デフォルトの名無しさん
2020/04/24(金) 19:04:52.05ID:aAxBS6wC 死んでるんじゃない
枯れてるんだ😡
枯れてるんだ😡
182180
2020/04/25(土) 00:16:26.67ID: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
ごめんなさい
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
183デフォルトの名無しさん
2020/04/25(土) 01:57:04.26ID:u9oymkho >>180
キタ━━━━(゚∀゚)━━━━!!
キタ━━━━(゚∀゚)━━━━!!
184デフォルトの名無しさん
2020/04/25(土) 07:07:50.62ID:q++AEQsZ 小学校でlispを教えたらいいのに
185182
2020/04/25(土) 13:34:52.97ID:tfHLOmTJ186_
2020/04/28(火) 00:30:29.10ID:moc7J10E SBCL 2.0.4 リリースされたよ。RISC-V プロセッサに対応したのが目玉みたいだよ。
http://www.sbcl.org/news.html#2.0.4
http://www.sbcl.org/news.html#2.0.4
187デフォルトの名無しさん
2020/04/28(火) 11:03:05.28ID: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 に明るい方がいればご教示賜りたいです。
手続きを適用する順序 (副作用が発生する順序) は仕様上は未規定ということになっています。
各処理系として保証するということは有りえるんですが、
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 に明るい方がいればご教示賜りたいです。
188_
2020/04/28(火) 14:05:01.63ID:moc7J10E189デフォルトの名無しさん
2020/04/28(火) 14:43:15.44ID: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 の順序が効いてくるコードがあったので、
これってありなんかなぁと思ったという経緯です。
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 の順序が効いてくるコードがあったので、
これってありなんかなぁと思ったという経緯です。
190デフォルトの名無しさん
2020/04/29(水) 01:16:58.58ID:y02v3tEE >>187
保証とはどういうことを指しているのだろう
将来仕様を変更しないとは書いていないのは確かなようだ
racketでは引数の評価もleft to rightとは書いてあった
schemeでもfor-eachは先頭から順番に評価する
実際に評価順の違いが観察できるのはchezかな
保証とはどういうことを指しているのだろう
将来仕様を変更しないとは書いていないのは確かなようだ
racketでは引数の評価もleft to rightとは書いてあった
schemeでもfor-eachは先頭から順番に評価する
実際に評価順の違いが観察できるのはchezかな
191デフォルトの名無しさん
2020/04/29(水) 03:18:21.69ID: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 elements 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では表示される要素の順番はどんな順序でも良いのに対して
Racket v7.6では元のリストlstの要素の並び順に必ず表示せねばならない。
これは私の想像だが、R5RSでmapが手続きを適用する要素の順番を規定しないと明記しているのは長大なリストに対する並列処理を可能にするためだろう。
逆に言えば手続きの適用順序を確実に把握したい場合にはmapでなくfor-eachを使えというのがR5RSを定めたチームの言語設計上の意図だろう。
>>190
> 保証とはどういうことを指しているのだろう
その言語仕様書のそのバージョンに準拠していると宣言している言語処理系は、それを守らねばならない(守っていなければバグだ)という意味だよ。
だから今の例では、Racket Reference v7.6準拠と処理系が宣言したら、その処理系はmapで手続きを適用する要素の順番を必ずリストの並び順に
する義務が生ずる(Racket v7.6の定める言語仕様=Racket v7.6ユーザとの約束の順守を保証せねばならない)、ということだ。
当然ながら、言語仕様書のバージョンが変われば約束(つまり言語仕様による規定の内容)も変更され得る。
> 私は 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 elements 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では表示される要素の順番はどんな順序でも良いのに対して
Racket v7.6では元のリストlstの要素の並び順に必ず表示せねばならない。
これは私の想像だが、R5RSでmapが手続きを適用する要素の順番を規定しないと明記しているのは長大なリストに対する並列処理を可能にするためだろう。
逆に言えば手続きの適用順序を確実に把握したい場合にはmapでなくfor-eachを使えというのがR5RSを定めたチームの言語設計上の意図だろう。
>>190
> 保証とはどういうことを指しているのだろう
その言語仕様書のそのバージョンに準拠していると宣言している言語処理系は、それを守らねばならない(守っていなければバグだ)という意味だよ。
だから今の例では、Racket Reference v7.6準拠と処理系が宣言したら、その処理系はmapで手続きを適用する要素の順番を必ずリストの並び順に
する義務が生ずる(Racket v7.6の定める言語仕様=Racket v7.6ユーザとの約束の順守を保証せねばならない)、ということだ。
当然ながら、言語仕様書のバージョンが変われば約束(つまり言語仕様による規定の内容)も変更され得る。
192デフォルトの名無しさん
2020/04/29(水) 06:44:54.55ID:bLWOmnfL >>187
処理系によって(A B C)の評価順序が
(1 2 3)だったり(3 1 2)だったり(3 2 1)だったりするから
mapのようなリストで処理結果を返すような関数のクロージャ内では原則副作用は起こさないことが求められる
for-eachみたいな初めから副作用を期待する関数はどう並べようが問題は起きない
処理系によって(A B C)の評価順序が
(1 2 3)だったり(3 1 2)だったり(3 2 1)だったりするから
mapのようなリストで処理結果を返すような関数のクロージャ内では原則副作用は起こさないことが求められる
for-eachみたいな初めから副作用を期待する関数はどう並べようが問題は起きない
193デフォルトの名無しさん
2020/04/29(水) 09:21:45.86ID:sxS/u8Yc194デフォルトの名無しさん
2020/04/29(水) 09:54:06.36ID: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) (display 'd) 2))
とあったときに表示は abcd か cdab のどちらかであり acbd だったり cabd だったりはしない
ということです。
map についてはこういう制約は書かれてはいないものの、
順序は規定しないという文言は「既定はしないけどなんらかの順序を想定する」
とも読めなくもないので並列化を許しているとは言い切れない気がします。
副作用がないときに限っては並列化しても仕様に反しないのは間違いないですけど、
その場合は順序に関して有るとも無いとも書く必要がないんですよね。
どうせ観測できないので。
> 長大なリストに対する並列処理を可能にするためだろう
手続きの引数の評価順序については未規定ではあるものの
"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) (display 'd) 2))
とあったときに表示は abcd か cdab のどちらかであり acbd だったり cabd だったりはしない
ということです。
map についてはこういう制約は書かれてはいないものの、
順序は規定しないという文言は「既定はしないけどなんらかの順序を想定する」
とも読めなくもないので並列化を許しているとは言い切れない気がします。
副作用がないときに限っては並列化しても仕様に反しないのは間違いないですけど、
その場合は順序に関して有るとも無いとも書く必要がないんですよね。
どうせ観測できないので。
195デフォルトの名無しさん
2020/04/29(水) 12:39:32.81ID:qQMMu/UY196187
2020/04/29(水) 13:42:08.04ID: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
副作用がないなら順序なんか考える必要はないんですよ。
どの順序で実行されようと並列であろうと (観測できる) 結果は同じなので順序を気にする意味がありません。
結果が同じにならない場合 (副作用がある場合) がどうあるべきか考えるから順序が効いてくるんです。
で、副作用がある手続きの中でも特に第一級継続は (観測できるだけでなく) 流れを変えることが出来るから
どれが妥当なのか結論が出ないなぁってことです。
継続については「call/cc は副作用を生じる」というひとことで説明できます。
副作用とは何かというのは色々なモデル化のやり方があってはっきりしたひとつの定義を
定められないみたいなんですが、この説明が納得感があって参考になると思います。
https://practical-scheme.net/wiliki/wiliki.cgi?Scheme%3Acall%2Fcc%E3%81%A8%E5%89%AF%E4%BD%9C%E7%94%A8
副作用がないなら順序なんか考える必要はないんですよ。
どの順序で実行されようと並列であろうと (観測できる) 結果は同じなので順序を気にする意味がありません。
結果が同じにならない場合 (副作用がある場合) がどうあるべきか考えるから順序が効いてくるんです。
で、副作用がある手続きの中でも特に第一級継続は (観測できるだけでなく) 流れを変えることが出来るから
どれが妥当なのか結論が出ないなぁってことです。
197デフォルトの名無しさん
2020/04/29(水) 14:57:29.24ID:u7alO7eW グラフかくのってどうしたらいい?gnuplotの🎺使うの?
gnuplot使ったことないけど難しいのか?
gnuplot使ったことないけど難しいのか?
198デフォルトの名無しさん
2020/04/29(水) 18:27:14.43ID:OS1rodDF やりたいことをやろうとすると難しい
199デフォルトの名無しさん
2020/04/29(水) 23:11:18.94ID: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
なるほど、インターリーヴを起こしてはならない、ということですね
良い反例ですね、了解しました
確かにそれだと並列処理という話は排除されますね
"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
なるほど、インターリーヴを起こしてはならない、ということですね
良い反例ですね、了解しました
確かにそれだと並列処理という話は排除されますね
200デフォルトの名無しさん
2020/04/30(木) 01:56:25.80ID:qpY4nJGd 実用性皆無の話だなschemeらしいや
racketとの比較ならr6だと思うのだが
しかもr7でなくr5とな
scheme間でさえ移植性は低いんだからどんな挙動でも良いんじゃねえか
racketはまだ実装が複数存在するような状況ではないらしいが
schemeとは文化が違うんで実用性に舵切った仕切りになりそうね
racketとの比較ならr6だと思うのだが
しかもr7でなくr5とな
scheme間でさえ移植性は低いんだからどんな挙動でも良いんじゃねえか
racketはまだ実装が複数存在するような状況ではないらしいが
schemeとは文化が違うんで実用性に舵切った仕切りになりそうね
201デフォルトの名無しさん
2020/04/30(木) 02:18:30.11ID: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を行う最初と最後はそれぞれ先頭と末尾でなければならないのに途中はランダムでも可というのは不自然すぎる
(なぜ最初と最後だけは変更を許さず先頭と末尾に確定させるのか?、ランダムを許すならば最初・最後も含め全部がランダム可にするのが自然)
ということだ
もし最初および最後だけはそれぞれ先頭および最後だけに限定し、それ以外の途中の順番だけは規定したくない、という極めて不自然な仕様にしたいならば
誤解させないように、「但し、最初・最後以外の途中の順番は自由で規定しない」という趣旨の語句を挟む必要がある
> "from the first elements to the last"は最初の要素から最後の要素へだから当然ながらin orderの意味を含む
この説明は説明になってなかったですね
ちゃんと書くと、前置詞fromとtoとを同時に使う場合、前者は動詞が表す行為の始点を、後者は終点を表す
つまり
> "from the first elements to the last"
という表現は先頭の要素たちがprocをapplyするという行為は、その行為の始点が先頭要素で終点が末尾の要素となる経路から成るということ
そうであるので、途中の要素に関しては193が心配している通り順序通り(in order)とは確かに書いていないけれど、
少なくとも最初に適用されるのは先頭要素たちで最後に適用されるのは最終要素だということは上の引用した英語句から確かだということ
applyを行う最初と最後はそれぞれ先頭と末尾でなければならないのに途中はランダムでも可というのは不自然すぎる
(なぜ最初と最後だけは変更を許さず先頭と末尾に確定させるのか?、ランダムを許すならば最初・最後も含め全部がランダム可にするのが自然)
ということだ
もし最初および最後だけはそれぞれ先頭および最後だけに限定し、それ以外の途中の順番だけは規定したくない、という極めて不自然な仕様にしたいならば
誤解させないように、「但し、最初・最後以外の途中の順番は自由で規定しない」という趣旨の語句を挟む必要がある
202_
2020/05/03(日) 15:45:23.91ID:XyvLD4Kl そうこうしているうち Racket 7.7 リリースされたよ。
https://blog.racket-lang.org/2020/05/racket-v7-7.html
個人的なトピックス
・イミュータブルで高速なハッシュテーブルHAMT(hash array mapped trie)がインプリされた。
・コンパイラの最適化でコードサイズ20%減。
・GC1,2割高速化。
・ドキュメント改善。
https://blog.racket-lang.org/2020/05/racket-v7-7.html
個人的なトピックス
・イミュータブルで高速なハッシュテーブルHAMT(hash array mapped trie)がインプリされた。
・コンパイラの最適化でコードサイズ20%減。
・GC1,2割高速化。
・ドキュメント改善。
203デフォルトの名無しさん
2020/05/03(日) 18:58:12.70ID:BS5ww13P 今の Racket は
ChezScheme をバックエンドにしたやつと従来からのやつがどちらも配信されているけど、
これって将来的には一本化される予定ってあるのかな?
ChezScheme をバックエンドにしたやつと従来からのやつがどちらも配信されているけど、
これって将来的には一本化される予定ってあるのかな?
204デフォルトの名無しさん
2020/05/04(月) 08:02:38.27ID:QFOyDpRt hy言語をwindows10で使いたい
pip install hyは成功するが
コマンドプロンプトでhyと入力してもhyが実行されない
変なパスの設定がいる?
pip install hyは成功するが
コマンドプロンプトでhyと入力してもhyが実行されない
変なパスの設定がいる?
205デフォルトの名無しさん
2020/05/04(月) 17:14:51.89ID:WvOaLqMC >>204
管理者権限でインストールしたなら C:\Program Files\Python37\Scripts だけど、
ユーザ権限なら %LocalAppData%\Programs\Python の下のどこからしい。
管理者権限でインストールしたなら C:\Program Files\Python37\Scripts だけど、
ユーザ権限なら %LocalAppData%\Programs\Python の下のどこからしい。
206デフォルトの名無しさん
2020/05/07(木) 13:26:34.69ID:fANici3H >>202
キタ━━━━(゚∀゚)━━━━!!
キタ━━━━(゚∀゚)━━━━!!
207デフォルトの名無しさん
2020/05/29(金) 15:53:20.54ID:Xj9bBIl5208デフォルトの名無しさん
2020/05/31(日) 00:46:42.64ID:RkS0wDCU Common Lispは使い込まないと頭に入ってこないが
Racketにはドキュメント読んだだけで頭にすっと入ってくる綺麗さがあった
最近のRacketって昔と同じ感じの綺麗なままなんだろうか
最近読んだRacketの() []の括弧を区別する方法のドキュメントがわかりにくくて
RacketもCommonLispと同じなってしまって,これならCommon Lispでいいじゃん
と思ったのだが
Racketにはドキュメント読んだだけで頭にすっと入ってくる綺麗さがあった
最近のRacketって昔と同じ感じの綺麗なままなんだろうか
最近読んだRacketの() []の括弧を区別する方法のドキュメントがわかりにくくて
RacketもCommonLispと同じなってしまって,これならCommon Lispでいいじゃん
と思ったのだが
209デフォルトの名無しさん
2020/05/31(日) 16:35:47.71ID:6jrbJecg > 最近読んだRacketの() []の括弧を区別する方法
racketがschemeから枝分かれして10年だがracketになるよりまえのr6rsからだろ
たまにしか書かない程度ならなんでも良いだろ大袈裟だな
racketがschemeから枝分かれして10年だがracketになるよりまえのr6rsからだろ
たまにしか書かない程度ならなんでも良いだろ大袈裟だな
210はちみつ餃子 ◆8X2XSCHEME
2020/06/01(月) 02:26:33.76ID:0yVOdbpz Racket は元は教育用途で使われていたこともあってドキュメントはかなり整備されている部類だと思うが。
211デフォルトの名無しさん
2020/06/02(火) 22:21:53.62ID:0sTsfEfs 他の言語と比べてCommon Lispっぽい書き方、Schemeっぽい書き方ってどんな書き方ですかね
212デフォルトの名無しさん
2020/06/03(水) 00:06:28.05ID:OT4MJN13 そら末尾再帰をふんだんに使うとか変数はなるべく使わないとか
213デフォルトの名無しさん
2020/06/03(水) 00:18:32.67ID:5C2VTXl3 CLっぽい書き方はマクロを使いまくった超絶技巧だろう
Schemeっぽい書き方は兎に角無理矢理に再起呼び出しを使った超絶技巧な書き方だろう
Schemeっぽい書き方は兎に角無理矢理に再起呼び出しを使った超絶技巧な書き方だろう
214デフォルトの名無しさん
2020/06/03(水) 01:17:24.97ID:gRMTE3Wt ダイナミックスコープ活用してるの見るとcommon lispだなぁって思う
215デフォルトの名無しさん
2020/06/03(水) 09:04:50.18ID:yr2/b+Mr 括弧のやまがある時点でlispっぽい。あとはまあ、ラムダ式とかもほかに普及してきてるから、マクロかなぁ。
216デフォルトの名無しさん
2020/06/05(金) 13:14:24.46ID:dnBRE6E+ hy言語良いのにpython使いが良さをわかってくれない
217デフォルトの名無しさん
2020/06/05(金) 23:11:11.70ID:gXepSjvX 見るからに検索に引っかからなそう
名前って大事だよね・・・
名前って大事だよね・・・
218デフォルトの名無しさん
2020/06/26(金) 20:41:33.71ID:zhAvJTli LispworksのprofessionalとhobbyistDVどう違うの?
219デフォルトの名無しさん
2020/06/27(土) 16:06:22.83ID:9QvR4hLZ Lispworksのprofessional 32bitかhobbyistDV 64bitどっち買うか迷う
220デフォルトの名無しさん
2020/06/29(月) 08:04:38.82ID:bwiS8r2m >>218
hobbyistDVは業務で使うことはできんくて作成したEXEも配布できないです
professionalは業務用途で無制限の配布ライセンス込みです
業務で使用するEXEの配布をするのが目的かどうかでしょうね
hobbyistDVは業務で使うことはできんくて作成したEXEも配布できないです
professionalは業務用途で無制限の配布ライセンス込みです
業務で使用するEXEの配布をするのが目的かどうかでしょうね
221デフォルトの名無しさん
2020/07/21(火) 23:47:51.88ID:WS1OAOc5 Pythonぽい独自言語をpythonに変換したい
Lispは使わずpythonのパーサー使った方が楽だろうか
Lispは使わずpythonのパーサー使った方が楽だろうか
222デフォルトの名無しさん
2020/07/22(水) 00:07:10.65ID:Rr/gpg4T >>221
PythonぽいならPythonに変換すればいいだろ!
PythonぽいならPythonに変換すればいいだろ!
223デフォルトの名無しさん
2020/07/22(水) 19:30:54.17ID:Cq/LgZJ4 hyこういう時に使えるのか
224デフォルトの名無しさん
2020/08/21(金) 21:28:14.79ID:l/GdGvyy racketでデバッグするのは
DrRacketを使うしかない?
コマンドラインでデバッグできたらいいんだが
DrRacketを使うしかない?
コマンドラインでデバッグできたらいいんだが
225はちみつ餃子 ◆8X2XSCHEME
2020/08/24(月) 02:59:00.85ID:ko9AntT7 デバッグってどういうレベルのことだろ。
REPL はあるんだからそこから実行してみればいいんじゃね。
REPL はあるんだからそこから実行してみればいいんじゃね。
226デフォルトの名無しさん
2020/10/05(月) 07:37:00.61ID:VkmQCekf Python のpandasが日時関係処理充実しすぎて手放せない
しかしlispで似たことできるなら乗り換えたい
Pandasのデータからガントチャート作ってくれさえすればいいのだけど
Lispに相当するものないでしょうか
しかしlispで似たことできるなら乗り換えたい
Pandasのデータからガントチャート作ってくれさえすればいいのだけど
Lispに相当するものないでしょうか
227デフォルトの名無しさん
2020/10/05(月) 23:29:50.84ID:+akcWJTJ 既に手放せないほどのものを漠然としたlispへの印象で乗り換えたら全てが満足したという話は寡聞にして知らない
レスを投稿する
ニュース
- 中国「国連安保理の許可なしに日本攻撃可能」 Xで旧敵国条項に言及… ★4 [BFU★]
- 中国「国連安保理の許可なしに日本攻撃可能」 Xで旧敵国条項に言及… ★3 [BFU★]
- 【千葉】コンビニに尿入りペットボトル並べた疑い、26歳男「むしゃくしゃして」…購入した客が飲もうとしたところ臭いに違和感 [ぐれ★]
- 中国官製報道「日本経済はもう持たない」にネット民ツッコミ「ニュースだけ見てたら日本はもう百回くらい爆発してる」 [1ゲットロボ★]
- 【硬貨】500円だと思ったら「500ウォンが入っていた」価値は約10分の1 全国で飲食店などで“500ウォントラブル”相次いで報告 [ぐれ★]
- 【STARTO ENTERTAINMENT】timelesz、メンバーの不適切言動を謝罪「不用意かつモラルに反した発言であった」 全員の署名入りでコメント [Ailuropoda melanoleuca★]
- 【実況】博衣こよりのえちえちホロ分かり手クイズ🧪🏴‍☠🌸 ★3
- 【高市悲報】中国「国連安保理の許可なしに日本を攻撃可能だ」★2 [115996789]
- フィリピンの中国大使館、高市早苗の面白漫画を公開www🤣 [718678614]
- NHKニュースウオッチ9「日本側は対話にオープンな姿勢で安定した日中関係を築きたい考えなのに中国が意固地で糸口が見いだせない」 [904151406]
- 【んな専🏡】華金もんなっしょいとはやれやれなのらね🍬(・o・🍬)🏰
- 日中戦争起きたら5日で自衛隊壊滅するらしい。じゃあ徴兵も無いし、俺等が必死になって反対してやる理由なくね? [237216734]
