【入門】Common Lisp その11【質問よろず】
■ このスレッドは過去ログ倉庫に格納されています
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/ >>562
そのセリフはせめてリスパーになってから言ったらどおや?陸リスパーさんw 陸リスパーの定義を述べよ。
リスパーの定義を述べよ。 >>563
陸リスパーはリスパーじゃないらしいが、意味が分からんw
取り敢えず知能指数が75程度かね defmacroだとdestructuring bind?が使えて
(defmacro test ((a b &optional c) d)
(print (list a b c d))
nil)
(test (1 2) 4) => (1 2 NIL 4)
みたいに書けるけど、&optionalや&keyの後に書こうとしてもSBCLだとdefmacroを評価した時点でエラーになる
&restの後ろには一応書けるっぽい
必須引数と&restの所には書けるけど、&optionalと&keyの所には書けないという認識で良いのか?
もし&optionalの所に書けるなら書き方を教えてくれ >>574
この記事見たらちゃんと書けることが分かった
自分が前に試した時は何か書き方を間違っていたようだ
取り敢えずモヤモヤが晴れたんで助かりました コードを C や perl や Lisp や python に書き換えて速度比べていたんですが
perl に速度負けしたのは、ちゃんと Lisp 書けるようになれば逆転できますかね?
処理系は CCL Version 1.11.5/v1.11.5 (WindowsX8632)
perl に負けるのは悔しいんですよ 早い
まだリファクタリングしてないのにこの速さ
ありがとうございます。ここまで scbl が速いとは
0.331 C
0.616 scbl
0.749 perl
0.943 CCL
2.912 python CとPerlが2倍程度しか違わないとかどんなコードか気になる
普通二桁違ってもおかしくない 最適化コンパイルしているか疑問
もっと早くなる気がする gcc でも gcc -Ofast -march=native でも
このコードは早さ変らなかった
Cをもっと早く走らせる書きかたはあると思う
しかしながら当面の目標は、Lispなどで
早く走るコードに仕上げることだ squeakやpharoみたいな完全フリーなIDEってないの? Emacs+Slimeで困ってないとかそういうのじゃなくて IDEを強調するならフリーなやつは存在しないんじゃない
有償ならLispWorksとかあるけど おそらくこんなのを求めてるんじゃないかな
ttp://www.lispworks.com/products/ide.html squeakやpharoはフリーなのにLispはなんで誰もフリーで作らないの? じゃあ世界中のLispプログラマは丘リスパーなの? だからEmacs+slimeで事足りてるって言ってんだろ
頭悪いの? マジアスペなのか何かのギャグで言ってるのかわかんないよw
それはわかってるし、そんなことは訊いてないんですけどw 漏れには ID:9d3EeJ1d がアスペに観える 質問はこれね、答えはyes/noしかありません
おk?
583 自分:デフォルトの名無しさん[] 投稿日:2019/09/21(土) 00:38:07.12 ID:xRjuzSxf
squeakやpharoみたいな完全フリーなIDEってないの?
584 自分:デフォルトの名無しさん[sage] 投稿日:2019/09/21(土) 00:44:47.91 ID:9d3EeJ1d [1/4]
Emacs+Slimeで困ってないとかそういうのじゃなくて 64bitのときって引数6個まではスタック使わずにレジスタ渡しなんだな 非LISPマシン(≒汎用CPU)上でのLISP処理系でCDRコーディングが流行らないのって何で? CDRコーディングはメモリを節約するためのものだけど、今時そんな事する必要がないからだろ 結局早く走らせようとすると面倒なコードにしかならなかった思い出 CDRコーディングでメモリ参照の局所性などは向上するのでむしろ現代のCPUで効果があるという話もある
CommonLispの場合,リストはイミュータブルでないので書き換えが発生すると間接参照に置き換わるためどこまで旨味があるかだが たかがリストの参照に条件分岐が必要になるから、むしろ現代のCPUには速度的に致命的なペナルティが有る
Lispはリストの使い勝手が良いからつい何でも使い勝ちだけど、ある程度以上の可変長のデータには可変長配列を使うべきだろう 先生質問です!モダーンな言語に慣れた身としては、括弧よりもシンボルが大文字なことが気になります!
SQLと一緒で、なんだか怒られているような、コードに怒りの感情がくっついているような感触がします! クラス名とインスタンス名がどっちも先頭小文字文化で区別がつかないことや
カプセル化を事実上放棄していることについても触れてあげてね >>604
カプセル化を放棄してるってどう言う事?
プライベート変数の事言ってるなら可能だろ setf 万能な感じだけど
オブジェクトの外からsetfしたら書きかえられたり
なんてことはないよな? cl4py で ~/.roswell/local-projects のパッケージ読む方法がわからないです
内部的には sbcl --script をpythonから実行しているので,
これと同じことを ros runでできれば良いはず ~/.roswell/local-projects
~/.quicklisp/local-projects
~/quicklisp/local-projects
全部統一したい.おすすめの設定はありませんでしょうか? Dex:get でURL エンコードは自分で変換するしかないのでしょうか
http postでHmacなる暗号化かけてpostする方法がわかりまでん https://quickref.common-lisp.net/index-per-library.html
ここに沢山あるパッケージは,名前から中身を類推するしかないの?
このパッケージはテキスト処理で,数値計算でみたいなカテゴリー分類が見たい 実践CLが適価で出ていたので次に読もうということでポチりました
それを引き取りに行きましたところ
ふらーっと棚を見たらPAIPとLOLとガウディ本が適価で置いてありやがりまして
全部いっちゃいました><
まだGentle Guideの最初の方読んでるところだとういうのに…どうすんだこれ >>620
なんだこれw
こんなものが有ったのか
これを最後までこなせばマジでLispマスターかもな
知らんけどw オレがLispマスターになるために、誰かHyperspecを読みやすい日本語に翻訳してくれませんか はじめてなら先に Erlang やれ
Elixir じゃなくて Erlang な そういうわけでGNUのEmacs Lispプログラミング入門読み始めたのだ >>601
基本はイミュータブルって事にしておいて、書き換えなきゃならなくなった時は
都度ミュータブルに変更(≒実際にはミュータブルに見える)とかは無し? コピーオンライトっていうもっと簡単な用語があった
orz quicklispの動作確認のためのhollow worldしかない単純なパッケージってないのでしょうか? >>587
smalltalkは良くも悪くもIDE込みの言語だからな。 >>631
「動作確認」が何を意味するのか微妙だけど・・
Quicklisp client が入っているかどうかだけなら、REPL で
(ql:client-version)
とか打って "2019-02-16" とか返ってくるのかを見ればよさそう。 Pattern matchで一番使われているのはoptimaなんです?
速度なくて良いので、もっと実装が単純なの探してます
それからquicklispにonlispのコードまとまってるパッケージないですか 実装が単純ってのを基準にライブラリ選定するやついるか?
quicklispに教材は集積されてないんじゃないの.知らんけど コモンリスプの最初の教科書として『これがLispだ』を読み始めた
最初の方で、読み進むためのツールとして「pp」というマクロが紹介されてるんだけど
SBCLで動かなくて困ってます
2バージョン紹介されてるんだけど、どこをどうしたら動きますか?
CL-USER> (defmacro pp (fun)
(list 'pprint
(list 'quote (append (list 'defun fun)
(cdr (symbol-function fun))))))
CL-USER> (defmacro pp (fun)
(list 'quote (list 'defun fun
(cadr (symbol-function fun))
(caddr (caddr (symbol-function fun))))))
ワーニングのメッセージもコピペしたほうが良いですか? on lispのコードはポール・グレアムのサイトから落とせるよ Macro expandの結果がslimeだと
#1=
みたいのなくて、全部代入されて展開されるのに
コマンドラインからだと、ところどころ出てくる
この代入みたいなの出てこないような設定出来ないのでしょうか >>636
ここを
(symbol-function fun)
こうすると動きます
(function-lambda-expression (symbol-function fun)) >>638
*print-circle* を nil にするといいはず
(setf *print-circle* nil) …動いたは動いたけど、目的の動作ではないような…
関数定義のプリティプリントをするマクロなんですが… >>642
残念ながら、必ずしも function-lambda-expression で「関数定義」を得られるとは限りません。
nil を返す場合もあると言語仕様で定められています:
> The primary value, lambda-expression, is function's defining lambda expression, or nil if the information is not available.
http://www.lispworks.com/documentation/HyperSpec/Body/f_fn_lam.htm
SBCLの場合、ユーザー定義関数なら期待する結果になるようですが、
組込関数に対しては nil を返す実装がほとんどのようです(手元の処理系はすべて nil を返してきました)。 clhsの読み方がわかんないんだけどpprintは代用にならないのかな >>529
ループで書くと変数への再代入が必要になるから〜
って関数型言語推しの文脈でよく言うけど
それが言うほど問題になる場面ってどれ位あるかね?
それにRubyのeachとかイテレータだと
ループ変数は隠蔽されててあまり使わないし
ますますそんな実害はない気がしてくる >>542
Lispのプログラム自体もリストでしかないから
処理とデータの区別が必要なくて
メタプログラミングがしやすいって理屈は分かってる
問題はメタプロの生産性が本当にメチャクチャ高いかどうか?
Lisp信者(というか教祖の)ポールグレアムとかはそう言ってるけど
ライブラリやドキュメントの充実の方が生産性上げる気がしてる >>545
そうすると行数が増えるのがイヤなんだろうと思う
最後にカッコが重なるのはオレもイヤだが >>576
今どきもう処理速度より
人間が読み書きする速度の方が重要だろ?
でそれはPythonの方が早そうな気がするけど >>583
>>587
Emacsってフリーソフトの草分けじゃん?
エディタだけどIDEに近いんじゃないの?
欲しい機能はLispで自力実装するになるけど >>603
個人的にはOOPやろうとすると
A.bにならないことが気になるわ >>632
SmalltalkはあのIDEを使うために
言語も学ぶみたいな感じだからな >>647
> ライブラリやドキュメントの充実の方が生産性上げる気がしてる
ドンキ行けばなんでも売ってるから買えば済むけどそれは生産性高いのか
ドキュメントの充実とかいうのも所詮Qiitaにコピペできる手順が書いてあるかどうかだろ
> 問題はメタプロの生産性が本当にメチャクチャ高いかどうか?
最近のわかりやすい事例でいうとライブラリやドキュメントが充実してないような量子コンピューティングでlisp使われてるわな
d-waveやrigetti
ゼロスタートでの生産性高いから採用されてんじゃないの
昔からlispはそういうところで使われてきたんだよな (list 1 2 3) = '( 1 2 3) ? >>653
>ドンキ行けばなんでも売ってるから
>買えば済むけどそれは生産性高いのか
どうでもいいけど
PHPってドンキみたいな雰囲気だよな 実践common lispの古本買ったのですが
LispBox落としてきて本に載ってるEmacs?Slime?わかんないけどショートカットキー試したら
ほとんど通らなくて絶望してる
前の持ち主はそこまででこの本捨てたみたい
(ここまではラインマーカーあり、手あと付きまくりで汚れてる
水滴の落ちた跡があるけど、泣いたのかもしれない) なるほど
C言語の本でもポインタの説明が間違ってて詰むパターンか かわいそうに
K&R本も難読で苦労した人も多かろう ポインタの話を出して「それに比べたらお前の絶望なんて大したこと無い」ってか
Cはドメジャー言語、Lispはマイナー言語だぞ 実践common lispってそんなHow To本だったっけ?pathnameのはなしをよんでうげっとなったような記憶が。 ■ このスレッドは過去ログ倉庫に格納されています