Lisp Schemeスレでは恥ずかしくて聞けないようなことを質問したり、
Lisp Schemeスレの話題は高度すぎて気後れする人が話しあったり。
それ以外でもCommon Lispについての話題なら歓迎します。
ま、ゆっくりやりましょう。
「いいものの本質は、いかなる時代においても変わらない」byパワーズ
■前スレ
【入門】Common Lisp その10【質問よろず】
http://peace.2ch.net/test/read.cgi/tech/1361341876/
■Wiki
http://wiki.fdiary.net/lisp/ (id:guest pass:cl)
http://cl.cddddr.org/
http://tips.lisp-users.org/common-lisp/
【入門】Common Lisp その11【質問よろず】
レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん
2014/09/21(日) 22:49:21.73ID:FJokPHUt926デフォルトの名無しさん
2021/03/21(日) 15:43:10.50ID:kaM5HUhB >>925
そうでした
killed:9の問題は忘れてました
? (openmcl-socket:resolve-address :HOST "nicovideo.jp" :PORT 443 :SOCKET-TYPE :STREAM)
#<IP4-SOCKET-ADDRESS 133.152.43.29:443>
/usr/lib参照の設定だとこうなりますね
そうでした
killed:9の問題は忘れてました
? (openmcl-socket:resolve-address :HOST "nicovideo.jp" :PORT 443 :SOCKET-TYPE :STREAM)
#<IP4-SOCKET-ADDRESS 133.152.43.29:443>
/usr/lib参照の設定だとこうなりますね
927デフォルトの名無しさん
2021/03/21(日) 16:05:38.47ID:37bhr7Il >>926
ほんと分かったところで何もできないけど、とりあえず確認ありがとう
ほんと分かったところで何もできないけど、とりあえず確認ありがとう
928デフォルトの名無しさん
2021/03/21(日) 17:17:04.97ID:kaM5HUhB いえいえそんな
いつもありがとうございます・・
いつもありがとうございます・・
929882
2021/03/21(日) 19:09:29.26ID:rYTEFRj1 >>925-926
俺の環境でも "Killed: 9" が出る現象が再現できた。
IPv6 ソケットを開くのにあえて失敗させた後、 ファイルディスクリプタを開きまくっていると ccl が死ぬっぽい。
俺が見つけた再現手順は以下。暇なら 925 や 926 も再現できるか試してみてほしい。
1. asdf のキャッシュを消す
~/.cache/common-lisp 以下を全削除。
2. ccl を起動し、以下の順に実行
(ql:quickload "usocket")
(usocket:socket-connect "ja.wikipedia.org" 65500) ; これは connection refused になって失敗する。 :pop で abort して抜ける。
(usocket:socket-connect "nicovideo.jp" 443)
(ql:quickload "dexador") ; I/Oが重い処理ならなんでもいい
最後の ql:quickload の箇所はI/Oが多い処理ならなんでもいいようで、俺はこれで "Killed: 9" になるのが確認できた。
まだ調査中だけど、この現象は usocket か ccl のバグっぽい気がする。
もう少し調べてみて必要なら本家に報告するわ。
俺の環境でも "Killed: 9" が出る現象が再現できた。
IPv6 ソケットを開くのにあえて失敗させた後、 ファイルディスクリプタを開きまくっていると ccl が死ぬっぽい。
俺が見つけた再現手順は以下。暇なら 925 や 926 も再現できるか試してみてほしい。
1. asdf のキャッシュを消す
~/.cache/common-lisp 以下を全削除。
2. ccl を起動し、以下の順に実行
(ql:quickload "usocket")
(usocket:socket-connect "ja.wikipedia.org" 65500) ; これは connection refused になって失敗する。 :pop で abort して抜ける。
(usocket:socket-connect "nicovideo.jp" 443)
(ql:quickload "dexador") ; I/Oが重い処理ならなんでもいい
最後の ql:quickload の箇所はI/Oが多い処理ならなんでもいいようで、俺はこれで "Killed: 9" になるのが確認できた。
まだ調査中だけど、この現象は usocket か ccl のバグっぽい気がする。
もう少し調べてみて必要なら本家に報告するわ。
930925
2021/03/21(日) 19:41:51.58ID:37bhr7Il >>929 同じ手順で "Killed: 9" 再現しました
環境は
Clozure CL: Version 1.12 (v1.12-39-g6c1a9458) DarwinX8664
OS: macOS High Sierra ver. 10.13.4
~❦:ulimit -n
256
ファイルディスプリタの(プロセス単位の?)上限は、256
少ないようには見えませんが、CCLが処理しきれる上限はもっと低いんですかねえ
環境は
Clozure CL: Version 1.12 (v1.12-39-g6c1a9458) DarwinX8664
OS: macOS High Sierra ver. 10.13.4
~❦:ulimit -n
256
ファイルディスプリタの(プロセス単位の?)上限は、256
少ないようには見えませんが、CCLが処理しきれる上限はもっと低いんですかねえ
931デフォルトの名無しさん
2021/03/21(日) 20:01:40.07ID:kaM5HUhB932882
2021/03/21(日) 21:05:00.56ID:rYTEFRj1 >>930
>>931
ありがとう。これだけ再現するってことは本当にバグを見つけたのかもね。
俺の方では、 USOCKET:SOCKET-CONNECT で接続に失敗した時の backtrace を見て、 abort して抜ける時にどこかの unwind-protect で走るコードがおかしいんじゃないかと思って眺めてみてる。
で、そういう unwind-protect があるのはこの ccl::make-tcp-socket 関数だけだった:
ttps://github.com/Clozure/ccl/blob/6c1a9458f7a5437b73ec227e989aa5b825f32fd3/library/sockets.lisp#L647-L692
上の再現手順で Connection Refused にしたとき、この関数の688行目でエラーが起きるんだが、その場合 unwind-protect の効果で692行目の処理で FD が閉じられる。一方で、この FD は663行目の処理で socket 構造体の作成にも使われていて、その socket 構造体は閉じられていない。
ここからは完全に俺の推測。
Connection Refused 後の unwind-protect で FD が閉じられた後、次の処理でたまたま同じ数字のFDが開かれ、その直後にこの放置された socket 構造体がGCに回収されるときに何か起きてるんじゃないかと思う。 IPv6 の struct sockaddr_in6 と IPv4 の struct sockaddr_in を取り違えて free() する・・的な。
まあそんな今更なバグが ccl にあるとも思えないので、全く推測の域を出ないけど。
俺も普段使いはSBCLで、CCLのソースを見るのは初めてだから時間がかかると思うけど、もう少し調べてみるわ。
>>931
ありがとう。これだけ再現するってことは本当にバグを見つけたのかもね。
俺の方では、 USOCKET:SOCKET-CONNECT で接続に失敗した時の backtrace を見て、 abort して抜ける時にどこかの unwind-protect で走るコードがおかしいんじゃないかと思って眺めてみてる。
で、そういう unwind-protect があるのはこの ccl::make-tcp-socket 関数だけだった:
ttps://github.com/Clozure/ccl/blob/6c1a9458f7a5437b73ec227e989aa5b825f32fd3/library/sockets.lisp#L647-L692
上の再現手順で Connection Refused にしたとき、この関数の688行目でエラーが起きるんだが、その場合 unwind-protect の効果で692行目の処理で FD が閉じられる。一方で、この FD は663行目の処理で socket 構造体の作成にも使われていて、その socket 構造体は閉じられていない。
ここからは完全に俺の推測。
Connection Refused 後の unwind-protect で FD が閉じられた後、次の処理でたまたま同じ数字のFDが開かれ、その直後にこの放置された socket 構造体がGCに回収されるときに何か起きてるんじゃないかと思う。 IPv6 の struct sockaddr_in6 と IPv4 の struct sockaddr_in を取り違えて free() する・・的な。
まあそんな今更なバグが ccl にあるとも思えないので、全く推測の域を出ないけど。
俺も普段使いはSBCLで、CCLのソースを見るのは初めてだから時間がかかると思うけど、もう少し調べてみるわ。
933デフォルトの名無しさん
2021/03/21(日) 22:01:07.16ID:37bhr7Il あぁこれ Killed: 9 のたびにクラッシュログが残りますね
~/Library/Logs/DiagnosticReports/dx86cl64_2021-03-21-213811_Sierra.crash
Process: dx86cl64 [58558]
... .. .
Exception Type: EXC_GUARD
Exception Codes: 0x4000000100000006, 0x542c042077498a54
Exception Subtype: GUARD_TYPE_FD, id=0x542c042077498a54, fd=6, flavor=0x00000001 (CLOSE)
... .. .
さっぱり意味は分からないけどシステムを怒らせたっぽい事は伝わってきます
禁忌に触れようとした的な?
~/Library/Logs/DiagnosticReports/dx86cl64_2021-03-21-213811_Sierra.crash
Process: dx86cl64 [58558]
... .. .
Exception Type: EXC_GUARD
Exception Codes: 0x4000000100000006, 0x542c042077498a54
Exception Subtype: GUARD_TYPE_FD, id=0x542c042077498a54, fd=6, flavor=0x00000001 (CLOSE)
... .. .
さっぱり意味は分からないけどシステムを怒らせたっぽい事は伝わってきます
禁忌に触れようとした的な?
934882
2021/03/22(月) 17:08:00.67ID:VLZSjRi0 パッチ書いてプルリク出してみた。
https://github.com/Clozure/ccl/pull/362
>>933 のいうようにクラッシュレポート見たら、俺の環境でも close で死んでた。
色々調べたけど、どうやら CCL の GC が close 済みのFDをもう一度 close しようとすると死ぬっぽい。
(ただ、close 済み FD を二回 close する簡単な C プログラム書いて実験しても、 EBADF が返るくらいで kill されたりはしないんだよね・・このあたり微妙。)
そんなわけで close 済み FD を参照する一時オブジェクトをエラー時に解放するよう unwind-protect したら直ったっぽく見えたのでPRにしてみた。
(932 では struct sockaddr_in が・・とかヌカしてたけど、さすがにこれは無かった。俺の杞憂だったわ。)
https://github.com/Clozure/ccl/pull/362
>>933 のいうようにクラッシュレポート見たら、俺の環境でも close で死んでた。
色々調べたけど、どうやら CCL の GC が close 済みのFDをもう一度 close しようとすると死ぬっぽい。
(ただ、close 済み FD を二回 close する簡単な C プログラム書いて実験しても、 EBADF が返るくらいで kill されたりはしないんだよね・・このあたり微妙。)
そんなわけで close 済み FD を参照する一時オブジェクトをエラー時に解放するよう unwind-protect したら直ったっぽく見えたのでPRにしてみた。
(932 では struct sockaddr_in が・・とかヌカしてたけど、さすがにこれは無かった。俺の杞憂だったわ。)
935デフォルトの名無しさん
2021/03/22(月) 18:59:19.52ID:1u7lgsAW936デフォルトの名無しさん
2021/03/22(月) 21:16:42.30ID:5gvxkT8z >>934 あなたは偉い!
全く別件ですが詳しい方々に質問です
CCL で簡単な cocoa アプリを作ってみよう思い (require :cocoa) を評価すると Hemlock editor が立ち上がります
そのためのコンパイルとロードも毎回走ります
欲しいのは ns:ns-window とかなのに不要なエディタを除外したアプリは作れないのでしょうか?
全く別件ですが詳しい方々に質問です
CCL で簡単な cocoa アプリを作ってみよう思い (require :cocoa) を評価すると Hemlock editor が立ち上がります
そのためのコンパイルとロードも毎回走ります
欲しいのは ns:ns-window とかなのに不要なエディタを除外したアプリは作れないのでしょうか?
937デフォルトの名無しさん
2021/03/22(月) 23:32:09.69ID:5gvxkT8z Hemlock editor てのは Clozure CL64.app を立ち上げると出てくるのと似たようなもんです、というか違いが分かりません
そっちの場合は 初めから (require :cocoa) された状態になってます
慣れの問題かもしれませんが、入力補完もhistoryも効かないこのエディタは使いづらいです
快適な Emacs+slime で作業してるのに (require :cocoa) で余計なのが立ち上がる、なんなんだコレはと思ってしまいます
そっちの場合は 初めから (require :cocoa) された状態になってます
慣れの問題かもしれませんが、入力補完もhistoryも効かないこのエディタは使いづらいです
快適な Emacs+slime で作業してるのに (require :cocoa) で余計なのが立ち上がる、なんなんだコレはと思ってしまいます
938デフォルトの名無しさん
2021/03/23(火) 06:52:29.03ID:p/UYSc/L あのエディタは必要なのか必要でないのかよくわからないんですよね
examples/coco/ui-elements/howto.html とかを見ると
(in-package :ccl)
(setf my-window (#/alloc (@class ns-window)))
window生成できるってことなってるんですがエラーになるおかげで悩みました
これ(require “cocoa”)をしておけば問題なく生成できますね・・
ただ同ページの
(ns:with-ns-rect (r 100 100 400 300)
(#/initWithContentRect:styleMask:backing:defer:
my-window
r
(logior #$NSTitledWindowMask
#$NSClosableWindowMask
#$NSMiniaturizableWindowMask
#$NSResizableWindowMask)
#$NSBackingStoreBuffered
#$NO))
で初期化して表示できるとなってますがこちらでは動かないんですよね
色々とわかってないことが多いので地道に調べてます・・
examples/coco/ui-elements/howto.html とかを見ると
(in-package :ccl)
(setf my-window (#/alloc (@class ns-window)))
window生成できるってことなってるんですがエラーになるおかげで悩みました
これ(require “cocoa”)をしておけば問題なく生成できますね・・
ただ同ページの
(ns:with-ns-rect (r 100 100 400 300)
(#/initWithContentRect:styleMask:backing:defer:
my-window
r
(logior #$NSTitledWindowMask
#$NSClosableWindowMask
#$NSMiniaturizableWindowMask
#$NSResizableWindowMask)
#$NSBackingStoreBuffered
#$NO))
で初期化して表示できるとなってますがこちらでは動かないんですよね
色々とわかってないことが多いので地道に調べてます・・
939936
2021/03/24(水) 14:30:11.89ID:aesCgSqt あれから試行錯誤してみましたが
https://trac.clozure.com/ccl/wiki/GradientWindow
例えばここのサンプルコードを
(require :objc-support)
↑と↓で挟めば
(ql:quickload :trivial-main-thread)
(defun main ()
(trivial-main-thread:with-body-in-main-thread ()
(show-gradient-window)
(#/run (#/sharedApplication ns:ns-application))))
(main) でウィンドウが出ます
サイト脚注の gui:execute-in-gui はcocoaパッケージで提供されるのでここでは使えません
examples/cocoa/ui-elements/HOWTO.html の例も
(%make-nsstring "Hello!") → #@"Hello!"
(@SELECTOR "greet:") → (objc:@SELECTOR "greet:")
のように書き換えてやると動きます
https://trac.clozure.com/ccl/wiki/GradientWindow
例えばここのサンプルコードを
(require :objc-support)
↑と↓で挟めば
(ql:quickload :trivial-main-thread)
(defun main ()
(trivial-main-thread:with-body-in-main-thread ()
(show-gradient-window)
(#/run (#/sharedApplication ns:ns-application))))
(main) でウィンドウが出ます
サイト脚注の gui:execute-in-gui はcocoaパッケージで提供されるのでここでは使えません
examples/cocoa/ui-elements/HOWTO.html の例も
(%make-nsstring "Hello!") → #@"Hello!"
(@SELECTOR "greet:") → (objc:@SELECTOR "greet:")
のように書き換えてやると動きます
940デフォルトの名無しさん
2021/03/24(水) 15:23:03.24ID:aesCgSqt それと (ccl:save-application "foo.image") とやれば現状のバイナリイメージが保存されます
dx86cl64 -n -b -Q -I foo.image -e "(main)"
のようにして実行できます
サンプルでは終了処理が省略されてるのでウィンドウを閉じても終わりません
例えば killall -9 dx86cl64 で始末してやる必要があります
ちなみに (require :cocoa) の状態でイメージ保存をすると何故か 0バイトの空ファイルができます
あと :cocoa では ccl::build-application を使ってアプリケーションバンドルが作れるという話になってるのですが
これもちょっと分かりませんでした
ガワ(〜.app)は出来ても実行できない、エラーを見るとイメージが見つからない、
じゃあ手動で作ればいいのか? 保存できないじゃん... という循環です
dx86cl64 -n -b -Q -I foo.image -e "(main)"
のようにして実行できます
サンプルでは終了処理が省略されてるのでウィンドウを閉じても終わりません
例えば killall -9 dx86cl64 で始末してやる必要があります
ちなみに (require :cocoa) の状態でイメージ保存をすると何故か 0バイトの空ファイルができます
あと :cocoa では ccl::build-application を使ってアプリケーションバンドルが作れるという話になってるのですが
これもちょっと分かりませんでした
ガワ(〜.app)は出来ても実行できない、エラーを見るとイメージが見つからない、
じゃあ手動で作ればいいのか? 保存できないじゃん... という循環です
941デフォルトの名無しさん
2021/03/24(水) 19:24:39.27ID:yxGjMjcv CCLのメーリングリストでやったら?
もし有益な情報だったらここに書かれててもCCLユーザーは目にすることはないし
逆にここでやられてもCCLでapp作るっての長々やられても正直うざい
もし有益な情報だったらここに書かれててもCCLユーザーは目にすることはないし
逆にここでやられてもCCLでapp作るっての長々やられても正直うざい
942デフォルトの名無しさん
2021/03/24(水) 20:15:36.43ID:pUd7W5mz いいじゃない、過疎スレなんだし
943デフォルトの名無しさん
2021/03/25(木) 18:41:24.49ID:vJV70gDt lispを会社で使ってる人は何に使ってるの?
944デフォルトの名無しさん
2021/03/25(木) 22:47:02.90ID:yPj3FOep Clojureが一番多いだろうけど、結局Web関連が大半だろうな
945デフォルトの名無しさん
2021/03/27(土) 11:00:58.43ID:Jp3H832r 会社の仕事で使わせようとするとこは地雷っぽく感じる
Lisperが集まった少人数ベンチャーでもなければ、普通は採用言語とはならんて
Lisperが集まった少人数ベンチャーでもなければ、普通は採用言語とはならんて
946デフォルトの名無しさん
2021/03/27(土) 20:32:02.20ID:uSYmOJju 速さが必要なとこはC++UIはC#
設定とか外部ファイルはjson
設定とか外部ファイルはjson
947デフォルトの名無しさん
2021/04/20(火) 08:52:04.97ID:gd1FBcQ1 Steele御大がカバーに推薦文書いてるからってclでHacker's Delight一通りなぞったけど
dpb, deposit-field, log~, boole-~,bit-vector...
clの無駄に細かく柔軟なbyte/bit関数がめっちゃ生きるなこれ
byte-specのおかげで32bit想定で16進定数まみれのc(っぽい)サンプルコードがキレイになる
変なビット幅使ったら性能は察しだけども
4bit整数のboole-定数も真理値表とcltl2、(hsによれば処理系定義だけど)処理系毎に思想が見えて面白い
dpb, deposit-field, log~, boole-~,bit-vector...
clの無駄に細かく柔軟なbyte/bit関数がめっちゃ生きるなこれ
byte-specのおかげで32bit想定で16進定数まみれのc(っぽい)サンプルコードがキレイになる
変なビット幅使ったら性能は察しだけども
4bit整数のboole-定数も真理値表とcltl2、(hsによれば処理系定義だけど)処理系毎に思想が見えて面白い
948デフォルトの名無しさん
2021/04/20(火) 08:53:47.98ID:gd1FBcQ1 byteはsize, pos, stepの3タプルだったら、もっと良かったかもな
949デフォルトの名無しさん
2021/05/22(土) 14:57:49.72ID:AMGDOUSM lispで構造体の配列はどの様に宣言するのですか。
教えてください。
教えてください。
950デフォルトの名無しさん
2021/05/22(土) 16:58:24.32ID:ihqr331W 構造体の型を :element-type に指定して make-array するとか。
standard-object の配列を作るなら
(make-array 42 :element-type 'standard-object)
standard-object の配列を作るなら
(make-array 42 :element-type 'standard-object)
951デフォルトの名無しさん
2021/05/23(日) 05:05:37.98ID:wE2/zz8j nconcとかの最初のnってなんの意味?
破壊系は大抵nがついてるようだけど
破壊系は大抵nがついてるようだけど
952デフォルトの名無しさん
2021/05/23(日) 14:54:18.11ID:jMJ3NfPq 実践Common Lispにはnon-consingを意味すると書いてあるな
953デフォルトの名無しさん
2021/05/28(金) 00:46:31.60ID:EJmsk1LE クロージャー?判ってなさそうなミスして困った
https://pastebin.com/MmYWsxce
CL-USER> (answer-status)
(B . 0) (R . 0) (G . 0) (Y . 0) (P . 2) (W . 0)
(B . 1) (R . 0) (G . 0) (Y . 0) (P . 0) (W . 1)
(B . 0) (R . 0) (G . 0) (Y . 2) (P . 0) (W . 0)
(B . 1) (R . 0) (G . 0) (Y . 0) (P . 0) (W . 1)
NIL
CL-USER> (answer-status)
(B . 0) (R . 0) (G . 0) (Y . 0) (P . 4) (W . 0)
(B . 2) (R . 0) (G . 0) (Y . 0) (P . 0) (W . 2)
(B . 0) (R . 0) (G . 0) (Y . 4) (P . 0) (W . 0)
(B . 2) (R . 0) (G . 0) (Y . 0) (P . 0) (W . 2)
NIL
CL-USER> (answer-status)
(B . 0) (R . 0) (G . 0) (Y . 0) (P . 6) (W . 0)
(B . 3) (R . 0) (G . 0) (Y . 0) (P . 0) (W . 3)
(B . 0) (R . 0) (G . 0) (Y . 6) (P . 0) (W . 0)
(B . 3) (R . 0) (G . 0) (Y . 0) (P . 0) (W . 3)
NIL
関数呼ぶ時に counters が初期化されずに値をキープするので
呼ぶ度に増えてしまう
どう定義すればリセットされるのだろうか?
https://pastebin.com/MmYWsxce
CL-USER> (answer-status)
(B . 0) (R . 0) (G . 0) (Y . 0) (P . 2) (W . 0)
(B . 1) (R . 0) (G . 0) (Y . 0) (P . 0) (W . 1)
(B . 0) (R . 0) (G . 0) (Y . 2) (P . 0) (W . 0)
(B . 1) (R . 0) (G . 0) (Y . 0) (P . 0) (W . 1)
NIL
CL-USER> (answer-status)
(B . 0) (R . 0) (G . 0) (Y . 0) (P . 4) (W . 0)
(B . 2) (R . 0) (G . 0) (Y . 0) (P . 0) (W . 2)
(B . 0) (R . 0) (G . 0) (Y . 4) (P . 0) (W . 0)
(B . 2) (R . 0) (G . 0) (Y . 0) (P . 0) (W . 2)
NIL
CL-USER> (answer-status)
(B . 0) (R . 0) (G . 0) (Y . 0) (P . 6) (W . 0)
(B . 3) (R . 0) (G . 0) (Y . 0) (P . 0) (W . 3)
(B . 0) (R . 0) (G . 0) (Y . 6) (P . 0) (W . 0)
(B . 3) (R . 0) (G . 0) (Y . 0) (P . 0) (W . 3)
NIL
関数呼ぶ時に counters が初期化されずに値をキープするので
呼ぶ度に増えてしまう
どう定義すればリセットされるのだろうか?
954デフォルトの名無しさん
2021/05/28(金) 02:28:07.56ID:yF2ZDltE なんでcounterをdefparameterで定義してるの?
955デフォルトの名無しさん
2021/05/28(金) 03:05:24.01ID:mAlT95oI copy-tree 使うとか
https://pastebin.com/69r3fbZH
https://pastebin.com/69r3fbZH
956デフォルトの名無しさん
2021/05/28(金) 08:27:58.85ID:EJmsk1LE957デフォルトの名無しさん
2021/05/28(金) 10:06:56.31ID:9zUWEJUi958デフォルトの名無しさん
2021/05/28(金) 13:02:59.14ID:3GRY8xg9 リテラルオブジェクトを破壊的に変更した結果が未定義だからだね
959デフォルトの名無しさん
2021/05/28(金) 20:43:19.98ID:Kys4wuAq assoc cdr nth越しにfるアクセサ志向プログラミングが気になる
いや悪いと思わんよsetfパワーはclの売りだし
ただなかなか見たことないので感心?した
いや悪いと思わんよsetfパワーはclの売りだし
ただなかなか見たことないので感心?した
960デフォルトの名無しさん
2021/05/28(金) 22:27:22.42ID:EJmsk1LE961デフォルトの名無しさん
2021/05/28(金) 23:07:39.31ID:J0jB9cZZ グラフ探索でモノを見つけたら帰りがけに空リストへcar/cdrをpushしていくのはやったことあるな
(#'car #'car #'cdr ...)で表現したアドレスと値が帰ってくる(以下#'等省略)
値を処理したら(compose '(car car cdr...))でアクセス関数を生成してsetfで更新
なんで俺はそのノードへの参照を直接返さず無駄にリスト返したのか、と書いてて疑問に思ったけど思い出したわ
そのノードの周りをn階層刈ったり、途中の階層から相対アクセスしたかったんだ
(compose '(cons curried-butlast-n '(car car cdr ...)))
的な感じで
何れにせよcar/cdrがsetfableな恩恵だね
(#'car #'car #'cdr ...)で表現したアドレスと値が帰ってくる(以下#'等省略)
値を処理したら(compose '(car car cdr...))でアクセス関数を生成してsetfで更新
なんで俺はそのノードへの参照を直接返さず無駄にリスト返したのか、と書いてて疑問に思ったけど思い出したわ
そのノードの周りをn階層刈ったり、途中の階層から相対アクセスしたかったんだ
(compose '(cons curried-butlast-n '(car car cdr ...)))
的な感じで
何れにせよcar/cdrがsetfableな恩恵だね
962デフォルトの名無しさん
2021/05/28(金) 23:14:25.26ID:J0jB9cZZ リードした時点でcadaddadadaaaar自動生成みたいなしょうもないマクロをpaul grahamだったかで見た事あるけど、もしかしてこれ使えるかも?
a/dを文字列ででも返して、それを関数として使いたい時だけcとrで挟んでinternする感じで
a/dを文字列ででも返して、それを関数として使いたい時だけcとrで挟んでinternする感じで
963デフォルトの名無しさん
2021/05/28(金) 23:53:54.41ID:Kys4wuAq 効率は悪そうだけどとてもlispらしい
placeだけダイナミック変数に確保したとしても、誰から指されてるか(親)は経路を何らかの方法で保存してないと原理的に辿れない
(複数から指されている可能性もあるので)
順にスタック片付けずに一気に脱出したいところだけど、帰りにpushする為に必要なんだな
逆に次にアクセスするノードへのアクセサをpushする方法が考えられるけど、これなら見つかり次第アキュムレータ末尾再帰かthrow 'top/catchで帰れる
外れノードから戻る時にアクセサをpopするコストも負うけど…
とりあえず効率は無視して、外れノードから一段降りる時にアクセサをpopするのではなく、returnを積んでしまえば、探索のログとしてデバッグに役立ちそう
car cdrに加え、returnまで合成した関数がちゃんとsetfableかまではちょっと自信がない
placeだけダイナミック変数に確保したとしても、誰から指されてるか(親)は経路を何らかの方法で保存してないと原理的に辿れない
(複数から指されている可能性もあるので)
順にスタック片付けずに一気に脱出したいところだけど、帰りにpushする為に必要なんだな
逆に次にアクセスするノードへのアクセサをpushする方法が考えられるけど、これなら見つかり次第アキュムレータ末尾再帰かthrow 'top/catchで帰れる
外れノードから戻る時にアクセサをpopするコストも負うけど…
とりあえず効率は無視して、外れノードから一段降りる時にアクセサをpopするのではなく、returnを積んでしまえば、探索のログとしてデバッグに役立ちそう
car cdrに加え、returnまで合成した関数がちゃんとsetfableかまではちょっと自信がない
964デフォルトの名無しさん
2021/05/28(金) 23:54:39.92ID:Ti7fgoex 毎回二連投するやつ
965デフォルトの名無しさん
2021/05/29(土) 13:06:29.81ID:/6seeUxq リスト上でreturnと直前の呼び出しを対消滅させて最適化するイメージは湧くが意外と面倒くさそう
returnが連続するケースにカウンタが要る
括弧のパースでよくやるロジックだけど
returnが連続するケースにカウンタが要る
括弧のパースでよくやるロジックだけど
966デフォルトの名無しさん
2021/06/17(木) 12:59:58.49ID:WewK95Ed CommonLispで小さなCLIプログラムを書く
Writing Small CLI Programs in Common Lisp / Steve Losh
https://stevelosh.com/blog/2021/03/small-common-lisp-cli-programs/#s1-requirements
Writing Small CLI Programs in Common Lisp / Steve Losh
https://stevelosh.com/blog/2021/03/small-common-lisp-cli-programs/#s1-requirements
967デフォルトの名無しさん
2021/06/17(木) 21:38:50.24ID:PVkxN2pW >>966
CLISPさいつよ
CLISPさいつよ
968デフォルトの名無しさん
2021/06/22(火) 14:58:15.67ID:9PZ+AdPA 「Common Lisp」って、市販の書籍を読んでも歴史や文法等の事は書いてあっても、
REPLで試せるだけで、コンパイルして実行可能ファイルを作る方法が不明だな。
ネットを調べてもコンパイルして実行ファイルを作成する情報が見つからない。
運良く見つかっても、商用系のコンパイラを使った場合の話だったりする事が多々有る。
REPLで試せるだけで、コンパイルして実行可能ファイルを作る方法が不明だな。
ネットを調べてもコンパイルして実行ファイルを作成する情報が見つからない。
運良く見つかっても、商用系のコンパイラを使った場合の話だったりする事が多々有る。
969デフォルトの名無しさん
2021/06/22(火) 15:10:53.11ID:YfWe7YWP SBCLって有料七日
https://common-lisp.net/project/ecl/
https://stackoverflow.com/questions/11036070/lisp-binary-size
https://stackoverflow.com/questions/913671/are-there-lisp-native-code-compilers
https://stackoverflow.com/questions/14171849/compiling-common-lisp-to-an-executable
https://qiita.com/kedama17/items/6cdbb0e163aafcf8d339
https://takeokunn.xyz/blog/post/common-lisp-generate-executable-file
https://lispcookbook.github.io/cl-cookbook/scripting.html
https://ja.stackoverflow.com/questions/22493
https://common-lisp.net/project/ecl/
https://stackoverflow.com/questions/11036070/lisp-binary-size
https://stackoverflow.com/questions/913671/are-there-lisp-native-code-compilers
https://stackoverflow.com/questions/14171849/compiling-common-lisp-to-an-executable
https://qiita.com/kedama17/items/6cdbb0e163aafcf8d339
https://takeokunn.xyz/blog/post/common-lisp-generate-executable-file
https://lispcookbook.github.io/cl-cookbook/scripting.html
https://ja.stackoverflow.com/questions/22493
970デフォルトの名無しさん
2021/06/22(火) 15:18:09.43ID:HykST2y2 これが間違ったことを書いてツッコミを貰う式問題解決法ですか
971デフォルトの名無しさん
2021/06/22(火) 15:39:51.87ID:pmPJw99A 処理系のマニュアルを見なさい
972デフォルトの名無しさん
2021/06/22(火) 15:45:43.42ID:pmPJw99A 規格で決まってないし、そもそもバイナリに固めて配布する需要がそんなに無い
973デフォルトの名無しさん
2021/06/22(火) 15:53:42.26ID:9PZ+AdPA974デフォルトの名無しさん
2021/06/22(火) 16:00:31.34ID:9PZ+AdPA 解っている人にしか理解不可能な会話をされたら、
新参者はちんぷんかんぷんですね。
新参者はちんぷんかんぷんですね。
975デフォルトの名無しさん
2021/06/22(火) 16:58:54.16ID:r0WButOj SBCLではデフォルトで固めて実行ファイルを作れるが、サイズが最低でも40MBほどになる
SBCLビルド持にオプションを追加すると、圧縮した実行ファイルを作れる
それだと10MB程度になるから、まぁ現実的なサイズかなと
ちなみに圧縮されてても一瞬で起動するからデメリットは全く無い
SBCLビルド持にオプションを追加すると、圧縮した実行ファイルを作れる
それだと10MB程度になるから、まぁ現実的なサイズかなと
ちなみに圧縮されてても一瞬で起動するからデメリットは全く無い
976デフォルトの名無しさん
2021/06/22(火) 17:01:38.90ID:pmPJw99A save-lisp-and-dieはsbcl系だろうか、sb-ext:とかそんなパッケージプレフィックス付いてない?
eclだとsaveinitmemだとかその辺はてんでバラバラ
自分の環境で素早くロードして実行したいのならそれでベストだと思うよ、メモリをダンプしたのをそのまま読み込むだけだから
ただし全部入りだから、ファイルサイズに気を付けてね
eclだとsaveinitmemだとかその辺はてんでバラバラ
自分の環境で素早くロードして実行したいのならそれでベストだと思うよ、メモリをダンプしたのをそのまま読み込むだけだから
ただし全部入りだから、ファイルサイズに気を付けてね
977デフォルトの名無しさん
2021/06/22(火) 22:34:00.44ID:9PZ+AdPA978デフォルトの名無しさん
2021/06/22(火) 22:44:48.17ID:9PZ+AdPA979デフォルトの名無しさん
2021/06/23(水) 00:56:32.49ID:fcCuTY0O Common Lisperの7割以上が使ってると思われるSBCLの実行ファイルの作成に関して、具体的に書いた俺のレスは無視かよw
まともに聞く気が無いならもう来んなよ
まともに聞く気が無いならもう来んなよ
980デフォルトの名無しさん
2021/06/23(水) 01:02:46.63ID:p7QOUBen 老婆心だけど、プログラム事にコアイメージを量産するんじゃないぞ(違ったらごめん)
ライブラリや書いたコードの最適化コンパイル、実行時でなくてよい計算を済ませて、スクリプトを食わせる
ライブラリや書いたコードの最適化コンパイル、実行時でなくてよい計算を済ませて、スクリプトを食わせる
981デフォルトの名無しさん
2021/06/23(水) 01:57:21.85ID:p7QOUBen sbclなら常に関数をコンパイルしながら走るので、動的に関数生成するそこそこ規模ならお釣りが来るよ
実行時入力を与えて走らせればイメージが最適化されるので、そこをまたダンプ
熟成と呼んでる
パッケージマネージャ用に主なアーキテクチャ向けビルド作ってるけど、デバッガやrepl削るとffi関連のアップデートで泣く
実行時入力を与えて走らせればイメージが最適化されるので、そこをまたダンプ
熟成と呼んでる
パッケージマネージャ用に主なアーキテクチャ向けビルド作ってるけど、デバッガやrepl削るとffi関連のアップデートで泣く
982デフォルトの名無しさん
2021/06/23(水) 02:01:06.89ID:p7QOUBen cl界隈はソース配布で自動ビルドがなかなか混沌としてるからな
983デフォルトの名無しさん
2021/06/23(水) 02:38:16.31ID:bhqsYps4 こんな時間になってしまった。おやすみなさい。
984デフォルトの名無しさん
2021/06/23(水) 04:19:32.99ID:GGzsHju7 このスレ7年たつらしいけどLisp Schemeスレ一本に合流にして単独スレいらんのではないか
「いいものの本質は、いかなる時代においても変わらない」byパワーズのパワーズってなんなん?
「いいものの本質は、いかなる時代においても変わらない」byパワーズのパワーズってなんなん?
985デフォルトの名無しさん
2021/06/23(水) 13:25:52.20ID:6jEPjWCz emacs lisp の方が実用化には成功しているのかも知れないぬ
986デフォルトの名無しさん
2021/06/23(水) 19:50:01.92ID:bhqsYps4 次スレはまだかな、
987デフォルトの名無しさん
2021/06/23(水) 20:30:38.58ID:bhqsYps4 SBCL等のCommon-Lispでプログラムを作る際に、
ファイル若しくは画面にデバッグログを出力出来るライブラリの様なは無いのかな。
ググったり、Githubの中を探してたら、Log4CLってのを見つた。
ファイル若しくは画面にデバッグログを出力出来るライブラリの様なは無いのかな。
ググったり、Githubの中を探してたら、Log4CLってのを見つた。
988デフォルトの名無しさん
2021/06/23(水) 20:45:03.00ID:bhqsYps4 いま、検索したら日本語で詳しく紹介してるブログを見つけました。
他にもロギングライブラリらしきものが存在するらしい。
他にもロギングライブラリらしきものが存在するらしい。
989デフォルトの名無しさん
2021/06/26(土) 19:10:53.28ID:SGwHfoMZ transcriptって無かったっけ
そういうのじゃだめか
そういうのじゃだめか
990デフォルトの名無しさん
2021/06/26(土) 20:58:40.91ID:3dvp5buX991デフォルトの名無しさん
2021/06/27(日) 13:56:15.17ID:VKjGOwn5992デフォルトの名無しさん
2021/06/27(日) 16:36:57.14ID:KSONo++L ロガーとslimeが連携でもしてくれるのなら有用だと思うがそうじゃないならたいして使えるものではないな
コンパイラの警告,trace,breakはロガーライブラリを導入しなくても標準で使えるし,slimeと連携もする
コンパイラの警告,trace,breakはロガーライブラリを導入しなくても標準で使えるし,slimeと連携もする
993デフォルトの名無しさん
2021/06/29(火) 12:36:19.72ID:aO3q0Gho994デフォルトの名無しさん
2021/06/29(火) 18:57:39.59ID:LZLMU7Fi >>987
単に*debug/trace/error/standard...-output*へ自前のストリームをsetfすると画面への出力が食われるのかな?自前のreplはどう?色付けたり楽しいよ
(loop (funcall print-tee (funcall (eval (funcall read))))
print-teeで好きな標準ストリームをread-lineし、好きなところに書き込む
試してないので雰囲気だけ…(処理系のreplは裏で色々やってるので、それを元に改造するべき
単に*debug/trace/error/standard...-output*へ自前のストリームをsetfすると画面への出力が食われるのかな?自前のreplはどう?色付けたり楽しいよ
(loop (funcall print-tee (funcall (eval (funcall read))))
print-teeで好きな標準ストリームをread-lineし、好きなところに書き込む
試してないので雰囲気だけ…(処理系のreplは裏で色々やってるので、それを元に改造するべき
995デフォルトの名無しさん
2021/06/29(火) 22:07:45.60ID:vAeooDjH >>993
乙
乙
996デフォルトの名無しさん
2021/06/30(水) 18:24:48.68ID:PhKPzjXz 一時期SBCL入れて入門していました。
取り敢えずチュートリアルサイトを途中までこなして、ふと(BASICで言う)ステートメントをダイレクト実行しかしていない事に気が付く。
しかもlistとかのダイレクトコマンド専門命令の説明がない。
ググって見付けたサイト覗いても、その辺りの説明がない。
いくら生まれが古くても、ここまで生き残った言語なら運用に不足がある訳ないのだけれど・・・。
取り敢えずチュートリアルサイトを途中までこなして、ふと(BASICで言う)ステートメントをダイレクト実行しかしていない事に気が付く。
しかもlistとかのダイレクトコマンド専門命令の説明がない。
ググって見付けたサイト覗いても、その辺りの説明がない。
いくら生まれが古くても、ここまで生き残った言語なら運用に不足がある訳ないのだけれど・・・。
997デフォルトの名無しさん
2021/06/30(水) 19:57:21.11ID:F+OSm5Af >>996
> ステートメントをダイレクト実行しかしていない
これはreplでしかつかってないということなんだろうけど、
> しかもlistとかのダイレクトコマンド専門命令
これはなんのことなんだろう。
> ステートメントをダイレクト実行しかしていない
これはreplでしかつかってないということなんだろうけど、
> しかもlistとかのダイレクトコマンド専門命令
これはなんのことなんだろう。
998デフォルトの名無しさん
2021/06/30(水) 22:58:32.99ID:uA4oH22P BASICがアマチュアプログラミングの標準だったのはかれこれ40年前ですよ・・・
LISPが古いのとは別次元で時代錯誤・・・
LISPが古いのとは別次元で時代錯誤・・・
999デフォルトの名無しさん
2021/07/01(木) 10:41:54.54ID:8VUowwb01000デフォルトの名無しさん
2021/07/01(木) 10:42:20.83ID:8VUowwb010011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 2474日 11時間 53分 0秒
新しいスレッドを立ててください。
life time: 2474日 11時間 53分 0秒
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 「おこめ券は米以外の食品も買える。効果的な活用を」 地元で農水相 [山形県] [少考さん★]
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 ★11 [蚤の市★]
- 【速報】「女芸人No.1決定戦 THE W」9代目女王にニッチェ! 7年ぶり3度目で悲願の優勝 [牛丼★]
- 【芸能】『女芸人No.1決定戦THE W』 粗品が最後にバッサリ「優勝賞金1000万円にしてはレベル低い大会」 [冬月記者★]
- 【沖縄】開業4ヵ月でこれは…“国民の税金”投入の『ジャングリア沖縄』で見た衝撃的な光景と、モチベーションが低い一部スタッフの現状 [ぐれ★]
- 【東京】「家族で話題にして」 “世田谷一家殺害から25年 警視庁が呼びかけ [煮卵★]
- クズ「勉強頑張らなかった奴は一生DQNと一緒に肉体労働しろ」☚勉強頑張れるのも環境と巡り合わせなんだが? [783475554]
- ( ・᷇ὢ・᷆ )朝ごはん食べた?
- 俺の口癖が「へー」「そう」「どうも」なんだが
- 【時事】立憲民主党、30代の支持率が「ゼロ」😨 [369521721]
- うふ~ん♥死にたいわ~ん♥
- 加藤純一です
