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
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 (カッチリした型を中心にする言語に比べれば) 最初はラフに
書き始められるというのはあると思うよ。
でも、そのままだと千行くらいの規模でももうだいぶんキツいんじゃないかな。
人によってはコードを書く腕力 (?) というか強引に行けちゃう人もいるけど、
雑に試行錯誤できるということとそこから部品として確立するのは別の段階なので、
試行錯誤で弄ってるときと同じノリでどんどん拡大していったら
すぐわけわからんようになる。
世間で思われているよりは型定義はすると私も思う。
書き始められるというのはあると思うよ。
でも、そのままだと千行くらいの規模でももうだいぶんキツいんじゃないかな。
人によってはコードを書く腕力 (?) というか強引に行けちゃう人もいるけど、
雑に試行錯誤できるということとそこから部品として確立するのは別の段階なので、
試行錯誤で弄ってるときと同じノリでどんどん拡大していったら
すぐわけわからんようになる。
世間で思われているよりは型定義はすると私も思う。
285デフォルトの名無しさん
2021/01/15(金) 01:43:39.29ID:Hai3vgIl そういう後付けのボイラープーレトにはCLOSやジェネリックよりコンパイラマクロが便利ね
286デフォルトの名無しさん
2021/01/15(金) 21:24:11.84ID:6113KkR6 ここでいう型定義はdeftypeのことを指しているのでしょうか
287はちみつ餃子 ◆8X2XSCHEME
2021/01/16(土) 09:43:26.51ID:uH9KWN6j Common Lisp でなら deftype とか defclass とかいったものを使うことになるんかな。
私は Scheme しか知らんからよくわからんけど。
私は Scheme しか知らんからよくわからんけど。
288デフォルトの名無しさん
2021/01/17(日) 08:06:30.53ID:MtDeBO+C289デフォルトの名無しさん
2021/01/17(日) 11:47:31.37ID:9ajuvsmH >>288
defgeneric/methodは勢いで書き上げた触りたくないコードに機能追加するにはコード触らなくちゃならない
型の付いていない複雑なconsはどうせdestructuring-bindして振り分けるしかないんだから分けてdefmethodする利点もない
define-compiler-macroなら一切既存のコードに触れる必要は無いからすごく便利だよ
既存のライブラリに手を入れたいけど、直接書き換えるとアップグレードで無かった事にされるから嫌、って時にも活躍する
もちろんリファクタリング出来るならした方がいいけど、取り敢えず動けば良い時の話ね
defgeneric/methodは勢いで書き上げた触りたくないコードに機能追加するにはコード触らなくちゃならない
型の付いていない複雑なconsはどうせdestructuring-bindして振り分けるしかないんだから分けてdefmethodする利点もない
define-compiler-macroなら一切既存のコードに触れる必要は無いからすごく便利だよ
既存のライブラリに手を入れたいけど、直接書き換えるとアップグレードで無かった事にされるから嫌、って時にも活躍する
もちろんリファクタリング出来るならした方がいいけど、取り敢えず動けば良い時の話ね
290デフォルトの名無しさん
2021/01/17(日) 12:14:47.80ID:fZnccXPg この場合、 alist はどっち側に分類されるのかな…
個人的にはだいたい alist で済ませてるけど。
個人的にはだいたい alist で済ませてるけど。
291はちみつ餃子 ◆8X2XSCHEME
2021/01/17(日) 12:16:55.56ID:ERThMJgw Lisp 的なスタイルだとかなり短いサイクルで開発が進むので、
リファクタリングしないまま手の付けられないほどグダグダになった状態は単にサイクルを
回すのが下手なように思うんだけど。
まあ上手くいってないときでもどうにかする方法があるのはありがたい話ではあるけどさ。
リファクタリングしないまま手の付けられないほどグダグダになった状態は単にサイクルを
回すのが下手なように思うんだけど。
まあ上手くいってないときでもどうにかする方法があるのはありがたい話ではあるけどさ。
292デフォルトの名無しさん
2021/01/17(日) 12:22:48.91ID:16Ro+9sx 既存のコードには手を入れず振る舞いだけに着目して付け足して行くってスタイルはaspect oriented programmingとか言うんだっけな
まあ盲で付け足してゆく事と同義ではないが
まあ盲で付け足してゆく事と同義ではないが
293デフォルトの名無しさん
2021/01/17(日) 12:36:52.37ID:16Ro+9sx >>290
plistの方が好きだな、pprintでkey-valのカラムに並べられるし、alistが要求されれば一段flattenすれば済む
consの数も同じだし好みでは
ただvalがlistだと(a . (b c))=(a b c)とformatされてしまうので(a . ((b c))) = (a . (b c))と書いてる
aとリストのペアなので意味的にも正しいはず
plistの方が好きだな、pprintでkey-valのカラムに並べられるし、alistが要求されれば一段flattenすれば済む
consの数も同じだし好みでは
ただvalがlistだと(a . (b c))=(a b c)とformatされてしまうので(a . ((b c))) = (a . (b c))と書いてる
aとリストのペアなので意味的にも正しいはず
294289
2021/01/17(日) 12:38:34.26ID:16Ro+9sx 最後は(a (b c))が正しい、.が余計だった
なんかid変わってたけど289です
なんかid変わってたけど289です
295289
2021/01/17(日) 12:54:42.47ID:16Ro+9sx 真意を掴めてなかった感がある
alist-pとplist-pを定義してる、よく見るし受け入れられてるイディオムだと思う
deftypeしておくといい
すると振り分けをdefmethodに任せる事が出来る
alist-pとplist-pを定義してる、よく見るし受け入れられてるイディオムだと思う
deftypeしておくといい
すると振り分けをdefmethodに任せる事が出来る
296デフォルトの名無しさん
2021/01/17(日) 22:27:16.25ID:MtDeBO+C deftypeしたtypeはclassじゃないからdefmethodできない
コンパイラマクロはプログラムの意味をかえたらいかんし
パッチするなら別定義のファイルを追加でloadすれば上書きされるのでコンパイラマクロする意味0
嘘ノウハウいらないです・・・
コンパイラマクロはプログラムの意味をかえたらいかんし
パッチするなら別定義のファイルを追加でloadすれば上書きされるのでコンパイラマクロする意味0
嘘ノウハウいらないです・・・
297デフォルトの名無しさん
2021/01/17(日) 23:38:13.35ID:4VqziDiv >>296
そうだっけ、ごめん確認してきます
そうだっけ、ごめん確認してきます
298デフォルトの名無しさん
2021/01/20(水) 01:48:17.88ID:9Gv1v6nA alist vs plist はalistの方がassocが(lisp的な意味で)簡潔になるから?で一票
assoc[x;y] = eq[caar[y];x] → cadar[y];T → assoc[x;cdr[y]]]
M式、[x→y; ...はapplyによってS式(QUOTE (COND (x y ) …に展開される
http://www-formal.stanford.edu/jmc/recursive.html
pdf17p
evalのボトムケースでもある大事なassoc、俺にはplist版は思いつかない
evenpが欲しいところだけど算術の定義がまだだし…
clのcx^nrがn=4までなのもcaddarまで使ってるからだろうかね
assoc[x;y] = eq[caar[y];x] → cadar[y];T → assoc[x;cdr[y]]]
M式、[x→y; ...はapplyによってS式(QUOTE (COND (x y ) …に展開される
http://www-formal.stanford.edu/jmc/recursive.html
pdf17p
evalのボトムケースでもある大事なassoc、俺にはplist版は思いつかない
evenpが欲しいところだけど算術の定義がまだだし…
clのcx^nrがn=4までなのもcaddarまで使ってるからだろうかね
299デフォルトの名無しさん
2021/01/20(水) 01:59:40.44ID:9Gv1v6nA ffとかappqとか見慣れない面白関数出てきて面白かった
first/restは単なるエイリアスでなくL-exp(線形リスプ?)における相似物としてちゃんと別に定義されてるとかも
あとpairがpairlisに改称した理由とか気になってる、次は1.5マニュアル読むか
小並感
first/restは単なるエイリアスでなくL-exp(線形リスプ?)における相似物としてちゃんと別に定義されてるとかも
あとpairがpairlisに改称した理由とか気になってる、次は1.5マニュアル読むか
小並感
300デフォルトの名無しさん
2021/01/22(金) 02:54:51.68ID:GlnM3g/q consesのカッコのネストを無視して初めのシンボルを返すffは、左端の簡約だけで導出が決まる特性を持つコンビネータ計算(SKなど)にとても重宝する関数だよ
applyを.と見なせば(論理学記法で)SKx = ((S K) x)はcons((S . K) . x)と等価
.
/ \
. x
/ \
S K
(ff ((S . K) . x)) ; => S
ffでSを得て、そこへのaccessor は(dfs 'S '((S . K) . x))で4行程度で実装出来る、carで潜る時にはpush 'car、cdrならpush 'car、その枝で見つからなかったときにはpopでSへのアクセサ(car car)が得られて、そのノードを公式に従ってsetf '公式すれば導出完了
lispと言えばラムダってイメージあるとおもうけど、むしろコンビータと相性が良い、特にclのラムダは細かなコントロールを求めた代償として明示的なapply/funcallが必要だからなあ
あとdotprintとか定義しとくと便利ね
applyを.と見なせば(論理学記法で)SKx = ((S K) x)はcons((S . K) . x)と等価
.
/ \
. x
/ \
S K
(ff ((S . K) . x)) ; => S
ffでSを得て、そこへのaccessor は(dfs 'S '((S . K) . x))で4行程度で実装出来る、carで潜る時にはpush 'car、cdrならpush 'car、その枝で見つからなかったときにはpopでSへのアクセサ(car car)が得られて、そのノードを公式に従ってsetf '公式すれば導出完了
lispと言えばラムダってイメージあるとおもうけど、むしろコンビータと相性が良い、特にclのラムダは細かなコントロールを求めた代償として明示的なapply/funcallが必要だからなあ
あとdotprintとか定義しとくと便利ね
レスを投稿する
ニュース
- 中国「国連安保理の許可なしに日本攻撃可能」 Xで旧敵国条項に言及… ★6 [BFU★]
- 【千葉】コンビニに尿入りペットボトル並べた疑い、26歳男「むしゃくしゃして」…購入した客が飲もうとしたところ臭いに違和感 [ぐれ★]
- 【サッカー】U-17W杯 日本代表、無念のベスト8敗退… チャンスは多く作ったが仕留め切れず オーストリアに0-1で敗戦 [冬月記者★]
- 高市首相が異例の“買春行為の罰則化の検討”に言及…世界では“買う側”に罰則を科すのが先進国のスタンダード ★2 [樽悶★]
- 中国官製報道「日本経済はもう持たない」にネット民ツッコミ「ニュースだけ見てたら日本はもう百回くらい爆発してる」 [1ゲットロボ★]
- 植田日銀総裁 「円安進行が物価高を起こしている」 ★4 [お断り★]
- 現役JKのお茶会スレ( ¨̮ )︎︎𖠚ᐝ157
- 現役JKのお茶会スレ( ¨̮ )︎︎𖠚ᐝ158
- 【ぺこ専🐰】なんG 兎田ぺこら突発配信実況スレ🏡【ホロライブ▶】
- NHKニュースウオッチ9「日本側は対話にオープンな姿勢で安定した日中関係を築きたい考えなのに中国が意固地で糸口が見いだせない」 [904151406]
- WTO世界のコメ🌾価格は記録的な豊作により1年で35%下落(5キロで200円程度)と発表※日本は1年で3倍値上がり [709039863]
- 日中戦争起きたら5日で自衛隊壊滅するらしい。じゃあ徴兵も無いし、俺等が必死になって反対してやる理由なくね? [237216734]
