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
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への印象で乗り換えたら全てが満足したという話は寡聞にして知らない
228デフォルトの名無しさん
2020/10/07(水) 06:01:50.72ID:K2xU1fKa pandasはRの劣化コピーで
Rはschemeと相性がいいから
Rに乗り換えると良いのでは?
Rはschemeと相性がいいから
Rに乗り換えると良いのでは?
229デフォルトの名無しさん
2020/10/07(水) 11:49:58.33ID:jq/8+j7g 邪道かもしれないが
hy使えばlisp でpandas使える
hy使えばlisp でpandas使える
230デフォルトの名無しさん
2020/10/16(金) 17:12:58.14ID:PUF6e3pG lispは他の言語に寄生して生きていくしかないね
pyレベルのライブラリなんて期待できないし
pyレベルのライブラリなんて期待できないし
231デフォルトの名無しさん
2020/10/16(金) 18:49:22.22ID:gzagFIoh Luaみたいな用途なら需要がある気がする
232デフォルトの名無しさん
2020/10/16(金) 19:26:16.21ID:eDnfO719 時期にcommon lisp でできるようになるかも
最近numpyのcommonlisp版作るnumcl ってプロジェクトあるし
最近numpyのcommonlisp版作るnumcl ってプロジェクトあるし
233デフォルトの名無しさん
2020/10/16(金) 19:47:49.92ID:gzagFIoh カッコなし、字下げか空白だけで繋ぐlispとかあったら3レス分くらい流行るかも
234デフォルトの名無しさん
2020/10/16(金) 22:46:57.54ID:uQ0QovW5 >>233
たとえば(/(+ 1 2 3 4 5) 5)はどうなるの
/
+
1 2 3 4 5
5
こうかな?
たとえば(/(+ 1 2 3 4 5) 5)はどうなるの
/
+
1 2 3 4 5
5
こうかな?
235デフォルトの名無しさん
2020/10/16(金) 22:55:51.98ID:uQ0QovW5 無限ループ
((lambda(x)(x x))(lambda(x)(x x)))
こういうのだと字下げだけでは対応できないから補助キーワードが必要になる
call
lambda x
call x x
lambda x
call x x
こうかな
無意味に行数が増える時点で自分的に却下だけど
((lambda(x)(x x))(lambda(x)(x x)))
こういうのだと字下げだけでは対応できないから補助キーワードが必要になる
call
lambda x
call x x
lambda x
call x x
こうかな
無意味に行数が増える時点で自分的に却下だけど
236はちみつ餃子 ◆8X2XSCHEME
2020/10/17(土) 01:28:29.67ID:EbfBq8oa >>233-235
Scheme での提案として存在はする。
https://srfi.schemers.org/srfi-49/srfi-49.html
でも使われているのを見たことは無いなー。
そこまで括弧が嫌いならあえて Lisp の系統の言語を使わなくても
他の選択肢はいくらでもあるわけだしな。
Scheme での提案として存在はする。
https://srfi.schemers.org/srfi-49/srfi-49.html
でも使われているのを見たことは無いなー。
そこまで括弧が嫌いならあえて Lisp の系統の言語を使わなくても
他の選択肢はいくらでもあるわけだしな。
237デフォルトの名無しさん
2020/10/17(土) 09:40:24.61ID:aI2oeiUv なんていうか、何も変わらんなあ…
カッコがないのにカッコが見える
カッコがないのにカッコが見える
238デフォルトの名無しさん
2020/10/17(土) 13:45:30.78ID:FBaj+4Vy AST をそのままかけるのが lisp の欠点であるし強みでもあるんだから、それが嫌なら他言語で AST をいじれるライブラリーを使ってかけって話だしね
239はちみつ餃子 ◆8X2XSCHEME
2020/10/17(土) 16:11:43.70ID:EbfBq8oa >>237
Indentation-sensitive syntax ( I 式) は S 式との間での単純な変換規則なので
S 式を忘れて書けるほどの抽象度ではないという感覚はわかる。
むしろ脳内で S 式に展開しようとしてしまって変に負荷がかかる感じがある。
最初から I 式で学んでいればまた違う感覚なのかもしれないけど、
そういう学習ルートは確立してないしなぁ。
Indentation-sensitive syntax ( I 式) は S 式との間での単純な変換規則なので
S 式を忘れて書けるほどの抽象度ではないという感覚はわかる。
むしろ脳内で S 式に展開しようとしてしまって変に負荷がかかる感じがある。
最初から I 式で学んでいればまた違う感覚なのかもしれないけど、
そういう学習ルートは確立してないしなぁ。
240デフォルトの名無しさん
2020/11/03(火) 18:17:12.28ID:mQdztdM9 趣味プログラマでLispしか知らないんだけど、
みんなはやりたいことの応じて言語を使い分けてんの?
みんなはやりたいことの応じて言語を使い分けてんの?
241デフォルトの名無しさん
2020/11/04(水) 09:41:10.74ID:lIQnEWld >>240
そりゃ使い分ける
たとえば速さや移植性を重視するときは今でもCが手放せない
一時Rustも使ってみたけどLLVMに縛られるのでCに戻った
あと複雑なことをしないグループログラムだとPythonが楽
ネットを探せば必要なライブラリはだいたい手に入る
そりゃ使い分ける
たとえば速さや移植性を重視するときは今でもCが手放せない
一時Rustも使ってみたけどLLVMに縛られるのでCに戻った
あと複雑なことをしないグループログラムだとPythonが楽
ネットを探せば必要なライブラリはだいたい手に入る
242はちみつ餃子 ◆8X2XSCHEME
2020/11/04(水) 12:06:16.91ID:gK1y19nz なんだかんだで C だけは手放せない感じはあるかな。
低レイヤを支配してるのはやっぱ C だわ。
それもこれからは一部は Go や Rust に置き換わっていくとは思うけど。
低レイヤを支配してるのはやっぱ C だわ。
それもこれからは一部は Go や Rust に置き換わっていくとは思うけど。
244はちみつ餃子 ◆8X2XSCHEME
2020/11/05(木) 17:06:21.53ID:CL/4cqPq >>243
そりゃ当然できるよ。 呼び出すだけなら難しい手間は何もない。
ただ、 C の側のコードの保証が弱すぎる。
たとえば (C側で) malloc で確保したメモリは Go や Rust の側でいつ解放するのが
正しいのかわからないのでそのあたりのつじつま合わせは手動で頑張るしかない。
多少のラッパーを書く必要はあったりする。
そりゃ当然できるよ。 呼び出すだけなら難しい手間は何もない。
ただ、 C の側のコードの保証が弱すぎる。
たとえば (C側で) malloc で確保したメモリは Go や Rust の側でいつ解放するのが
正しいのかわからないのでそのあたりのつじつま合わせは手動で頑張るしかない。
多少のラッパーを書く必要はあったりする。
245デフォルトの名無しさん
2020/11/14(土) 17:07:17.70ID:sHUc2peo 趣味でやっててhyperspec引きながらやりたいことできるようにはなってきたんだけど、
ガッコで系統的勉強したわけじゃないし、自分でやっててもうちょっとええ方法あってもいいよなあとか思うんだけど、
なんかいい勉強方法ある?PAIPはイヤ。
ガッコで系統的勉強したわけじゃないし、自分でやっててもうちょっとええ方法あってもいいよなあとか思うんだけど、
なんかいい勉強方法ある?PAIPはイヤ。
246デフォルトの名無しさん
2020/11/15(日) 01:33:48.20ID:A4lXbstU SICPとCTMCPとかどうかな。
LISPじゃなくてプログラミング全般を体系的に学ぶ話になるけど。
LISPじゃなくてプログラミング全般を体系的に学ぶ話になるけど。
247はちみつ餃子 ◆8X2XSCHEME
2020/11/15(日) 03:50:11.96ID:x+/Z2zzY 日本語で書かれた Common Lisp の本はほとんど絶版になっちゃってるしなぁ……。
ガチの初心者なら Land of Lisp とかもアリかと思うけど、自分でリファレンスを調べられる程度ということになると
逆にちょうどよい書籍ってあまりない感じだよね。
ガチの初心者なら Land of Lisp とかもアリかと思うけど、自分でリファレンスを調べられる程度ということになると
逆にちょうどよい書籍ってあまりない感じだよね。
248デフォルトの名無しさん
2020/11/16(月) 14:24:47.42ID:0hfDZfuV 使ってる処理系のソースを読んだり処理系を作ってみる
249デフォルトの名無しさん
2020/11/16(月) 20:37:45.98ID:ui1G6s5+ on lisp好き
let over lamda変態チックで好き
でも今はsmalltalkerになってしまったよ
let over lamda変態チックで好き
でも今はsmalltalkerになってしまったよ
250デフォルトの名無しさん
2020/11/17(火) 01:49:08.02ID:k3t+4yVm lolのワクワク感はすごい、とりあえず写経したけど理解が追いついてないのでg!無し版を実装中
初心者だけどlisp関連の良書はかなりネットに上がってるよね、cltl2、onlisp,、lol、sicpなどなど
初心者だけど評判良さそうだからとホイホイ買ったのをネットで見付けてはヘコんでる
初心者だけどlisp関連の良書はかなりネットに上がってるよね、cltl2、onlisp,、lol、sicpなどなど
初心者だけど評判良さそうだからとホイホイ買ったのをネットで見付けてはヘコんでる
251デフォルトの名無しさん
2020/11/17(火) 01:59:11.44ID:k3t+4yVm (大事なことなので)
252デフォルトの名無しさん
2020/11/28(土) 21:43:05.36ID:IG5x2Tcu みんな、fletとかlabels使うの?
俺全然使わないんだけど。
俺全然使わないんだけど。
253デフォルトの名無しさん
2020/11/29(日) 02:14:37.33ID:JzQZ+ZwM labelsはよく使う
fletはネストが深くなって読みにくくなるので嫌い
fletはネストが深くなって読みにくくなるので嫌い
254デフォルトの名無しさん
2020/12/01(火) 23:12:43.95ID:Ul2ITO5q スキーム手習いなんですけど
前の章までしっかり理解してから読み進めてくださいとのことですが
継続渡しから急に難しく感じます
そこまでが理解できてないってこと??
前の章までしっかり理解してから読み進めてくださいとのことですが
継続渡しから急に難しく感じます
そこまでが理解できてないってこと??
255はちみつ餃子 ◆8X2XSCHEME
2020/12/02(水) 11:19:13.62ID:wCsCmSK2 >>254
私はその本を持っていないから具体的なことはわからんけど、
不慣れな初心者にとって継続渡しは実際に難しいと思う。
でも「難しい」だけで「理解できない」わけじゃないならたぶん前章まで一応の理解はできてるんじゃないかな。
私はその本を持っていないから具体的なことはわからんけど、
不慣れな初心者にとって継続渡しは実際に難しいと思う。
でも「難しい」だけで「理解できない」わけじゃないならたぶん前章まで一応の理解はできてるんじゃないかな。
256デフォルトの名無しさん
2020/12/02(水) 12:39:58.54ID:2sTDa/BO 継続渡しスタイルに書き換える方法がわからないではなくて継続渡しスタイルに書き換える意味がわからないからかな?
257はちみつ餃子 ◆8X2XSCHEME
2020/12/02(水) 13:45:58.76ID:wCsCmSK2 ああ。 なるほど。
継続渡し形式でプログラムを書くことは実際にまず無いし便利でもないので
その点では意味不明と感じられても仕方がないことではあるな。
後の話 (第一級継続) に繋がる前振りだと思うので、
この時点ではパズルとでも思ってとりあえずこなすしかないわ。
継続渡し形式でプログラムを書くことは実際にまず無いし便利でもないので
その点では意味不明と感じられても仕方がないことではあるな。
後の話 (第一級継続) に繋がる前振りだと思うので、
この時点ではパズルとでも思ってとりあえずこなすしかないわ。
258デフォルトの名無しさん
2020/12/02(水) 22:18:09.20ID:3rT4yRJc259256
2020/12/02(水) 22:40:35.57ID:2sTDa/BO 俺はsicpでcall-cc出てきてもさっぱり理解できなかったけど、
onlispで継続の実装を読んでやっと理解できた。
継続でできることってのは超高性能goto(?)が使えるようになることなんだけど、
そのためには継続渡しスタイルで今までの状態(実際はクロージャだけど)の全部または一部を渡して計算をしていくんだよ。
渡されたクロージャのどれかを呼び出す事によって以前の状態に復帰できる。
みたいなことだったと思う。空覚えなんで誰か突っ込んでね。
それと本のわからんところのコードを貼れば誰か解説してくれんじゃない。
onlispで継続の実装を読んでやっと理解できた。
継続でできることってのは超高性能goto(?)が使えるようになることなんだけど、
そのためには継続渡しスタイルで今までの状態(実際はクロージャだけど)の全部または一部を渡して計算をしていくんだよ。
渡されたクロージャのどれかを呼び出す事によって以前の状態に復帰できる。
みたいなことだったと思う。空覚えなんで誰か突っ込んでね。
それと本のわからんところのコードを貼れば誰か解説してくれんじゃない。
260デフォルトの名無しさん
2020/12/02(水) 22:45:58.51ID:2sTDa/BO 超高性能gotoって書いてるのは普通の言語のgotoって同じ関数内でしかジャンプできないんだけど、
継続なら安全に関数間でもジャンプできるっていう意味。
継続なら安全に関数間でもジャンプできるっていう意味。
261デフォルトの名無しさん
2020/12/02(水) 22:48:34.44ID:2sTDa/BO 継続はわかってしまえば当たり前でどこにでも存在してるんだけど、
継続を考えたやつは本当頭いいわとおもった。
継続を考えたやつは本当頭いいわとおもった。
262はちみつ餃子 ◆8X2XSCHEME
2020/12/02(水) 23:20:42.42ID:wCsCmSK2 >>258
「プログラミング言語 Scheme」や「プログラミング Gauche」でもそういう手順で説明されている。
ネット上で見つかる解説でもよくあるパターン。
http://www.shido.info/lisp/scheme_cc.html
http://www.nct9.ne.jp/m_hiroi/func/abcscm20.html
ようするに定番なんですわ……。
「プログラミング言語 Scheme」や「プログラミング Gauche」でもそういう手順で説明されている。
ネット上で見つかる解説でもよくあるパターン。
http://www.shido.info/lisp/scheme_cc.html
http://www.nct9.ne.jp/m_hiroi/func/abcscm20.html
ようするに定番なんですわ……。
263デフォルトの名無しさん
2020/12/03(木) 00:08:17.53ID:BSRv8eBD264デフォルトの名無しさん
2020/12/03(木) 12:12:09.32ID:vc9+WZu6 Landin's J operator の糖衣みたいなもんじゃ?
call-ccって.
call-ccって.
265デフォルトの名無しさん
2020/12/03(木) 14:15:21.78ID:sf+VFKLQ 普段cl書きなんでこのまま動くか知らんが、雰囲気はたぶん
(define call/cc (lambda (func) (func (J (lambda x x)))
(define call/cc (lambda (func) (func (J (lambda x x)))
266デフォルトの名無しさん
2020/12/03(木) 19:48:43.98ID:1MHSKMz8 >>258
継続渡しの初期の用例にヒューイットのアクター理論があるように
並行性が絡むと有り難いこともあるけど
Schemeの規格にそういうのがないから
Gaucheを使ったウェブアプリサーバーにKahuaってのがあったけど
あれが継続渡しを使ってたはず
継続渡しの初期の用例にヒューイットのアクター理論があるように
並行性が絡むと有り難いこともあるけど
Schemeの規格にそういうのがないから
Gaucheを使ったウェブアプリサーバーにKahuaってのがあったけど
あれが継続渡しを使ってたはず
267デフォルトの名無しさん
2020/12/04(金) 22:12:04.78ID:9AUT9QCq エンジニアが教えるの下手くそな理由を論理的に解説してみた【教育の本質】
https://www.youtube.com/watch?v=3YwyYSj-k2s
派遣エージェントの言う事は9割ウソである理由【カモられない方法】
https://www.youtube.com/watch?v=8DxQFLAuFqo&t=231s
IT業界のヤバすぎる落とし穴5選
https://www.youtube.com/watch?v=WPPCJ4o-mpA
絶対にエンジニアになってはいけない人とは【ハイクラス人材】
https://www.youtube.com/watch?v=kKUC7rZRUtc
りゅうけんKENTAマナブは怪しいアフィ勢だとベテランエンジニア(笑)に言われるらしいwww
https://www.youtube.com/watch?v=Cp7ByHiFk6Y
【個人で稼ぐ】会社を辞める前に習得しておくべきスキル5選
https://www.youtube.com/watch?v=8WB4O1V6YLg
【聞いてください】「会社員」という働き方の本当のヤバさ
https://www.youtube.com/watch?v=HbIAACbQkPc
サラリーマンが知らないフリーランスの真実
https://www.youtube.com/watch?v=vxVG8eAQbsc
https://www.youtube.com/watch?v=3YwyYSj-k2s
派遣エージェントの言う事は9割ウソである理由【カモられない方法】
https://www.youtube.com/watch?v=8DxQFLAuFqo&t=231s
IT業界のヤバすぎる落とし穴5選
https://www.youtube.com/watch?v=WPPCJ4o-mpA
絶対にエンジニアになってはいけない人とは【ハイクラス人材】
https://www.youtube.com/watch?v=kKUC7rZRUtc
りゅうけんKENTAマナブは怪しいアフィ勢だとベテランエンジニア(笑)に言われるらしいwww
https://www.youtube.com/watch?v=Cp7ByHiFk6Y
【個人で稼ぐ】会社を辞める前に習得しておくべきスキル5選
https://www.youtube.com/watch?v=8WB4O1V6YLg
【聞いてください】「会社員」という働き方の本当のヤバさ
https://www.youtube.com/watch?v=HbIAACbQkPc
サラリーマンが知らないフリーランスの真実
https://www.youtube.com/watch?v=vxVG8eAQbsc
268デフォルトの名無しさん
2020/12/07(月) 13:18:23.95ID:kze+rPTU 結局call/ccは実装読んだ方が早い
269デフォルトの名無しさん
2020/12/08(火) 00:25:26.96ID:g/rTchWW そういう発想はschemeっぽくないと思う
これはコンピュータにかける魔法言語なんだからぁ
これはコンピュータにかける魔法言語なんだからぁ
270デフォルトの名無しさん
2020/12/08(火) 10:24:39.14ID:7buWiz9t schemeは知らんがclでcall/ccエミュってるぞ、こういうのは勉強になる
閲覧無料の論文もたくさん出てくるし、確かrosetta code(だったか)に少し残念だけど動く実装載ってた気がする
デフォでdynamic scopeのclの方が(エミュる)のはむしろ簡単な気がする
閲覧無料の論文もたくさん出てくるし、確かrosetta code(だったか)に少し残念だけど動く実装載ってた気がする
デフォでdynamic scopeのclの方が(エミュる)のはむしろ簡単な気がする
271デフォルトの名無しさん
2020/12/10(木) 03:16:14.79ID:FVBY7yTa clデフォでdynamic scopeじゃないな
どういうcps実装なん
どういうcps実装なん
272デフォルトの名無しさん
2020/12/10(木) 19:52:56.52ID:m5YUCflP dr.schemeを起動したらada lavelaceが表示された。12月10日が誕生日らしい。
273デフォルトの名無しさん
2020/12/18(金) 00:23:57.39ID:xE2tdWzM 3月にサスマンの新しい本が出ますね
274デフォルトの名無しさん
2020/12/18(金) 00:35:54.39ID:wHl77nxB Software Design for Flexibility
How to Avoid Programming Yourself into a Corner
https://mitpress.mit.edu/books/software-design-flexibility
How to Avoid Programming Yourself into a Corner
https://mitpress.mit.edu/books/software-design-flexibility
276デフォルトの名無しさん
2021/01/02(土) 09:30:41.51ID:DXffwUjS 頑張れ
277はちみつ餃子 ◆8X2XSCHEME
2021/01/02(土) 12:55:01.66ID:rf+zWHQf 2018 年の話題へスレ内でアンカーできるあたり、だいぶん進みの遅いスレだなぁ……
ところで先月、 Gauche の 0.9.10 がリリースされたよ。
ところで先月、 Gauche の 0.9.10 がリリースされたよ。
278デフォルトの名無しさん
2021/01/11(月) 12:28:40.23ID:evx8yw3j 最近Clojureをさわって思ったんだけど、コンスって必要?ただのリストじゃだめなん?
279デフォルトの名無しさん
2021/01/11(月) 22:00:08.80ID:TgqHKx3G 最近はlistと言いつつ狭義のlist(linked)じゃなくlinked arrayな事が多いけどclosureもそれかな?(触ってないごめん
(三十年前の言語だけど)Pythonのコード読んだけどそうだったはず
計算量の議論なんかだとlinked listとarrayは一長一短ってことになってるが、アーキテクチャと殆どのデータの性質によって連結配列が実質万能なんで仕方ないね
抽象データ型としてcons/car/cdrというインターフェイスを提供してるなら十分lispだよ
consがなんでそんな大事なのかというと、普通に使われる抽象データ型の中では最も表現力が高いこと
単に自由に伸ばせるリストのようなモノでは、構文上バイナリツリーより複雑な構造は書きにくい(ポインタを駆使しない限り)
consが提供されていれば自然に平面DAGが、そしてちょっと読みにくくなる程度で任意のグラフが表現できる
化学構造やグラフをconsで扱ってるけどほんと便利だよ
(三十年前の言語だけど)Pythonのコード読んだけどそうだったはず
計算量の議論なんかだとlinked listとarrayは一長一短ってことになってるが、アーキテクチャと殆どのデータの性質によって連結配列が実質万能なんで仕方ないね
抽象データ型としてcons/car/cdrというインターフェイスを提供してるなら十分lispだよ
consがなんでそんな大事なのかというと、普通に使われる抽象データ型の中では最も表現力が高いこと
単に自由に伸ばせるリストのようなモノでは、構文上バイナリツリーより複雑な構造は書きにくい(ポインタを駆使しない限り)
consが提供されていれば自然に平面DAGが、そしてちょっと読みにくくなる程度で任意のグラフが表現できる
化学構造やグラフをconsで扱ってるけどほんと便利だよ
280デフォルトの名無しさん
2021/01/11(月) 23:51:15.24ID:TgqHKx3G 書きにくい/やすい、ってのは環や分岐がcarとcdrとconsだけで書けるって意味ね
これらのアクセサが提供されていない言語、例えはPythonやcではリストのインデックスに対応する参照/ポインタを明示的に取り出して記録し、アドレスを格納する必要がある
またアルゴリズムにかける時に素の型とポインタ型を区別して場合分けする必要まである
そのまま文字列として吐くのも実装しなくていいし(リンク先のインデックス表示が読みやすいとは言わないが)
PythonなんかだとオブジェクトがリッチなのでnetworkXのような巨大なライブラリを使えば木を超えた表現も自然にかけるので、一時浮気をしたが…
形式言語の分野だともう線形な文字列や二分木の括弧文法は研究され尽くしてるので、グラフ文法なんかが最近流行ってlisp系言語で論文書かれてるね
これらのアクセサが提供されていない言語、例えはPythonやcではリストのインデックスに対応する参照/ポインタを明示的に取り出して記録し、アドレスを格納する必要がある
またアルゴリズムにかける時に素の型とポインタ型を区別して場合分けする必要まである
そのまま文字列として吐くのも実装しなくていいし(リンク先のインデックス表示が読みやすいとは言わないが)
PythonなんかだとオブジェクトがリッチなのでnetworkXのような巨大なライブラリを使えば木を超えた表現も自然にかけるので、一時浮気をしたが…
形式言語の分野だともう線形な文字列や二分木の括弧文法は研究され尽くしてるので、グラフ文法なんかが最近流行ってlisp系言語で論文書かれてるね
281デフォルトの名無しさん
2021/01/12(火) 00:03:51.23ID:XqNkUArk 連投してごめんだけど、環や分岐がポインタ使わず自在に描けるのはかしこいsetfの寄与もある、って書き忘れてた(schemeはset-cdr!だっけ)
念のため
念のため
282デフォルトの名無しさん
2021/01/13(水) 22:45:17.14ID:c60O+Iz7 >>279
興味深い内容をありがとう
ちょこちょこ遊んでいるだけなので到底そこまで使いこなせる気がしないけど、
データをプログラム中にストレートに表現して操作できるというのはよく分かる
他の言語だとデータを保持するためにわざわざクラス設計からしないと
いけないような強迫観念にかられるけど、lispはそういう気にならない
興味深い内容をありがとう
ちょこちょこ遊んでいるだけなので到底そこまで使いこなせる気がしないけど、
データをプログラム中にストレートに表現して操作できるというのはよく分かる
他の言語だとデータを保持するためにわざわざクラス設計からしないと
いけないような強迫観念にかられるけど、lispはそういう気にならない
283デフォルトの名無しさん
2021/01/14(木) 12:13:04.15ID:/NlgSZrU データ型を定義しないのはトイプログラムだけだけどな
Lispはリストだけ使うのが通だとか善意で広めないでくれよ
Lispはリストだけ使うのが通だとか善意で広めないでくれよ
284はちみつ餃子 ◆8X2XSCHEME
2021/01/14(木) 22:43:13.17ID:9qLPLWCT (カッチリした型を中心にする言語に比べれば) 最初はラフに
書き始められるというのはあると思うよ。
でも、そのままだと千行くらいの規模でももうだいぶんキツいんじゃないかな。
人によってはコードを書く腕力 (?) というか強引に行けちゃう人もいるけど、
雑に試行錯誤できるということとそこから部品として確立するのは別の段階なので、
試行錯誤で弄ってるときと同じノリでどんどん拡大していったら
すぐわけわからんようになる。
世間で思われているよりは型定義はすると私も思う。
書き始められるというのはあると思うよ。
でも、そのままだと千行くらいの規模でももうだいぶんキツいんじゃないかな。
人によってはコードを書く腕力 (?) というか強引に行けちゃう人もいるけど、
雑に試行錯誤できるということとそこから部品として確立するのは別の段階なので、
試行錯誤で弄ってるときと同じノリでどんどん拡大していったら
すぐわけわからんようになる。
世間で思われているよりは型定義はすると私も思う。
レスを投稿する
ニュース
- 中国「国連安保理の許可なしに日本攻撃可能」 Xで旧敵国条項に言及… ★2 [BFU★]
- 立憲・野田代表が主張 台湾有事答弁で「質問者批判は筋違い」「答弁がおかしい」「高市総理迎合のネット世論は危険」★4 [♪♪♪★]
- 【千葉】コンビニに尿入りペットボトル並べた疑い、26歳男「むしゃくしゃして」…購入した客が飲もうとしたところ臭いに違和感 [ぐれ★]
- 中国官製報道「日本経済はもう持たない」にネット民ツッコミ「ニュースだけ見てたら日本はもう百回くらい爆発してる」 [1ゲットロボ★]
- 日中関係悪化で「日本からもうすぐパンダがいなくなる」 中国SNSでトレンド1位に★2 [♪♪♪★]
- 【STARTO ENTERTAINMENT】timelesz、メンバーの不適切言動を謝罪「不用意かつモラルに反した発言であった」 全員の署名入りでコメント [Ailuropoda melanoleuca★]
- 【実況】博衣こよりのえちえちホロ分かり手クイズ🧪🏴‍☠🌸 ★2
- 【実況】博衣こよりのえちえちホロ分かり手クイズ🧪🏴‍☠🌸
- 【高市悲報】中国「国連安保理の許可なしに日本を攻撃可能だ」 [115996789]
- 【高市悲報】中国「国連安保理の許可なしに日本を攻撃可能だ」★2 [115996789]
- 日中戦争起きたら5日で自衛隊壊滅するらしい。じゃあ徴兵も無いし、俺等が必死になって反対してやる理由なくね? [237216734]
- 中国SNS「メディアがやたら日本が苦境だって報じてるけど本当?」→「嘘ですよ。ヤフコメを翻訳してみてください」 バレてしまうwwww [271912485]
