【入門】Common Lisp その8【質問よろず】at TECH
【入門】Common Lisp その8【質問よろず】 - 暇つぶし2ch906:デフォルトの名無しさん
12/02/18 00:55:04.52
>>905
Launchpadってのは、オープンソースプロジェクトのホスティングサービスで、
その機能のひとつであるバグトラッキングシステムをSBCLは使ってる。
非公式な機能でなければ、開発者に不具合報告してみれば良いのでは、って話。

イメージの件はそう。:executable tを指定しなければ単なるコアイメージができる。

あと、コードの変換については、別にそんな難しいことを言ってるわけじゃなくって、
こういうのをcompile-fileの代わりに使えば良いんじゃないかと思う。

(defun script->executable (exe-file-name src-file-name)
(let ((tmp-file-name (format nil "~a.tmp" src-file-name))
(toplevel-symbol (gentemp "TOPLEVEL")))
(with-open-file (src src-file-name)
(with-open-file (tmp tmp-file-name :direction :output :if-exists :error)
(format tmp "(defun ~a ()~%" toplevel-symbol)
(do ((line (read-line src nil) (read-line src nil)))
((null line))
(write-line line tmp))
(format tmp "~&)~%")))
(compile-file tmp-file-name)
(load tmp-file-name)
(delete-file tmp-file-name)
(sb-ext:save-lisp-and-die exe-file-name
:toplevel toplevel-symbol
:executable t)))

907:デフォルトの名無しさん
12/02/18 18:08:27.54
>>906
コードまでありがとうございます。全体をdefunで括っても構わないのですね。
何となくdefunやrequireなんかを除外しないといけない様な気がしていました。
早速シバンの除去とコマンドラインから起動出来る様にしました。
これで今まで同様の操作で行けます。本当にありがとうございました。


908:デフォルトの名無しさん
12/02/18 18:09:12.81
あと、皆様ごめんなさい。
SBCL自体では *シバンはサポートしてない* みたいです。
私の環境で動いたのは~/.sbclrcに以下を記述していた為でした。
(同様な記述がいくつもありますがおそらくURLリンク(www.kono.cis.iwate-u.ac.jp)からのコピペ)
0.40でも0.50でも全く同じに設定(FTPでコピーしたのでcksum値も同じ)してあるのですが、
動作が変わった理由が分かる方おられますか?
なお、上記代替策がありますのでそれ程逼迫したものではありません。
お騒がせして申し訳ありませんでした。

;;; If the first user-processable command-line argument is a filename,
;;; disable the debugger, load the file handling shebang-line and quit.
(let ((script (and (second *posix-argv*)
(probe-file (second *posix-argv*)))))
(when script
;; Handle shebang-line
(set-dispatch-macro-character #\# #\!
(lambda (stream char arg)
(declare (ignore char arg))
(read-line stream)))
;; Disable debugger
(setf *invoke-debugger-hook*
(lambda (condition hook)
(declare (ignore hook))
;; Uncomment to get backtraces on errors
;; (sb-debug:backtrace 20)
(format *error-output* "Error: ~A~%" condition)
(quit)))
(load script)
(quit)))

909:デフォルトの名無しさん
12/02/20 03:31:07.45
stumpwmはそろそろ実用してもいいのだろうか

910:デフォルトの名無しさん
12/02/20 19:41:19.23
emacsのslimeを使っていて疑問に思ったのですが、
slimeやACLのIDEができる前のcommon lispの開発は
どういう環境で行っていたのでしょう?
まさかとは思いますが括弧の対応を一つ一つ目で確認していたのですか

911:デフォルトの名無しさん
12/02/20 19:47:39.55
Emacsが処理系の中に実装されていたのです。MacLisp, Symbolics
二昔前のLispは統合開発環境しかなかったんです。(ちょっと嘘w)
というか統合開発環境とはLispのことでした。(Basicとかもあったけどw)

912:SCHEME餃子 ◆8X2XSCHEME
12/02/20 20:00:20.08
今だと OS, 言語処理系, 開発環境 という概念が分かれているけど、
昔はそれほどきちんとした線引きが無かった。
今でも厳密に定義付けされているわけではない。

