【入門】Common Lisp その12【質問よろず】
Lisp Schemeスレでは恥ずかしくて聞けないようなことを質問したり、
Lisp Schemeスレの話題は高度すぎて気後れする人が話しあったり。
それ以外でもCommon Lispについての話題なら歓迎します。
ま、ゆっくりやりましょう。
「いいものの本質は、いかなる時代においても変わらない」byパワーズ
■前スレ
【入門】Common Lisp その11【質問よろず】
https://mevius.5ch.net/test/read.cgi/tech/1411307361/
【入門】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/ >>3
repl いじってればやる気出てくるよ
泥団子遊び 関数の定義をREPLから呼び出すことはできないのかな?
つまりソースを返すということだけど
それともコンパイルされてバイナリが保持されるからそういう機能はそもそも無い? できるシステムとできないシステムがあるよ
function-lambda-expressionがあるよ
できないシステムでも簡単に定義できるよ
やり方は教えないよ 普通にtagsファイル作ってるけど
;.init-common.lisp
(declaim (optimize (speed 0) (safety 3) (debug 3)))
(setf (fdefinition 'f2lam) (function fun...))
etc
;sbcl
(compile 'fdes);⇒FDES(副作用として定義置き換え、のはず)
(f2lam (fun fdes))
;defunされた時 (LAMBDA ..., T, FDES
;組み込み NIL, T CAR
こんな感じだったかと
安全取ってるからかもだけど init読まないでイメージ固めようとするとよくコケるのはご愛嬌
処理系のディレクトリに普通はソースあるはずだから、検索コマンドに指定しておくとよい(vimなら:find funでソースが開く) S式を実行時にフォームとして使いたいなら、クオートした状態で持っておいて、適宜functionでクロージャ化して使おう
replに居るときはぜひ欲しいから、fdefinition, function, macro-functionなんかでぜひ短くしておきたい子 &wholeを掠め取ってdefunに渡すだけのdefun*でも定義しておけばコンパイル方式がminimumでもfurtherでも大丈夫だろう
plistにでもしまっておこう
symbol-functionにdefunがsetしてくれるし普通に呼べる sbclはランタイムある限りdescribeでソースの場所吐くね
#P"SYS:SRC;CODE;LIST.LISP"
のように
処理系、サード、自前でも任意のオブジェクトのパスを返す
ただし印字するだけで値で返してくれない、REPLから(ed *)でエディタに飛べたら便利なのに、惜しい…
(let ((*standard-output* (make-output-stream))
(describe 'funname)
(get-output-string-stream))
でとりあえずキャプチャはできそうだから、成形する関数をde/strと定義しておき
(ed (de/str 'fun))
で快適にREPLから読めると思います
(*ed-functions*の設定もよしなに) 訂正
(get-output-string)→(get-output-string *standard-output*)
です、年のため 自作するのであれば5chの書き込みは鵜呑みにしないでslimeのソースコードを参考にするようにしてね 印字されるならdescribeのソースでパス取得関数を呼んでるだろうし、非公開でも::で呼んじゃえば
文字列から拾う時点でもう十分行儀が悪いんだし >>7
これは関数定義の位置に飛びたいだけなの?
それとも式そのものが欲しいの? >>20
式が見れたら初心者の役に立つのかなと思った 継続って何?
わかりやすく教えて。
おながいします。 こっそり仕様に入ってるedはrepl生活を快適にしてくれるね>>15
まあAPIすらも一切処理系規定丸投げなんで癖が強いが ningleでsession使いたい時はどうすればいいの? Twitter スクレイパーが古すぎてpython のをffi
最初からpython 使った方がよかった Common Lispと関数型プログラミングの基礎 Kindle版
山田 新之介 (著)
自称引きこもり
こんなの多そうだよな
いやなかなかすごい本やで 最近思うのだけど昔は作者の知的構造がそのままサイト構造になっているような、「すごい素人」が作ったウェブサイトがあったでしょ。
ジオシティーズにあったような。
ブログとかqiitaみたいなサイトは画一的すぎて同じような知のかたまり具合にはならないと思うんだけど、意外とkindle出版がそれを担ってくれるような気がしてきた。
スレ違いすまん。 sbclからwxWidgetsを使おうと思ったらインターフェース自分で書かないとダメ?
GUIは何が主流なんだろう
まさかtcl/tkとかgtkとかはないよね ChatGPTに聞いてみた
Q.
GUIアプリを作成するためのCommonLispのライブラリ、フレームワークを教えて
A.
Common Lispには、GUIアプリケーションを作成するためのいくつかのライブラリやフレームワークがあります。
【Common Lisp Interface Manager (CLIM)】
CLIMは、Common Lisp用のインターフェイス管理システムであり、
Common Lispにおいて多くのGUIアプリケーションを作成するために使用されます。
【LispWorks CAPI】
LispWorks CAPIは、Common Lisp用のインターフェイス管理システムであり、
Windows、macOS、Linuxなどの多くのプラットフォームで使用できます。
【Gtk】
Gtkは、C言語用のGUIツールキットであり、Common LispからGtkを利用するために、
GTK+ binding for Common Lisp (cl-gtk2) や GTK+ for Common Lisp (gtkcl) のようなライブラリを使用することができます。
【Qt】
Qtは、C++用のクロスプラットフォームなGUIアプリケーションフレームワークであり、
Common LispからQtを利用するために、Qt bindings for Common Lisp (cl-qt) のようなライブラリを使用することができます。
どのライブラリやフレームワークを選ぶかは、アプリケーションの要件や開発者のスキルによって異なります。 >>40
ハイライト入ってすっきり読みやすそうなインターフェイスでブクマした
と思ったらまだまだ未完か
この例文の後で次のような関数帝があったとします。
(defun example (x) ...)
さすがに"関数帝"は機械翻訳で出て来ないと思うから、手で頑張ってるんだろうけど
定番訳も未だ無いし、頑張ってくれると嬉しい >>43
creative commonsでnptcl独自の説明書(日本語版)となってるから独自()なんじゃない
nptclの説明もあるけど、ざっと見た限り各項目の例はcltlそのままだから、当然底版はあるはず
ansiドラフトとされるほぼclhsな怪しい文書もpublic domainで出回ってるけど、ちゃんとclean-up issueまで付いてるのはclhsしか知らない
規格の意図を読み解くにはclean-up issueが必須だし、名前付書簡の体裁を取ってる以上は勝手に整理したり訳付けるのはまずい
少なくともエチケット的には こんなやつかhttp://www.lispworks.com/documentation/lw61/CLHS/Issues/iss092_w.htm
clarificationの類は適当に引用して項目の本文に反映すれば便利だろうね
引用部分にリンク[hornig88]、フッターに出典を載せれば引用だから権利的な問題は無いはずだけど
lispworksの息の掛かってないissue集があれば教えて欲しい
自分用はclhsからcleanup issueのリンク先をたぐって内容を挿入、適当に読みやすく整形してプレーンテキストにダンプしたものをlessやlistener内から読んでる quicklispで探すと"各自用意した"clhsをオンザフライで検索整形表示するパッケージが山のように出てくるね
弄るのは難しいからか つーか著作権周りはちょっと気にし過ぎなきらいがあるね
cltl1のacknowledementsには80年から約3年ARPANET交わされた3000以上のメッセージにアイデアやデザインの寄与を帰して、それを叩き台にしてSteele先生が解釈吟味し、自筆でまとめたもの、とある
文書自体の権利はSteele先生(と出版社)
後年に成立した処理系マニュアルや規格やそれらに準ずる文書も、コード例はもとより平文までそのまま借りてる部分が多い
大元のSteele先生が気にしてないんだから、そんなに気にすんな Common Lisp (実際に試してるのはSBCLという処理系だけど) では
ソースファイル中でシンボルを前方参照すると未定義で警告が出ちゃうよね
相互再帰する2関数を定義しようとすると、どうしてもどちらかを前方参照
せざるを得なくて、こういう場合普通はどうしてるの?
オプションで処理系の警告を黙らせる?
前方参照する関数の存在だけをあらかじめ宣言する方法がある? (declaim (ftype (function () t) bar))
(defun foo () (bar))
ってこと? >>51
どうもです。そうそう、求めてたのはそれ
型宣言できるのを知らなかったんよ