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【質問よろず】
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2014/09/21(日) 22:49:21.73ID:FJokPHUt142デフォルトの名無しさん
2014/11/24(月) 23:22:30.44ID:n8voiuRi 静的に狭い場所で管理された副作用は速度の為に許容するって意味じゃね
ところでブートスクラップでlisp to cコンパイラを作ろうとしてるんだけど
compile関数を実装するときに渡されたシンボルか関数からCのコードを生成するときに
function-lambda-expressionで関数の本体部分を取得すればいいのかな
kclのコード見てもcompile-fileとかはあったけどcompile関数は見つからなかったのはなんでだろう
ところでブートスクラップでlisp to cコンパイラを作ろうとしてるんだけど
compile関数を実装するときに渡されたシンボルか関数からCのコードを生成するときに
function-lambda-expressionで関数の本体部分を取得すればいいのかな
kclのコード見てもcompile-fileとかはあったけどcompile関数は見つからなかったのはなんでだろう
143デフォルトの名無しさん
2014/11/24(月) 23:34:37.59ID:Ig3vRg1v ブートスクラップ…
144デフォルトの名無しさん
2014/11/24(月) 23:38:40.09ID:n8voiuRi 横文字には弱いみたい
要約するとcompileに渡された値からどうやって関数の引数やら本体部分を得るかを知りたいわけです
要約するとcompileに渡された値からどうやって関数の引数やら本体部分を得るかを知りたいわけです
145デフォルトの名無しさん
2014/11/24(月) 23:56:03.83ID:sHaIAKeh >>141
http://www.asahi-net.or.jp/~kc7k-nd/onlispjhtml/functionalProgramming.html
他の誰のものでもないオブジェクトという表現からいえば、まさに安全に書き換えることができるという意味で言ってるのだと思う
つまり、関数呼び出し自身が支配するオブジェクト⇔関数呼び出し時に安全に書き換えられるオブジェクト
なので、後段の部分の理解もそういうことで大体いいのでは
既に渡してるというところで引っかかってるみたいだけど、ここの話は読む限り関数的な書き方のLispの慣習なので、
要は受け取った引数を関数内部で勝手に書き換えるのはLispの関数的な書き方の慣習上よくないとされてるからやめろってだけの話なぜ慣習の話が出てくるのかといえば、どのオブジェクトが支配的であるか、つまり安全に書き換えられるかというのは書く人間が決めることだから
で、一般的なLispの慣習では引数は支配的でないけど、呼び出しの返り値は支配的とされているよ、という話
この慣習を守れば多くの場合純粋関数的な書き方と同等のローカル性を得られるけど、その節の後半部分はそうでない場合もあることを解説してる
http://www.asahi-net.or.jp/~kc7k-nd/onlispjhtml/functionalProgramming.html
他の誰のものでもないオブジェクトという表現からいえば、まさに安全に書き換えることができるという意味で言ってるのだと思う
つまり、関数呼び出し自身が支配するオブジェクト⇔関数呼び出し時に安全に書き換えられるオブジェクト
なので、後段の部分の理解もそういうことで大体いいのでは
既に渡してるというところで引っかかってるみたいだけど、ここの話は読む限り関数的な書き方のLispの慣習なので、
要は受け取った引数を関数内部で勝手に書き換えるのはLispの関数的な書き方の慣習上よくないとされてるからやめろってだけの話なぜ慣習の話が出てくるのかといえば、どのオブジェクトが支配的であるか、つまり安全に書き換えられるかというのは書く人間が決めることだから
で、一般的なLispの慣習では引数は支配的でないけど、呼び出しの返り値は支配的とされているよ、という話
この慣習を守れば多くの場合純粋関数的な書き方と同等のローカル性を得られるけど、その節の後半部分はそうでない場合もあることを解説してる
146デフォルトの名無しさん
2014/12/02(火) 00:48:14.88ID:oMH805i/ 教えてくれ
Emacs23.3 (On windows) に slime 入れたんだ
.emacs にはこんな感じで書いた
(setq inferior-lisp-program "sbcl")
(add-to-list 'load-path "~/.emacs.d/site-lisp/slime")
(require 'slime-autoloads)
(slime-setup)
で、まあ動くことには動く
でもなんでか以前clispで使ったときはあった起動時アニメーションがないんだ
なんで?
Emacs23.3 (On windows) に slime 入れたんだ
.emacs にはこんな感じで書いた
(setq inferior-lisp-program "sbcl")
(add-to-list 'load-path "~/.emacs.d/site-lisp/slime")
(require 'slime-autoloads)
(slime-setup)
で、まあ動くことには動く
でもなんでか以前clispで使ったときはあった起動時アニメーションがないんだ
なんで?
147デフォルトの名無しさん
2014/12/02(火) 00:57:02.84ID:nnpj2kBC slime-setupをhelpで見ればわかるよ
148デフォルトの名無しさん
2014/12/03(水) 11:35:40.26ID:c/4+MUqf This `cl-labels' requires `lexical-binding' to be non-nil
ntemacs23で出たエラーですが
原因は何でどうすれば解決しますか?
ntemacs23で出たエラーですが
原因は何でどうすれば解決しますか?
149デフォルトの名無しさん
2014/12/03(水) 14:14:49.31ID:ReckfAN/ 146 = 148なのか?
エスパーだけどslimeのことならemacs24にすれば良いじゃね?
しかし質問のしかた最悪だな
エスパーだけどslimeのことならemacs24にすれば良いじゃね?
しかし質問のしかた最悪だな
150148
2014/12/03(水) 20:17:25.25ID:Wu/dN4SR >146 = 148なのか?
ちがいますよ
>エスパーだけどslimeのことならemacs24にすれば良いじゃね?
ありがとうございます
>しかし質問のしかた最悪だな
ごめんなさい
ちがいますよ
>エスパーだけどslimeのことならemacs24にすれば良いじゃね?
ありがとうございます
>しかし質問のしかた最悪だな
ごめんなさい
151デフォルトの名無しさん
2014/12/04(木) 17:51:59.64ID:mQjd1sH/ 質問です
素人知識ながらコードの高速化を行っているのですが、例えば次のコードをdisassembleします(sbclを使ってます)
(defun my-eq (a b)
(declare (optimize (speed 3) (safety 0)))
(eq a b))
; disassembly for MY-EQ
; Size: 21 bytes
; 0CAE251A: 39FA CMP EDX, EDI ; no-arg-parsing entry point
; 1C: 740A JEQ L1
; 1E: BA0B001001 MOV EDX, 17825803
; 23: L0: 8BE5 MOV ESP, EBP
; 25: F8 CLC
; 26: 5D POP EBP
; 27: C3 RET
; 28: L1: BA27001001 MOV EDX, 17825831
; 2D: EBF4 JMP L0
すると高速化においてよろしくないとされる条件分岐命令(JEQ)が出力されます
このようなJEQは本当に高速化の脅威になりますか?
また、取り除くことはできますか?
素人知識ながらコードの高速化を行っているのですが、例えば次のコードをdisassembleします(sbclを使ってます)
(defun my-eq (a b)
(declare (optimize (speed 3) (safety 0)))
(eq a b))
; disassembly for MY-EQ
; Size: 21 bytes
; 0CAE251A: 39FA CMP EDX, EDI ; no-arg-parsing entry point
; 1C: 740A JEQ L1
; 1E: BA0B001001 MOV EDX, 17825803
; 23: L0: 8BE5 MOV ESP, EBP
; 25: F8 CLC
; 26: 5D POP EBP
; 27: C3 RET
; 28: L1: BA27001001 MOV EDX, 17825831
; 2D: EBF4 JMP L0
すると高速化においてよろしくないとされる条件分岐命令(JEQ)が出力されます
このようなJEQは本当に高速化の脅威になりますか?
また、取り除くことはできますか?
152デフォルトの名無しさん
2014/12/05(金) 02:59:30.47ID:EEY9XvTS153デフォルトの名無しさん
2014/12/05(金) 18:35:21.48ID:0LF1tZEz154SCHEME餃子 ◆8X2XSCHEME
2014/12/06(土) 01:41:19.85ID:17surw1A インライン展開すると関数コールが省略できるってのもあるし、
大きなジャンプを避ければメモリローカリティが維持されてデータ (プログラム) がキャッシュに乗って速度に貢献することもある。
キャッシュってのは侮れない要素なんだけど、正直言って実際に試してみないとどう効いてくるのかさっぱりわからない。
プロファイラでもそういう差は見え難いしな。 予想にこだわらずに色々と試してみるのが吉。 その内に勘が働くようになるよ。
大きなジャンプを避ければメモリローカリティが維持されてデータ (プログラム) がキャッシュに乗って速度に貢献することもある。
キャッシュってのは侮れない要素なんだけど、正直言って実際に試してみないとどう効いてくるのかさっぱりわからない。
プロファイラでもそういう差は見え難いしな。 予想にこだわらずに色々と試してみるのが吉。 その内に勘が働くようになるよ。
155デフォルトの名無しさん
2014/12/06(土) 20:52:17.44ID:Nd/Kweiq157デフォルトの名無しさん
2014/12/11(木) 20:00:12.67ID:URNWWvBk gcl使ってたらhandler-case,ignore-errosが無いことに気付いた
やっぱりansi準拠じゃないとansin出来んな
やっぱりansi準拠じゃないとansin出来んな
158デフォルトの名無しさん
2014/12/16(火) 16:07:51.10ID:/bfoimZs define-hogeマクロを定義するマクロはどういう名前にすればいいんだろ
define-define-hogeとかしか思い付かないけど不恰好だし
define-define-hogeとかしか思い付かないけど不恰好だし
159デフォルトの名無しさん
2014/12/16(火) 16:11:37.96ID:CudKiy/r defmacro-hoge でいいだろ
160デフォルトの名無しさん
2014/12/16(火) 16:13:21.14ID:/bfoimZs そういえばそうか
161デフォルトの名無しさん
2014/12/22(月) 20:51:38.71ID:ghZKV2ZQ allegro clの無償版って普段のlispプログラミングにどれくらい使えるかな
制限はヒープ領域だけみたいだけどヒープ領域が60Mbってどれくらいの制限がいまいちわからんな
制限はヒープ領域だけみたいだけどヒープ領域が60Mbってどれくらいの制限がいまいちわからんな
162デフォルトの名無しさん
2014/12/22(月) 21:56:16.19ID:36o3vILg163デフォルトの名無しさん
2014/12/22(月) 22:35:05.70ID:18uotQck やっぱりただで使わせる気は無いのか
気分転換に環境変えてみようと思ったけど残念
気分転換に環境変えてみようと思ったけど残念
164デフォルトの名無しさん
2014/12/26(金) 14:55:55.44ID:ivhZ4+Q3 loopマクロのトークンはキーワードにするのはどういう意味があるんだ
165デフォルトの名無しさん
2014/12/27(土) 06:45:42.86ID:BPfLluBn >>164
パッケージの名前空間を汚さないため、だと思う。キーワードを使わないと、thenとかuptoとかのシンボルがそのパッケージに作られちゃう。
lispのプログラムってホントにデータなんだ、と驚いた記憶がある。
パッケージの名前空間を汚さないため、だと思う。キーワードを使わないと、thenとかuptoとかのシンボルがそのパッケージに作られちゃう。
lispのプログラムってホントにデータなんだ、と驚いた記憶がある。
166デフォルトの名無しさん
2014/12/27(土) 07:44:44.77ID:PhaXTdWk なにがインターンされるかなんて気にして書いてる人なんかいないよ、お兄ちゃん!
:then :upto だとエディタのハイライトで読みやすくなるからだよ。
それが読みやすくなければ、then uptoと書けば良いよ!
:then :upto だとエディタのハイライトで読みやすくなるからだよ。
それが読みやすくなければ、then uptoと書けば良いよ!
167デフォルトの名無しさん
2014/12/27(土) 15:12:23.12ID:Z5TU2mXJ ライブラリ書いてる人は気にしてるとおもうけど
168デフォルトの名無しさん
2014/12/27(土) 15:12:55.73ID:8eya4d4I 補完のときにノイズになるかな
169デフォルトの名無しさん
2014/12/28(日) 01:28:27.48ID:Sd6FVmJh 外部から参照されるシンボルでもない限りファイルをコンパイルしたファイルからはシンボルは勝手に消えるからライブラリ作るやつはそんな細かいこと気にしてないだろ…
無用のシンボルをインターンしたくなくてdefpackageで#:hogeって書くやつはいるがキーワードパッケージとcl-userのシンボルは消しにくいからまあ理解もできるが、それもコンパイルすれば消えるし
無用のシンボルをインターンしたくなくてdefpackageで#:hogeって書くやつはいるがキーワードパッケージとcl-userのシンボルは消しにくいからまあ理解もできるが、それもコンパイルすれば消えるし
170デフォルトの名無しさん
2014/12/30(火) 09:14:33.10ID:O6VRzwmF loopマクロのuptoとかがキーワードでも動く、ってのは
ちゃんと仕様になってるのかな。
おれはへえキーワードでもいいんだ、と知ってからはずっとキーワード派。
無駄なシンボルがインターンされているなんて、おれの美意識としては嫌。
他人に強要はしない。
ちゃんと仕様になってるのかな。
おれはへえキーワードでもいいんだ、と知ってからはずっとキーワード派。
無駄なシンボルがインターンされているなんて、おれの美意識としては嫌。
他人に強要はしない。
171デフォルトの名無しさん
2014/12/30(火) 14:08:08.62ID:27cBYY6U 仕様で規定されてるかどうかはloopの項目に記載があるから違法か合法かは読めばわかるな。
無駄なシンボルがインターンされるという意味では、キーワードパッケージにインターンされる方が
グローバルに汚染される分、ローカルパッケージ汚染より質が悪い筈。
矛盾したこだわり…。
無駄なシンボルがインターンされるという意味では、キーワードパッケージにインターンされる方が
グローバルに汚染される分、ローカルパッケージ汚染より質が悪い筈。
矛盾したこだわり…。
172デフォルトの名無しさん
2014/12/30(火) 14:27:00.81ID:vs+COFUK CLHSより引用。
loop keyword n. Trad. a symbol that is a specially recognized part of the syntax of an extended loop form.
Such symbols are recognized by their name (using string=), not by their identity;
as such, they may be in any package. A loop keyword is not a keyword.
loop keyword n. Trad. a symbol that is a specially recognized part of the syntax of an extended loop form.
Such symbols are recognized by their name (using string=), not by their identity;
as such, they may be in any package. A loop keyword is not a keyword.
173デフォルトの名無しさん
2014/12/30(火) 19:08:08.10ID:vs+COFUK >>171
矛盾はしてなくない?
皆が:uptoを使えば、キーワードパッケージだけにそのシンボルができるんだから。
キーワードパッケージはloopに限らずぐちゃぐちゃと変なシンボルが登録されるけどそれは仕方ないこと。
世界の汚さを一手に引き受ける、それがキーワードパッケージの役割だと思ってる。
矛盾はしてなくない?
皆が:uptoを使えば、キーワードパッケージだけにそのシンボルができるんだから。
キーワードパッケージはloopに限らずぐちゃぐちゃと変なシンボルが登録されるけどそれは仕方ないこと。
世界の汚さを一手に引き受ける、それがキーワードパッケージの役割だと思ってる。
174デフォルトの名無しさん
2015/01/13(火) 17:41:40.78ID:n8FCO54L 構造体やクラスの名前からスロットを取得する方法ってある?
175デフォルトの名無しさん
2015/01/14(水) 20:45:49.59ID:Wha2sJr8 class-slots てメソッドがあるよ。構造体に使えたかは忘れた
176デフォルトの名無しさん
2015/01/14(水) 21:08:24.00ID:1rDSBA79 >>175
ありがとう
検索して見つけたこれが参考になった
ttp://stackoverflow.com/questions/3086561/make-clos-objects-printable-in-lisp
ありがとう
検索して見つけたこれが参考になった
ttp://stackoverflow.com/questions/3086561/make-clos-objects-printable-in-lisp
177デフォルトの名無しさん
2015/01/15(木) 02:26:41.38ID:3CJhIHgr guiとかweb系のライブラリないの
178デフォルトの名無しさん
2015/01/16(金) 01:42:21.96ID:dM6MW5TX あるよ
179デフォルトの名無しさん
2015/01/17(土) 18:34:52.38ID:CWvWtJ6X evalとapplyの違いは何ですか?
180デフォルトの名無しさん
2015/01/17(土) 19:00:09.58ID:P4fG3Fn9 carとfuncallの違いはなんですか?
と聞いてるようなものなんだが
と聞いてるようなものなんだが
181デフォルトの名無しさん
2015/01/17(土) 19:12:25.44ID:73qLESVw182デフォルトの名無しさん
2015/01/17(土) 19:40:12.57ID:CWvWtJ6X http://qiita.com/mandel59/items/8f9111143aea94e7b363
ここで同じだと言っている人がいて気になったので
ここで同じだと言っている人がいて気になったので
183デフォルトの名無しさん
2015/01/17(土) 19:49:45.85ID:P4fG3Fn9 この板のいくつかの場所で言われてるけど
その人ちょっとおかしいんだよ
真に受けない方がいい
その人ちょっとおかしいんだよ
真に受けない方がいい
184デフォルトの名無しさん
2015/01/17(土) 20:03:49.61ID:CWvWtJ6X いえこの人がおかしいのは知ってますし真に受けるつもりもありません
ただ思えばそれらの違いを言葉にできるほどの認識がなかったので
ただ思えばそれらの違いを言葉にできるほどの認識がなかったので
185デフォルトの名無しさん
2015/01/17(土) 20:30:19.29ID:P4fG3Fn9186デフォルトの名無しさん
2015/01/17(土) 21:08:56.14ID:CWvWtJ6X 適用は評価の前段階みたいな感じでいいんでしょうか
187デフォルトの名無しさん
2015/01/17(土) 21:14:39.87ID:X3AOWrxV あのう、きちっとしたテキストを一冊読んだほうがいいよ
188デフォルトの名無しさん
2015/01/18(日) 02:14:00.68ID:m7MxJZlS (eval `(funcall ,f ,@args))と(apply f args)が同じっていいたいのかね?
ようわからんけど…
ようわからんけど…
189デフォルトの名無しさん
2015/01/18(日) 07:43:52.27ID:FaVyQjad evalはシンボルのリストを読み込んでその内容を実行する。
applyは既に評価されて定義された関数を適用すること。
applyは既に評価されて定義された関数を適用すること。
190デフォルトの名無しさん
2015/01/18(日) 07:49:09.26ID:oexYoD6M eval だけでいいのに何でapplyが重視されてるんだ?、と思ったら、SICPを読もう
191デフォルトの名無しさん
2015/01/18(日) 09:28:02.82ID:8C45mKK2192デフォルトの名無しさん
2015/01/19(月) 01:45:04.66ID:wgUa3gjO emacsのslimeについて質問です
slime-autodoc-mode
slime-autodoc-space
うざいので無効にしたいのですが
どうにかならないですか
slime-autodoc-mode
slime-autodoc-space
うざいので無効にしたいのですが
どうにかならないですか
193デフォルトの名無しさん
2015/01/23(金) 08:44:20.17ID:EcShhbHE adw-chartingって(ql:quickload :adw-charting)しただけじゃ
使えないんでしょうか
使えないんでしょうか
194デフォルトの名無しさん
2015/01/23(金) 12:42:39.31ID:iqBUzDAo >>193
エスパーだけど、サブシステムに分かれてるから
(ql:quickload :adw-charting-vecto)
しないとサンプルが動かないという意味ではそうなのでは
試した手順とマニュアル読んで分からなかった箇所を具体的に書いたら?
(adw-charting:with-pie-chart (300 200)
(adw-charting:add-slice "A" 5.0d0)
(adw-charting:add-slice "B" 2.0d0)
(adw-charting:save-file "minimal-pie-chart.png"))
は配布状態で動いたよ
エスパーだけど、サブシステムに分かれてるから
(ql:quickload :adw-charting-vecto)
しないとサンプルが動かないという意味ではそうなのでは
試した手順とマニュアル読んで分からなかった箇所を具体的に書いたら?
(adw-charting:with-pie-chart (300 200)
(adw-charting:add-slice "A" 5.0d0)
(adw-charting:add-slice "B" 2.0d0)
(adw-charting:save-file "minimal-pie-chart.png"))
は配布状態で動いたよ
195デフォルトの名無しさん
2015/01/23(金) 13:23:05.37ID:EcShhbHE196デフォルトの名無しさん
2015/01/23(金) 21:36:01.97ID:F+B+etzd 嬉しいのでチラシの裏書きます
The Little Schemer二回読了!!
勉強になった
次は「初めての人のためのLisp」を読もうと思い購入済みでもあるのだけれども予定変更
The Seasoned SchemerというThe Little Scemerの続編でthe natures of
computingの理解を目ざすものがあったのでそれにした。
それ終えたら「初めての」かLand of LispかOn Lispやろ
本来の目的ClusureでAndroid用の好みのワンベインOutlineプロセッサつくるためにLisp系はじめたけど楽しいからそれはさておき基礎の基礎に深く分け入っていきます
The Little Schemer二回読了!!
勉強になった
次は「初めての人のためのLisp」を読もうと思い購入済みでもあるのだけれども予定変更
The Seasoned SchemerというThe Little Scemerの続編でthe natures of
computingの理解を目ざすものがあったのでそれにした。
それ終えたら「初めての」かLand of LispかOn Lispやろ
本来の目的ClusureでAndroid用の好みのワンベインOutlineプロセッサつくるためにLisp系はじめたけど楽しいからそれはさておき基礎の基礎に深く分け入っていきます
197デフォルトの名無しさん
2015/01/23(金) 22:50:04.93ID:NpwsZqSV 再帰で考えてしまって動的計画法が使いこなせない!
全マス埋めていく感覚が、全ノード探索と分かってはいるんだが…
全マス埋めていく感覚が、全ノード探索と分かってはいるんだが…
198デフォルトの名無しさん
2015/02/07(土) 08:01:14.41ID:tz9pe5xW http://anime.scripts.mit.edu/images/mitinanime_lain3.jpg
Serial Experiments LainではLispのコードのシーンがあるらしい
Serial Experiments LainではLispのコードのシーンがあるらしい
199デフォルトの名無しさん
2015/02/07(土) 08:39:22.93ID:R2/oFkGJ Lain か…懐かしいなぁ
200デフォルトの名無しさん
2015/02/07(土) 09:32:47.61ID:FOHLYtkF Life Gameのソースっぽい
201デフォルトの名無しさん
2015/02/07(土) 09:52:15.98ID:OMRZtff8 D-WaveのOSがCommonLispってマジ?
202デフォルトの名無しさん
2015/02/07(土) 10:43:02.43ID:Ei/z8not203デフォルトの名無しさん
2015/02/07(土) 10:51:45.09ID:FOHLYtkF204デフォルトの名無しさん
2015/02/07(土) 12:02:20.85ID:saCOOwny205デフォルトの名無しさん
2015/02/07(土) 13:26:07.79ID:yKpU9aut その書き写したソース見たい
206デフォルトの名無しさん
2015/02/07(土) 13:32:26.38ID:FOHLYtkF207デフォルトの名無しさん
2015/02/07(土) 15:06:09.69ID:yKpU9aut 見れた
配列をbit単位で操作するのは効果あるのかな
配列をbit単位で操作するのは効果あるのかな
208デフォルトの名無しさん
2015/02/07(土) 15:20:36.83ID:9qdU9S5T >>207
1991年だからメモリ贅沢に使うのに躊躇したんじゃなかろか?
1991年だからメモリ贅沢に使うのに躊躇したんじゃなかろか?
209デフォルトの名無しさん
2015/02/07(土) 15:36:59.11ID:6rQaurxf 一バイトは金のひとすくい
しません、させません、ビットの無駄使い
おかげでビルも立ちました
しません、させません、ビットの無駄使い
おかげでビルも立ちました
210デフォルトの名無しさん
2015/02/08(日) 23:41:38.36ID:C4tJwi8l211デフォルトの名無しさん
2015/02/09(月) 11:04:57.10ID:inFNj6Hs212デフォルトの名無しさん
2015/02/09(月) 11:50:04.98ID:wTON1hpK 設定ミスでそうなっただけってどっかで見た気がする
213デフォルトの名無しさん
2015/02/09(月) 11:55:17.59ID:gnp8i06N オープンソースにせずとも問題を解決出来る、って意味分らないね
214デフォルトの名無しさん
2015/02/09(月) 18:29:24.33ID:Ysp4l3Zv ttp://sogrady-media.redmonk.com/sogrady/files/2015/01/lang.rank_.plot_.q1152.png
ttp://redmonk.com/sogrady/2015/01/14/language-rankings-1-15/
ttp://redmonk.com/sogrady/2015/01/14/language-rankings-1-15/
215デフォルトの名無しさん
2015/02/09(月) 18:35:56.82ID:yftdnQui うぉー!
FORTLANと同席かい!!
FORTLANと同席かい!!
216デフォルトの名無しさん
2015/02/09(月) 22:47:33.62ID:JzEtMJoP FORTRANじゃあーい!!
217デフォルトの名無しさん
2015/02/09(月) 22:57:24.39ID:HcxTGLiU Ratforってあったよね
218デフォルトの名無しさん
2015/02/09(月) 23:47:36.78ID:JzEtMJoP Rational Fortran
初代プログラミング作法(programming tools)のやつね。
初代プログラミング作法(programming tools)のやつね。
219デフォルトの名無しさん
2015/02/09(月) 23:55:00.91ID:bwEZbR4B220デフォルトの名無しさん
2015/02/10(火) 17:05:14.42ID:Xy5S1/Fv >> 218
「ソフトウェア作法」ね
http://www.amazon.co.jp/%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E4%BD%9C%E6%B3%95-Brian-W-Kernighan/dp/4320021428/ref=pd_sim_b_3?ie=UTF8&refRID=00X1H3NNRVZ5P3BCDTMQ
「ソフトウェア作法」ね
http://www.amazon.co.jp/%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E4%BD%9C%E6%B3%95-Brian-W-Kernighan/dp/4320021428/ref=pd_sim_b_3?ie=UTF8&refRID=00X1H3NNRVZ5P3BCDTMQ
221デフォルトの名無しさん
2015/03/07(土) 00:42:51.80ID:1AfT/MV4 LET OVER LAMBDAを読んでいるのですが
しょっぱなで出てくるマクロdefmacro/g!が動きません。
(defmacro defmacro/g! (name args &rest body)
(let ((syms (remove-duplicates
(remove-if-not #'g!-symbol-p
(flatten body)))))
`(defmacro ,name ,args
(let ,(mapcar
(lambda (s)
`(,s (gensym ,(subseq
(symbol-name s)
2))))
syms)
,@body))))
(macroexpand-1
'(defmacro/g! nif (expr pos zero neg)
`(let ((,g!result ,expr))
(cond ((plusp ,g!result) ,pos)
((zerop ,g!result) ,zero)
(t ,neg)))))
;=>(DEFMACRO NIF (EXPR POS ZERO NEG) (LET () `(LET ((,G!RESULT ..
(flatten '`(let ,g!result))が
(SB-INT:QUASIQUOTE LET ,G!RESULT)になるので
,g!resultがremove-if-notを通り抜けられないのが理由でしょうか。
sbcl1.2.7です。動かす方法はありますか?
しょっぱなで出てくるマクロdefmacro/g!が動きません。
(defmacro defmacro/g! (name args &rest body)
(let ((syms (remove-duplicates
(remove-if-not #'g!-symbol-p
(flatten body)))))
`(defmacro ,name ,args
(let ,(mapcar
(lambda (s)
`(,s (gensym ,(subseq
(symbol-name s)
2))))
syms)
,@body))))
(macroexpand-1
'(defmacro/g! nif (expr pos zero neg)
`(let ((,g!result ,expr))
(cond ((plusp ,g!result) ,pos)
((zerop ,g!result) ,zero)
(t ,neg)))))
;=>(DEFMACRO NIF (EXPR POS ZERO NEG) (LET () `(LET ((,G!RESULT ..
(flatten '`(let ,g!result))が
(SB-INT:QUASIQUOTE LET ,G!RESULT)になるので
,g!resultがremove-if-notを通り抜けられないのが理由でしょうか。
sbcl1.2.7です。動かす方法はありますか?
222デフォルトの名無しさん
2015/03/07(土) 00:48:06.97ID:1AfT/MV4 (defun g!-symbol-p (s)
(and (symbolp s)
(> (length (symbol-name s)) 2)
(string= (symbol-name s)
"G!"
:start1 0
:end1 2)))
(and (symbolp s)
(> (length (symbol-name s)) 2)
(string= (symbol-name s)
"G!"
:start1 0
:end1 2)))
223デフォルトの名無しさん
2015/03/07(土) 07:09:08.52ID:mW7RcyXy コードコピペしたらちゃんと動いたけど
flattenが間違ってんじゃないかな
flattenが間違ってんじゃないかな
224デフォルトの名無しさん
2015/03/07(土) 16:01:02.06ID:yXgYIHFE 試しにwindows版のsbcl1.2.7入れてやってみたが
確かに動かないな、これ
windows版ccl1.10ではちゃんと動いた
こういうことってあるんだな
確かに動かないな、これ
windows版ccl1.10ではちゃんと動いた
こういうことってあるんだな
225デフォルトの名無しさん
2015/03/07(土) 16:17:29.95ID:IuS2RJP4 clisp+alexandria:flattenでやってみたけど動くよ
226デフォルトの名無しさん
2015/03/07(土) 16:50:40.73ID:yXgYIHFE debianのsbcl1.0.57.0ではちゃんと動く
今度は普段ccl1.10で使ってるslimeでsbcl1.2.7動かしてみたが
やっぱり動かん
今度は普段ccl1.10で使ってるslimeでsbcl1.2.7動かしてみたが
やっぱり動かん
227デフォルトの名無しさん
2015/03/07(土) 19:54:37.09ID:sXXhs6bf228デフォルトの名無しさん
2015/03/08(日) 14:36:36.18ID:AqwQTNqO Common Lisp 素人です.
SSL って cl+ssl が標準的なんですかね?
以下のコードが動かないんですが, これはうちの環境が悪いんでしょうか?
```
(ql:quickload :usocket)
(ql:quickload :cl+ssl)
(let* ((sock (usocket:socket-connect "imap.gmail.com" 993 :protocol :stream :timeout 60))
(sock-stream (cl+ssl:make-ssl-client-stream (usocket:socket-stream sock))))
(unwind-protect
(progn
(format sock-stream "? CAPABILITY"))
(usocket:socket-close sock)))
```
Debugger:
```
There is no applicable method for the generic function
#<STANDARD-GENERIC-FUNCTION STREAM-WRITE-STRING (3)>
when called with arguments
(#<CL+SSL::SSL-STREAM
for #<FD-STREAM
for "socket 192.168.1.60:46384, peer: 64.233.187.109:993"
{1005B13083}>>
"? CAPABILITY" 0 NIL).
[Condition of type SIMPLE-ERROR]
```
cl+ssl の streams.lisp では stream-write-byte についてしか defmethod してないけど,
普通はこれで動くもんなんです?
SSL って cl+ssl が標準的なんですかね?
以下のコードが動かないんですが, これはうちの環境が悪いんでしょうか?
```
(ql:quickload :usocket)
(ql:quickload :cl+ssl)
(let* ((sock (usocket:socket-connect "imap.gmail.com" 993 :protocol :stream :timeout 60))
(sock-stream (cl+ssl:make-ssl-client-stream (usocket:socket-stream sock))))
(unwind-protect
(progn
(format sock-stream "? CAPABILITY"))
(usocket:socket-close sock)))
```
Debugger:
```
There is no applicable method for the generic function
#<STANDARD-GENERIC-FUNCTION STREAM-WRITE-STRING (3)>
when called with arguments
(#<CL+SSL::SSL-STREAM
for #<FD-STREAM
for "socket 192.168.1.60:46384, peer: 64.233.187.109:993"
{1005B13083}>>
"? CAPABILITY" 0 NIL).
[Condition of type SIMPLE-ERROR]
```
cl+ssl の streams.lisp では stream-write-byte についてしか defmethod してないけど,
普通はこれで動くもんなんです?
229デフォルトの名無しさん
2015/03/08(日) 14:39:57.84ID:4UYhxwse SBCLのバッククォートは構造体に変換されるようになったから
LET OVER LAMBDAにあるような、バッククォートを含むコードの
flattenによるコードウォークはSBCLだと動かなくなったって事か。
ダメじゃんSBCL〜
こんなバッククォートの仕様、CLTL2満たしてるのか?
LET OVER LAMBDAにあるような、バッククォートを含むコードの
flattenによるコードウォークはSBCLだと動かなくなったって事か。
ダメじゃんSBCL〜
こんなバッククォートの仕様、CLTL2満たしてるのか?
230228
2015/03/08(日) 19:54:56.42ID:AqwQTNqO 解決したので報告です. :external-format を指定して flexi-streams を使えば良いようです.
```
(let* ((sock (usocket:socket-connect "imap.gmail.com" 993 :protocol :stream :timeout 60))
(sock-stream (cl+ssl:make-ssl-client-stream (usocket:socket-stream sock) :external-format '(:latin-1 :eol-style :crlf))))
(unwind-protect
(progn
(listen sock-stream)
(format *standard-output* "~%~a~%" (read-line sock-stream nil))
(force-output *standard-output*)
(format sock-stream "? CAPABILITY~%")
(force-output sock-stream)
(listen sock-stream)
(format *standard-output* "~%~a~%" (read-line sock-stream nil))
(force-output *standard-output*)
)
(usocket:socket-close sock)))
```
=>
```
* OK Gimap ready for requests from xxx.xxx.xxx.xxx hogehoge
* CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 XYZZY SASL-IR AUTH=XOAUTH AUTH=XOAUTH2 AUTH=PLAIN AUTH=PLAIN-CLIENTTOKEN
```
```
(let* ((sock (usocket:socket-connect "imap.gmail.com" 993 :protocol :stream :timeout 60))
(sock-stream (cl+ssl:make-ssl-client-stream (usocket:socket-stream sock) :external-format '(:latin-1 :eol-style :crlf))))
(unwind-protect
(progn
(listen sock-stream)
(format *standard-output* "~%~a~%" (read-line sock-stream nil))
(force-output *standard-output*)
(format sock-stream "? CAPABILITY~%")
(force-output sock-stream)
(listen sock-stream)
(format *standard-output* "~%~a~%" (read-line sock-stream nil))
(force-output *standard-output*)
)
(usocket:socket-close sock)))
```
=>
```
* OK Gimap ready for requests from xxx.xxx.xxx.xxx hogehoge
* CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 XYZZY SASL-IR AUTH=XOAUTH AUTH=XOAUTH2 AUTH=PLAIN AUTH=PLAIN-CLIENTTOKEN
```
231デフォルトの名無しさん
2015/03/17(火) 01:48:34.28ID:gpmCn1O6 (変数 値)のリストと式が与えられた状態で、変数を値に束縛した環境で式を評価したいのですが、良い方法がわかりません
現状では次のように実装しています
(let ((bindings '((a 1) (b 2))) (form '(+ a b)))
(eval `(let ,bindings ,form)))
実際にはformに対してbindingsを変えたものが何度も呼ばれます
また、formは複雑なものも想定します
他にいい方法はありますでしょうか?
現状では次のように実装しています
(let ((bindings '((a 1) (b 2))) (form '(+ a b)))
(eval `(let ,bindings ,form)))
実際にはformに対してbindingsを変えたものが何度も呼ばれます
また、formは複雑なものも想定します
他にいい方法はありますでしょうか?
232デフォルトの名無しさん
2015/03/17(火) 10:47:28.60ID:Zf13xXA9 (let ((bindings '((a 1) (b 2))) (form '(+ a b)))
(progv
(mapcar #'car bindings)
(mapcar #'cadr bindings)
(eval form)))
とかかなあ
もしくはformを関数にしてしまうのがいいのかな
(let ((bindings '((a 1) (b 2))) (form '(+ a b)))
(let ((thunk (coerce `(lambda () ,form) 'function)))
(progv
(mapcar #'car bindings)
(mapcar #'cadr bindings)
(funcall thunk))))
bindingだけ変えて何度も走らせるなら多分効率もいいと思う(確かめたわけじゃないけど)
インタプリタかなにか作ってるの? 👀
(progv
(mapcar #'car bindings)
(mapcar #'cadr bindings)
(eval form)))
とかかなあ
もしくはformを関数にしてしまうのがいいのかな
(let ((bindings '((a 1) (b 2))) (form '(+ a b)))
(let ((thunk (coerce `(lambda () ,form) 'function)))
(progv
(mapcar #'car bindings)
(mapcar #'cadr bindings)
(funcall thunk))))
bindingだけ変えて何度も走らせるなら多分効率もいいと思う(確かめたわけじゃないけど)
インタプリタかなにか作ってるの? 👀
233デフォルトの名無しさん
2015/03/17(火) 10:48:46.17ID:Zf13xXA9 なぜか変な絵文字が入った…
234デフォルトの名無しさん
2015/03/17(火) 13:59:09.21ID:gpmCn1O6 >>232
progvで動的変数が作られるのは知りませんでした
formの関数化も良さそうですね
mapcarによるコンシングはデータ構造を工夫してなくせそうです
だいぶパフォーマンスが改善されそうです。ありがとうございます
ある言語のサブセットを作ってます
progvで動的変数が作られるのは知りませんでした
formの関数化も良さそうですね
mapcarによるコンシングはデータ構造を工夫してなくせそうです
だいぶパフォーマンスが改善されそうです。ありがとうございます
ある言語のサブセットを作ってます
235デフォルトの名無しさん
2015/03/26(木) 19:32:41.80ID:atSKhz5s 質問です。以下の、
私家版、Common Lisp プログラマのレベル10
http://www.reddit.com/r/lisp_ja/comments/30cfn0/%E7%A7%81%E5%AE%B6%E7%89%88common_lisp_%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E%E3%81%AE%E3%83%AC%E3%83%99%E3%83%AB10/
の中のレベル3に、
「fletやlabelsによるローカル関数定義を多用」が、
「Common Lispでは名前空間の汚染はあまり気にしなくて良いので多用する必要はない」とレスされ、
るそうですが、
なぜ気にしなくて良いのですか?
私家版、Common Lisp プログラマのレベル10
http://www.reddit.com/r/lisp_ja/comments/30cfn0/%E7%A7%81%E5%AE%B6%E7%89%88common_lisp_%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E%E3%81%AE%E3%83%AC%E3%83%99%E3%83%AB10/
の中のレベル3に、
「fletやlabelsによるローカル関数定義を多用」が、
「Common Lispでは名前空間の汚染はあまり気にしなくて良いので多用する必要はない」とレスされ、
るそうですが、
なぜ気にしなくて良いのですか?
236デフォルトの名無しさん
2015/03/26(木) 20:09:27.36ID:7QpaiPyE >>235
comon lisp よりも scheme の方がよさそーだ‥
comon lisp よりも scheme の方がよさそーだ‥
237デフォルトの名無しさん
2015/03/26(木) 21:35:12.89ID:RYFxX3Lv >>235
なんかコイツ自身レベルが低そうだ
なんかコイツ自身レベルが低そうだ
238デフォルトの名無しさん
2015/03/31(火) 15:33:38.54ID:Wn1BJkY4239デフォルトの名無しさん
2015/04/03(金) 04:59:16.54ID:OpTcNNTw 元スレで作った人に聞けばいいのでは…
たぶん単純に名前空間が関数と変数で分かれてるってだけの話だと思うけど
たぶん単純に名前空間が関数と変数で分かれてるってだけの話だと思うけど
240デフォルトの名無しさん
2015/04/04(土) 21:18:43.12ID:+yfNqqsV 初歩的な質問ですいません。
CommonLispをCentos6にインストールできないんですが
単純にyum 〜では駄目なんですか?
CommonLispをCentos6にインストールできないんですが
単純にyum 〜では駄目なんですか?
241デフォルトの名無しさん
2015/04/04(土) 21:30:16.17ID:zaPqarn1 sudo yum install sbcl.x86_64
じゃだめなん?
じゃだめなん?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「おこめ券は米以外の食品も買える。効果的な活用を」 地元で農水相 [山形県] [少考さん★]
- 【速報】「女芸人No.1決定戦 THE W」9代目女王にニッチェ! 7年ぶり3度目で悲願の優勝 [牛丼★]
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 ★11 [蚤の市★]
- 【芸能】『女芸人No.1決定戦THE W』 粗品が最後にバッサリ「優勝賞金1000万円にしてはレベル低い大会」 [冬月記者★]
- 旧姓使用拡大に連合会長が反発 「何の説明もない。選択的夫婦別氏制度導入を」 男女共同参画会議 [ぐれ★]
- 向こう3カ月のコメ価格、下落予想強まる…新の収穫量増え需給緩むか 米穀安定供給…調査 [蚤の市★]