俺は世代的にそれほど古い時代を知ってるわけじゃないが、
N88-Basic (DISK版) が OS であり 言語処理系であり エディタ であり デバッガでありアセンブラであったことは知ってる。 (使ってた)

それと似たような感じなのかなぁ?

913:デフォルトの名無しさん
12/02/20 23:02:35.23
Emacs としては標準で LISP モードがあったし、
さらに、各処理系ごとに独自の emacs モードを添付していたりしてた。
統合環境としては SLIME の前 (90年代) には ILISP というものががあった。
自分の経験(ここ20年)でいえば、手で括弧対応ってのは一度もなかったね。

914:デフォルトの名無しさん
12/02/20 23:37:47.09
うろ覚えなんだけど、昔、超括弧ってあったよね?
] を入力すると括弧全部閉じたことになるやつ。
エディタが賢くなって無意味になったけど。

915:デフォルトの名無しさん
12/02/21 00:40:57.06
[もあったよ。
]で最初の[まで全部閉じる。

要するに[(([((]]は、(((((())))))と同じ。

916:デフォルトの名無しさん
12/02/21 01:10:50.04
みんな若いんだなぁ
PC-8001でカセットテープからLispインタープリタ読み込んで
左かっこで指折って右かっこで指伸ばして数えてたこと思いだした

917:デフォルトの名無しさん
12/02/21 11:36:03.91
[(((;゚Д゚]

918:デフォルトの名無しさん
12/02/21 11:42:33.18
911です。皆さんありがとうございます。
知らない話ばかり聞けてうれしいです。
たしかgaucheのshiroさんだったと思うのですが
common lispはそれ一つで完結する開発環境を持っているとおっしゃっていた気がしますが
伝統的なものなのですね。勉強になりました。

919:デフォルトの名無しさん
12/02/21 21:12:52.60
>>914-915
それは凶悪シンタックスだな。


920:デフォルトの名無しさん
12/02/22 09:53:27.22
lisp始めたてだけどまだまだ括弧の多さになれない。

921:866
12/02/22 16:21:37.34
字句解析について質問していたものです。その節はありがとうございました。
今度はcl-yaccについてお聞きしたいのですが、
URLリンク(paste.lisp.org)
ソース冒頭に書いた3点に対応するにはどう書き換えればよいでしょうか。

922:デフォルトの名無しさん
12/02/22 21:20:24.55
Common Lisp はそれ単体で完結した開発環境ではない。
その証拠にエディタを起動する手続き ed が存在する。

923:デフォルトの名無しさん
12/02/22 21:54:17.92
edは内部で実装されてる関数でもいいんだけども。
(ed '関数名)
(ed "ファイル名")
こんな関数でもいいし。

CMU Common Lispでは内部にEmacs-likeなeditor, HEMLOCKが実装されていて、
ed関数を実行するとHEMLOCKが呼び出された。
最近使ってないから今もそうかは知らない。

924:デフォルトの名無しさん
12/02/23 07:41:50.10
URLリンク(sites.google.com)
8B%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E
/lisp/common-lisp/%E5%88%9D%E5%BF%83%E8%80%85%E3%81%AE%E7%82%B
A%E3%81%AElisp%E7%92%B0%E5%A2%83
ここのlispboxの使い方の項なんですが、
smartcalcconsoleini.lispをc-c c-kでコンパイルしようとしても
1 compiler notes:

smartcalcconsoleini.lisp:14:1:
warning: Undeclared free variable *WARN-ON-FLOATING-POINT-CONTAGION*

Compilation failed.
となってしまうんですが、どうしたらいいのでしょうか?

925:924
12/02/23 09:37:42.03
失礼、自己解決しました;
普通に
(load "smartcalcconsoleini.lisp")
で動きました;
手順にコンパイルするよう書いてあったのでそうしたのですが、、、
動いてよかったけどなんで動いたのか・・・;

926:デフォルトの名無しさん
12/02/24 02:42:41.49
PAIP邦訳の5章の演習問題の回答に5.19とあるのですが5.18の表記ミスですか?


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch