[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 06/03 12:44 / Filesize : 297 KB / Number-of Response : 927
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【入門】Common Lisp その8【質問よろず】



1 名前:デフォルトの名無しさん [2011/07/06(水) 17:15:15.55 ]
lispを触ってみたい入門者のQ&A
初心者のQ&A
本スレでは恥ずかしくて聞けない人のQ&A
本スレは高度すぎて割り込めない人のQ&A
linuxでなくてwindowsでやりたいんですが・・・Q&A
lispを使用してC#やJAVAの代替にするための方法(おまけ)

ま、ゆっくりたりましょう。

「いいものの本質は、いかなる時代においても変わらない」byパワーズ

(list
(url pc8.2ch.net/test/read.cgi/tech/1101386936/l50 :part 1)
(url pc11.2ch.net/test/read.so/tech/1140012484/l50 :part 2)
(url pc11.2ch.net/test/read.so/tech/1181479267/l50 :part 3)
(url pc11.2ch.net/test/read.cgi/tech/1201402366/l50 :part 4)
(url pc11.2ch.net/test/read.cgi/tech/1215834213/l50 :part 5)
(url pc12.2ch.net/test/read.cgi/tech/1234884136/l50 :part 6)
(url hibari.2ch.net/test/read.cgi/tech/1270370267/l50 :part 7)


□テンプレート置き場□
ttp://wiki.fdiary.net/lisp/ (id:guest pass:cl)


577 名前:デフォルトの名無しさん [2011/12/12(月) 07:50:42.44 ]
ubunto11.04 sbcl slimeでなぜかmapがエラーになるのは
何故でしょうか

578 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 08:54:50.86 ]
>>577
詳しく。コードとエラーメッセージなど。

579 名前:デフォルトの名無しさん [2011/12/12(月) 10:13:20.36 ]
(let ((myA (make-array 3
:initial-contents '(1 2 3))))
(map 'array #'(lambda (myX)
(+ myX 5))
myA))
ARRAY is a bad type specifier for sequences.
[Condition of type SIMPLE-TYPE-ERROR]

Restarts:
0: [RETRY] Retry SLIME REPL evaluation request.
1: [ABORT] Return to sldb level 6.
2: [RETRY] Retry SLIME REPL evaluation request.
3: [ABORT] Return to sldb level 5.
4: [CONTINUE] Continue from break.
5: [ABORT] Return to sldb level 4.
--more--

Backtrace:
0: (SB-KERNEL:%MAP ARRAY #<FUNCTION (LAMBDA #) {AF5978D}> #(1 2 3))

580 名前:デフォルトの名無しさん [2011/12/12(月) 10:16:45.56 ]
>>578

581 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 10:52:16.49 ]
ARRAY is a bad type specifier for sequences.
と書いてあるようだが…

582 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 11:14:34.31 ]
>>579
配列はシーケンスじゃねーです。

www.lispworks.com/documentation/HyperSpec/Body/t_array.htm
www.lispworks.com/documentation/HyperSpec/Body/t_vector.htm

ベクタ(1次元の配列)はシーケンス。

(map 'vector #'identity (make-array 3 :initial-contents '(0 1 2)))
;=> #(0 1 2)


583 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 13:22:01.17 ]
>>582
小学3年生ぐらいでもsbclを使うようになったのか。なんかすごい時代になったなあ。
>>579
ご両親に英和辞書の引き方を習うとLispの勉強がはかどるよ

584 名前:デフォルトの名無しさん [2011/12/13(火) 00:09:59.48 ]
ありがとうございました。

585 名前:デフォルトの名無しさん [2011/12/14(水) 10:38:08.67 ]
common-lisp.net/project/commonqt/



586 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 16:15:21.01 ]
>>585
Qt4.7でもつかえるのかな?


587 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 20:50:42.23 ]
APIが劇的に変わってなければ使えるように見える。
QtもCommonQtも使ったことないけど。

例によって、C++とCFFIを橋渡しするC++コードと、
その上で動作するLispコードの構成って感じ。


588 名前:デフォルトの名無しさん mailto:sage [2011/12/15(木) 21:55:52.02 ]
apacheのmod_lispでsbclが使える無料鯖ってどのくらい需要があるのかな?
電気代やセキュリティとかを気にせずWeb開発できるとlisperとしてはうれしいよね。

LTSが長くて管理しやすそうなのはCentOSだけど、ユーザが自宅のPCローカルで同じ
環境を作りやすいのはUbuntuなんだろうなあ。

589 名前:デフォルトの名無しさん mailto:sage [2011/12/15(木) 22:48:35.57 ]
>>586
前に見た時は、commonqtはQt smokeっていうC言語用のラッパーを通してcffiで
実装されていたと思うので、Qt smokeがQt4.7に対応している必要があると思う


590 名前:デフォルトの名無しさん mailto:sage [2011/12/15(木) 23:56:19.93 ]
>>588
無料鯖とかは嬉しいと思うけど、最近だとIaaSで好き放題できるから、
あんまり需要ないかも。CCL使えるPaaSとかも出てきたみたいだし。
お金ない学生とかは嬉しいかもしれないけど。

一昔前と比べると、この手のサービスも信じられないくらい安くなったよね。

591 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 01:13:44.82 ]
>>590
その激安IaaSサービスを具体的に教えてくれ。
PaaSもググったけど出てこないんだけど教えて。

592 名前:デフォルトの名無しさん [2011/12/16(金) 01:16:04.75 ]
板違い
toro.2ch.net/hosting/


593 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 01:44:24.18 ]
>>591
IaaSなら

さくらのクラウド
cloud.sakura.ad.jp/

CloudCore
www.cloudcore.jp/

とか。月\1500〜\2500程度。普通に安いよね?

PaaSは、自分が知ったのはこれ経由。

www.fluxflex.com/library/101

プリインストールかと勘違いしてたけど、
処理系のバイナリも含めてアップロードする模様。
動作はするみたいだよ。

594 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 03:12:00.72 ]
>>593
こういうのがあるんだね。

でも、大学生以下だと高いよ。
ビジネス用途じゃないものはリーズナブルコースでワンコイン以上取ってはダメだと思うんだ。

一般大学生の場合(大学生一人暮らしって少なくなったらしいけど)
光回線・プロバイダ代(7,000円)とケータイ代(3,000円)で10,000円。そこに2,000円はきつい。
実家・高校生の場合
光回線・プロバイダ代(7,000円)は親に丸投げできて免除できるだろうけど、ケータイ代(3,000円)は
全額親が払ってくれるか怪しいし、ケータイが必須になってしまった高校生のこづかいっていくらよ。
そこに2,000円はきつい。

ちなみに自分の高校3年生のときのこづかいは3,000円だったよ。両親の年収合わせて1,000万円はあった
一応中流世帯。まだネットもなくポケベルが流行り始めた頃でケータイ所持必須の同調圧力がなかった
頃の話だ。

595 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 07:17:41.31 ]
働けよ。同世代だが普通にコンビニでバイトして、小遣いはゼロだったわ。



596 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 10:49:27.99 ]
そもそも高校生以下にどれほど需要があるのか
あとスキル持ってる学生はお金に困ってないんじゃ

597 名前:デフォルトの名無しさん [2011/12/16(金) 15:03:26.84 ]
既存のxmlをcommon lispで書き換えるつまり処理した結果を上書き保存するというスクリプトを作成したいのですが、
うまくいきません

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.0//EN"
"www.oasis-open.org/docbook/xml/4.0/docbookx.dtd">
<article>
<articleinfo>
<title>test</title><author>my @@@name!</author>
</articleinfo>
<section id="rrr">
<title>test1</title>
<p>hoge@@@foo</p>
<pre>haao@@@u</pre>
</section>
</article>

このxmlのpとpreの@@@をpiyoに書き換えたいのですが
common lisp のxml parser である cxml を使おうとしたら
"URI scheme :HTTP not supported" とエラーメッセージが表示されます

common-lisp.net/project/cxml/quickstart.html#id54163
"Can I skip loading of DTDs entirely?"どおりにやってみたのですが、
それをもとにどうすればリストを取得できるのか書いていないためわかりません

cxmlで(恥ずかしながら)処理できないなら他のライブラリを活用しようと思うのですが
pとpreの要素に限定して@@@を書き換える処理におすすめのものはありますか

598 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 18:36:35.62 ]
quicklisp.lispは使っている?
httpもローカルファイルも両方できたよ。
(let ((uri "www.oasis-open.org/docbook/xml/4.0/docbookx.dtd")
(pathname "dtdexample.dtd"))
(flet ((resolver (pubid sysid)
(declare (ignore pubid))
(when (puri:uri= sysid (puri:parse-uri uri))
(open pathname :element-type '(unsigned-byte 8)))))
(cxml:parse-file "hoge.xml" (cxml-dom:make-dom-builder) :entity-resolver #'resolver)))
parse関連をまったくやったことないがttp://common-lisp.net/project/cxml/quickstart.htmlをもう一回頭からやり直して
それから自分のやりたい処理に取り組んだらどうかな。このページをさらっと読みながらcxmlを触ってみたけどcxmlで十分
なんじゃないのかな。軽くググった感じだけどかなりメジャーなライブラリの部類みたいだし。

目的の処理ができたらcxmlのインプレッションを教えてくれや。
がんばって。

599 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 00:15:05.42 ]
>>598
ありがとうございます 改めてやってみたらただしく動きました。
ですが、make-xmls-builderからリストを生成して操作しようとするとちょっと扱いづらいことがわかりました
こうなります
("article" NIL "
"
("articleinfo" NIL "
"
("title" NIL "test") ("author" NIL "my @@@name!") "
")
"
"
("section" (("id" "rrr")) "
"
("title" NIL "test1") "
"
("p" NIL "hoge@@@foo") "
"
("pre" NIL "haao@@@u") "
")
"
")
ここで一旦s-xmlを使ってみたら使いやすそうな形式のリストを得られました
(:|article| (:|articleinfo| (:|title| "test") (:|author| "my @@@name!"))
(:|section| (:@ (:|id| "rrr")) (:|title| "test1") (:|p| "hoge@@@foo")
(:|pre| "haao@@@u")))
ただこれをどのようにして書き換えるかがよく分からないので
本を読み直してみます

600 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 02:52:55.63 ]
>>597 >>599
common-lisp.net/project/cxml/quickstart.html#id54163
paste.lisp.org/display/126526

普通にDOMれば良いと思う。あるいはSTP。
Closure XML以外だとXMLSが軽いし使いやすくて好みだけど、
検証できなかったり、エラーハンドリングが終わってる欠点がある。


601 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 03:40:37.45 ]
>>599
>>336で出ているcl-ppcreで後は置換するだけじゃないの。
ttp://weitz.de/cl-ppcre/#splitting

軽い疑問なんだけどregexを使わない低レベルな検索・置換等の文字列処理関数群ってないの?
ググるとcl-ppcreばかり出てきちゃうんだよなあ。

あとまた別の話で低レベルな検索・置換等の文字列処理のみ(日本語不可)だったらライブラリ不要で
100行未満で書けないかね。非lisperに極力ライブラリをインストールさせない方が動かす敷居は
低くくなるよね。

602 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 06:10:32.50 ]
どうでもいいな。

603 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 10:27:17.59 ]
>>601
ツリーの一部を書き換える方法が分からないんだと思うけど。

文字列処理は、それが好きならsearchでもreplaceでも好きにやれば良いよ。

(let* ((string "The quick brown fox jumps over the lazy dog")
(from "fox")
(to "tiger")
(pos (search from string)))
(if pos
(let ((before (subseq string 0 pos))
(after (subseq string (+ pos (length from)))))
(concatenate 'string before to after))
nil))

何でHyperSpecとかCLtL2読まないの?

速度が必要でBMHとかQuick Searchを自前で実装、とかならまだしも、
よく分からん敷居のために既存のライブラリをインストールせず、
俺ライブラリを作ろうとか最早ギャグ。Quicklispで一瞬じゃん。


604 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 12:51:40.03 ]
>>603
糞lisperだけどツリーの一部を書き換えるのは難しそうだけど、最悪力技でもできそうな感じかな。
HyperSpecをみてみたけどみつけられなかった。もの凄く真剣に探したわけではないから軽い疑問と
書いた。

adsfよりはQuicklispは使いやすいし信用しているけど、ライブラリがあれば99%以上の精度で落とせて
使えたっけ。
あと一応ベータとしているのもあるけどミラーもないもまだないよね。どうしても非lisperに対してQuicklispを
使わせるのも大掛かりな気がしてならないんだよな。あと何かの処理をさせるツールが欲しいときにLisperの
ブログに引っかかってソースが載っていてもメジャーなライブリについては触れられていないでしょ。ライブ
ラリ揃えるべく素早くQuicklispに辿りつけるかね。
まあ、そういうのはCommonLispに求めずにPythonとかに任せておけばいいんじゃないというのもあるけどさ。
そういうところがCommonLispの普及を阻害しているなあと個人的に思う。


ttp://www.unixuser.org/~euske/doc/python/python-lisp-j.html の表の赤字で書かれているパッケージ
/モジュールは使いづらい(Harder to use)、GUI, Web などのライブラリは標準なしは解決された?
Japanese Translation Changes:公開。(2002/10/13)と書かれているから原文は2000年頃なのかな。
とりあえずGUI, Webなどのライブラリのデファクトスタンダードが決まっているならPythonの標準ライブラリと
呼応する形で改めて示した方がわかりやすいし利用しやすいのかな。"CLikiをみて好きなの選んでね。"は乱暴
過ぎでしょ。

デファクトスタンダードを(一応、合意の下)ちゃんと定義するとは違うけど、CLikiにアマゾンのレビュー
システムみたいなのがあれば玉石混交から適切な玉を選べそうだけど。

605 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 14:51:56.26 ]
>>604
まあ、いつもの人だって文章から滲み出る雰囲気で分かるけど。

その99%っていうのはどこから来た数字なのかな? 何か意味がある?
Amazon S3がバックエンドだそうだから稼働率の保証は99.9%らしいけど、
そんなのは本当にどうでも良い気がするよ。

Quicklispが大がかりなら、PerlやRubyではCPANやRubyGemsを使わないし、
LinuxやWindowsでもパッケージシステムを使わないで過ごしてるの?
自分ですべてのライブラリを開発して保守する方が敷居が低いと本当に思う?
批判のための批判になっていないか? より具体的に何をどうして欲しい?

ちなみに、日本語でのライブラリの紹介とか、Pythonライブラリの実装とか、
CLikiでのお勧めライブラリ紹介とか全部すでに存在自体はあったりする。
無論「初心者には」CLikiを見ろで済ませないよ。知ってれば案内すると思う。
ただ、Lispのここが、って語ってる人、別に初心者じゃないよね。




606 名前:599 mailto:sage [2011/12/17(土) 15:53:00.46 ]
>>600-601
ありがとうございます。
>>600のxmlsとxmlの両方の例を示してくださり勉強になります
(木構造を渡り歩くwalkerがとくに)

607 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 17:16:33.39 ]
>>605
99%の数字はあんまり意味はない。そのくらいの精度・品質ならユーザーとしては困らないし、我慢できる範囲
だろうなあと思っているだけ。
> Quicklispが大がかりなら、PerlやRubyではCPANやRubyGemsを使わないし、
> LinuxやWindowsでもパッケージシステムを使わないで過ごしてるの?
Linuxに軽くでも腰をすえている人ならaptやyumでパッケージシステムを使う人が多いでしょうよ。aptやyumでライブ
ラリを落とせるなら落とすだろうけど、非Perler,非RubyistがCPANやRubyGemsを使うかな。処理系に標準
パッケージシステム(山)があるなら使うって体ができている人(登山家)の考え方じゃないの。
> 自分ですべてのライブラリを開発して保守する方が敷居が低いと本当に思う?
そんなこと言っていないよ。変な曲解はやめてくれ。
ようするに"Pythonの標準ライブラリが便利そうだな。ブログでチラシの裏コードを書いて非Pythonistが
容易に動かせるってうらやましい"って話だな。
> ちなみに、日本語でのライブラリの紹介とか、Pythonライブラリの実装とか、
> CLikiでのお勧めライブラリ紹介とか全部すでに存在自体はあったりする。
一部の人に流通してもしようがないと思うんだけど。
Lispコミュニティ維持・拡大のための仕掛けや仕組み自体が良くないんじゃないのではないのかという疑念が
生まれてきた。一般Lisperが道にゴミを捨てない・落ちているゴミ拾うぐらいのことで自然と規模の維持が
できて、ちょっとした風が吹けば拡大していくような状況ってできると思うし、そのくらいのポテンシャルを
持っている言語でしょ。非Lisperは道にゴミを捨てなければ落ちているゴミを拾うことなんてしなくていいし、
楽しんで使ってくくればいい。

あとリンクのページは駄文じゃないのでざっとでも読んで欲しいね。

608 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 17:20:01.89 ]
Rubyはディストロのパッケージングシステムで入らないライブラリが多いとですよ

609 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 19:22:44.19 ]
>>607
毎度思うんだけど、独自の自分だけに通じる数字持ち出すの止めようよ。

>>601の「低レベルな 」の段落とか、まさに車輪の再発明の推奨なんだけど、これも曲解?
既にある程度評価されている、整備されたライブラリがあって、入門者がそれを知らないなら、
使うように導きこそすれ、同等のものを新規に書きましょう、なんて普通言わないでしょうよ。
最近ようやっと、まともに動くパッケージマネージャ(Quicklisp)も出てきた状況で。

あとね、疑念がどうこう言うなら実際に動いてみなよ。実際に日本語の情報を書いたり、
処理系の機能向上のために寄付したり、イベントに参加したり、布教して盛り上げたり。
どうも、今いる人たちが無関心で努力してないように思いたくて仕方ないみたいだけどさ。
一気にドラスティックに変えたりなんて、そうそうできないんだよ。一歩ずつ進むしかない。
一部の人にのみ知られている状況なんて百も承知で、改善するために動いてる人もいる。
君がそういう活動に本当に協力してくれるなら、どこでも歓迎されると思うよ。
本気でやる気があるならその原動力になって欲しい。これは煽り抜きで。

最後に、Lispに関する文書なんてお決まりなんだから、大抵のLisperは読んでると思うよ。
NorvigとかGarret(Gat)とか。pgのエッセイへの反応とかね。問題があるのは知ってる。
だからって、一気にそれを改善とかできないんだよ。魔法の杖なんてない。


610 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 20:16:05.17 ]
ブログを参考にするのは分かっているときにするべきだと思うなあ。
推奨ライブラリは
www.cliki.net/Current%20recommended%20libraries



611 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 21:07:37.55 ]
cl-ppcreで改行を取り除くにはどうすればいいでしょうか

612 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 21:45:57.32 ]
>>611
(ppcre:regex-replace "\\n" (format nil "~%") "")
;=> "", T
(ppcre:regex-replace "\\n$" (format nil "a~%") "")
;=> "a", T


613 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 22:06:59.31 ]
>>610
こんなページがあるんだね。これが欲しかったのよ。いつもCLikiはある処理のカテゴリの
雑多な紹介ページをみていたわ。サンクス。

あとブログって俺がリンクしたページのこと?
リンクしたのは作者のページだし、CLikiから飛んでそこに行ったんだけど注意するなら
ちゃんとリンクチェックして書き込んで欲しいなあ。ゴミを拾っているつもりなんだろうけど、ゴミを散らか
してなおかつ昼食に食った弁当と飲み物をポイ捨てしているようでは世話ないよ。あとこれだけライブラリ
提供しているんだから超有名人なんじゃないの。自分は今知ったけど。

あとアンカーをちゃんと付けろよ、バカ。アンカーの付け方がわからないなら半年ROMれ。
610が求める2chのCLスレが道にゴミだらけで誰も拾わないスレを望むならそういう振る舞いもかっこいいし、
リソース食いつぶして、玉石混交の2chで玉を弾き、悪貨が良貨を駆逐して焦土化して入門者を路頭に迷わせて
他の言語の扉を叩かせるのもありだろうなあ。

正しくアンカーをつける。反論するときはリンクをチェックする。これだけを教えるためにこのくらい言わない
とわからんのだろ。lispをちょっとかじって頭を働かせればどういう行いが良くて、どういう行いが悪いかなんて
わかるだろ。歳を重ねればもっと鮮明になるしな。
ttp://weitz.de/
CHUNGA - Portable chunked streams for Common Lisp. [1.1.1 / 2010-05-19]
CL-DONGLE - A Lisp interface to SG-Lock dongles. [0.1.2 / 2008-05-01]
CL-INTERPOL - String interpolation for Common Lisp. [0.2.1 / 2008-07-25]
CL-PPCRE - Portable Perl-compatible regular expressions for Common Lisp. [2.0.3 / 2009-10-28]
CL-UNICODE - A portable Unicode library for Common Lisp. [0.1.2 / 2011-08-31]
CL-WHO - Yet another Lisp markup language. [0.11.1 / 2008-03-28]
DRAKMA - A Common Lisp web client. [1.2.4 / 2011-08-31]

614 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 22:08:54.39 ]
「僕は無能です」まで読んだ

615 名前:610 mailto:sage [2011/12/17(土) 22:23:58.96 ]
>>613
ブログについては、ブログは間違いや迂遠な方法を紹介していることも多いという、自分の所感から。

アンカーについては、書き込み以前の流れ全体に対してレスしたつもりで、
具体的にどのレスに対するものかは考えてなかったので。



616 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 22:26:35.96 ]
何の議論してるのか傍目には全くわからんのだが。二人とも、もっと簡潔に書いてくれよ。

617 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 22:37:38.60 ]
俺:「Quicklispマンセー。あと、個人でコツコツ布教頑張ってる人いるんだから、
あんま文句言うのやめね? 自分が上手くできるというならやってみたら」

を、煽りつつ。何かよく分からん理由でQuicklispとか諸々disられたからイラッときて。
前から何かヌーディストビーチとか色々変に絡まれてたフラストレーションも含めて。

はてなのCLの人とかおにぎりの人とか、ILCの関係者とか色々頑張ってんのにさー。


618 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 00:01:47.78 ]
#1:すぐに話の風呂敷を広げる
#2:よく理解しないまま突っ走る
#3:嫌われていると勝手に思い込んでいる
#4:キレて他人に八つ当たりする
#5:やたらと自分の正当性を主張する
#6:何も自分で決めない
#7:何かにつけて理屈をこねる
#8:やたら褒めてほしがる
#9:他人の話を聞かない
#10:何が言いたいのかわからない
japan.zdnet.com/sp/feature/07tenthings/story/0,3800082984,20421237-2,00.htm

619 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 01:04:06.54 ]
>>612
ありがとうございます。\nでうまく処理できないと思いましたが
\\nだったのですね

620 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 01:15:23.70 ]
>>618
初めて2chで勉強になった情報だわ
ありがとう


621 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 01:23:32.98 ]
肩の力を抜けよ

622 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 01:36:45.48 ]
>>615
ブログ参照うんぬんはテンプレ案としてはっきり出せよ。言葉足らずで全然わからんよ。

ネットの先には生身の人間がいるんだよ。ちゃんと3回読んで、自分の伝えたい相手に明確に宛てて、
違う意図として取られないか、言葉足らずじゃないかとかちゃんと判断している?
>>617
団体で動いている人は良いけど。個人でがんばるのは限度があるんじゃないの。もちろん、複数で
まとまって活動するってもの凄く難しいことなんだけど。

"誰々が頑張ってんのにさー。"とチャチャ入れて日本Lispコミュニティ自体について議論させない流れって
意味があることなの?

623 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 02:00:21.22 ]
>>609
98.56%と小数点入っていないんだから何かの引用でないってことぐらいわかるでしょ。あと具体的なソースがある
なら貼るし、品質・安定性・信頼性が高い、割と高いと抽象的に表現しても自分のイメージを具体化することを
怠っているし、相手になんとなくわかるようで実際の所は頭の中に具体化した数字のイメージの違いなんてすごく
開きが出てきそうで伝わらんし、議論も進まないでしょ。自分の認識の違いが間違っているなら訂正されて誰もが
異論を唱えなければ合意の下の仮定の数字になって、それを土台に議論もできるでしょ。

あと具体的な数字持っているならその情報集積群の場所を教えてよ。
> >>601の「低レベルな 」の段落とか、まさに車輪の再発明の推奨なんだけど、これも曲解?
純粋にreplaceの存在を知らなかった。コーヒータイムついでにHyperSpecを目視のみで探したんだけどみつけられ
なかった。emacs lispのinfoは通しでやったけど、CLは処理テーマごとに広く漁って勉強している。
> どうも、今いる人たちが無関心で努力してないように思いたくて仕方ないみたいだけどさ。
そうは言っていないよ。示したPythonとLispの比較のページは2002年だけどそのの頃はrubyの方がメジャーで
Pythonはまだまだって感じだったでしょ。Lispについて関心がなかったのでどういう状況だったのか、よくわから
ない。
ページが翻訳されて、問題意識として共有されて、Lispコミュニティで各人が労力を割いて反映されて活動したわけ
だよ。それで約9年経った現在があるわけで今の仕掛け・仕組みで活動すれば最悪現状維持できて、風が吹けば拡大
していきそうなの? 日本のLispコミュニティ、それより小さい東京のLispコミュニティでもいいから今までの
仕掛け・仕組みを根本から疑って展開していった方が良いんじゃないのかな。一般Lisperは道にゴミを捨てない・
ゴミ拾い・あとそれに毛が生えたことぐらいしかできないよ。その一般Lisperのゴミ拾いリソースを的確な仕掛けに
よって自然と効果的な場所に集めて、効果的なゴミ拾いをさせる。もちろん、コミュニティだから強制力はないし、
誰かが統制的に管理・運用するのも変な話だしね。そうは言ってもLispコミュニティコミットしていて拡大に異を

624 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 02:06:16.23 ]
>>623
>あと具体的なソースがある なら貼るし
つまり裏付けのない主観が出した数字で傾向を語ったのか?

莫迦なの?

625 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 03:45:53.40 ]
>>609 つづき
唱える人はいないと思うし、Lispコミュニティ拡大のためならもう少し踏み込んで色々と議論すれば問題意識が鮮明に
なって共有されて軽い強制力(緊張感)を伴う合意も得られて、もっと効果的な活動ができるんじゃないのかな。地味な
話だけど便利なネット本屋でLisp関連の本は注文せずに自分が住んでいる最寄りの大きい本屋で注文するとか。図書館に
Lisp本を買わせるとか。多言語コミュニティとの比較して、無いモノ探しばっかりしていないか疑い、有るモノ探しを
怠っていないか、疑うべきだと思う。労力・お金も低コストで効果的な方法って探せばいっぱいあると思うよ。ネットが
普及してまだ法的な縛りもきつくない創世記なんだから創世記世代として仕組み・仕掛けを真剣に考えて、真剣にゴミ
拾おうよ。それで仮にLispコミュニティ自体がなくなるなら自分にも説明がつくし、後世の人に説明もつくでしょ。
あと日本においての将来のネットの法規制やプログラミング規制についてもLisp団体はちゃんと議論して声明出すとかね。
言語コミュニティ以前に10年後ぐらいに変なこじつけで重規制されたら暗黒時代に突入しかねないし。

あと一気にドラスティックに変える、変わりたいなんて思っていないよ。これからの9年とその先の9年で18年間で何が
できるかって話だし、何をするかって話でもある。 おわり



626 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 10:53:21.52 ]
>>622
別に日本のLispコミュニティ自体の議論をしたいなら、すれば良いと思う。
例えば、こういう情報へのアクセスが悪いから、こうしませんか、とかなら、
じゃあこういう形で協力するよ、とかなるじゃない。

それを、具体的な対案を出さずに、以前から指摘されている欠点の指摘だけされても、
言うは易しだ、みたいに言いたくもなるよ。それもかなり上から目線だし。
茶々を入れたかったわけじゃなく、頑張ってる人は見てあげてよって言いたいだけ。

あとは、個人で頑張るのは限度があるのはもちろん事実だと思うんだけど、
多くのコミュニティを支えてるのもまた、個人の色々な形での努力なわけで。
団体と個人は車の両輪みたいなものなんだと考えてる。


627 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 10:59:21.90 ]
>>619
良かったら、見てみてー。

tips.lisp-users.org/common-lisp/index.cgi?CL-PPCRE
cl.cddddr.org/index.cgi?CL-PPCRE

上の方は単なる例の羅列で申し訳ないんだけど、種類は色々書いてあるから。
あとは、これが足りないとか知りたいとかあったら教えてください。


628 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 11:14:37.44 ]
>>627
ありがとうございます。既知の注意点だったのですか。
失礼しました。

629 名前:デフォルトの名無しさん [2011/12/18(日) 20:05:39.81 ]
cl-ppcreの質問です
非ASCII CODE文字間の空白を _ に変えようとして正規表現を
(?=[^\x00-\x7f]) (?=[^\x00-\x7f])
に、置換文字列を
_
としたら"a b c"には予想通りヒットしなかったのに"a あ"ではヒットしてしまいました
"a あ"のように空白を挟んでいる文字の一方がASCII文字ならヒットさせたくないのですが
修正する箇所をご教示ください

630 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 20:26:19.91 ]
>>629
"(?<=[^\x00-\x7f]) (?=[^\x00-\x7f])"
でどうだ。

631 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 20:52:45.89 ]
>>630
(ppcre:parse-string "(?<=[^\x00-\x7f]) (?=[^\x00-\x7f])")
;=> (:SEQUENCE
; (:POSITIVE-LOOKBEHIND (:INVERTED-CHAR-CLASS #\x #\0 (:RANGE #\0 #\x) #\7 #\f))
; #\
; (:POSITIVE-LOOKAHEAD (:INVERTED-CHAR-CLASS #\x #\0 (:RANGE #\0 #\x) #\7 #\f)))

になっちゃうんで、エスケープ必要。

(ppcre:regex-replace-all "(?<=[^\\x00-\\x7f]) (?=[^\\x00-\\x7f])"
"a b あ い"
"_")
;=> "a b あ_い", T


632 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 22:32:47.97 ]
どうもです。ばっちり動きました。

633 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 23:12:34.49 ]
>>626
> それを、具体的な対案を出さずに、以前から指摘されている欠点の指摘だけされても、
> 言うは易しだ、みたいに言いたくもなるよ。それもかなり上から目線だし。
言うは易しって簡単に使っているけどなあ。日本Lispコミュニティで既に共有済みの指摘
されている欠点をまとめてくれよ。
人間に敬意を払うのは当たり前として議論において神経症的に上から目線うんぬんを
持ち出すことに意味があるの?
議論させてないために文句言っているようにしか聞こえない。
9年後の今についてどう捉えているの? 方向性・方策は失敗だったのか、成功だったのか、
それらへんをはっきりさせて、もう一回議論しても有意義だし、勝手連で適当にやれば
いいよという結論でリソースを食いつぶしていくのもありだと思うし。
> 多くのコミュニティを支えてるのもまた、個人の色々な形での努力なわけで。
> 団体と個人は車の両輪みたいなものなんだと考えてる。
もちろんそうだと思うし、協調し合って拡大に向かえるのかは怪しい。でも、議論して
問題意識を共有して、もの凄く良い方策はみつらないかもしれないけど、その議論の後に
いいアイデアが思い浮かぶ場合もあるし、問題意識を共有したおかげで個人の行動が
ちょっと変わったりするし、誰かと組んでおもしろいことしようと声かけやすくなったり、
次の議論に自然と移れるわけだし、議論したことによるマイナス要素ってないと思うん
だけどね。

自分は地方出身者で東京に出てきたけど、東京にいればある程度イベントがあるから
居心地良いけど、地方だとオフ会なんてしにくいし顔をつき合わせた情報の共有化って
できないよね。オンラインでやりとりするのがメインだけど、オフラインのやりとりも
軽くカバーしないとLispから離れていくんじゃないのかなと漠然と思っている。
あと学校のパソコン部の担任の教師が軽いLisperとしてその地域にコミュニティがない
んであればLispを推すのは難しいよね。無難な言語になりそうだよね。

634 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 00:38:52.80 ]
Learn to code | Codecademy
www.codecademy.com/#!/exercises/0

このサイトのcommon lisp版が出来れば
普及にスピードが出ると思う
common lispの開発環境を整えるだけで息切れする人もいるだろうから

635 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 07:05:48.15 ]
>>634
Lispboxがあるよ。(Linux/Windows/Mac対応)



636 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 15:39:51.25 ]
lispboxなんてものがあるのか
知らなかったわ

637 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 16:35:32.74 ]
>>636
windowsなら、lispboxそのまま落して使うってのの他に、gnupackにslimeを導入するってのもいいよ。
「gnupack slime」で検索すると出るよ。

gnupack
gnupack.sourceforge.jp/docs/latest/UsersGuide.html

gnupack + NTEmacs23 で SBCL/SLIME
aikotobaha.blogspot.com/2010/08/gnupack-ntemacs23-sbclslime.html

ubuntulinuxなら、slime導入で勝手に構築されるけど、ubuntu11.10は要注意。
そのままだとslimeが起動できない。
ホームディレクトリに.sbclrcというファイル作って(require 'asdf)と書き込むと起動できるようになる。
d.hatena.ne.jp/ddk50/20111028
を見付けるまで、悩んだ。

638 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 21:42:42.37 ]
>>637
つか, Linux のパッケージシステムってディストリに関わらず
ドキュメント類が別扱いのやつ多すぎ

ドキュメント類まで有無を言わさずつっこむ
bsd 系のパッケージシステムの方がありがたい


639 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 21:50:38.85 ]
>>638
パッケージをつくるときに、
バイナリパッケージはアーキテクチャごとに、
バイナリ以外はどのアーキテクチャでも使えるようにしてるから。
HDDの容量の関係もあるのかな。

一応依存関係があれば一緒にインストールもしてくれるはず。

640 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 21:57:54.45 ]
>>639
依存関係が切れてるやつ多すぎ
あるいは、 *-devとかに依存してたりして
--without-dev とかのスイッチつけなきゃフルインストール
ってな、ノリの方がありがたい


641 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 22:01:07.76 ]
他所でやれ、アホが。

642 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 00:11:10.60 ]
apt-getとaptitudeの違いを語るスレと聞いて

643 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 14:00:11.39 ]
emacs23+clisp+slimeの環境でcommon lispやってるんだけど
入力するとこの>より前がBreak 1 SWANK-LOADER[2]>ってなってるんだが
これだと何かまずいのかな?
みんなCL-USER>ってなってるみたいなんだが

644 名前:デフォルトの名無しさん [2011/12/20(火) 15:25:34.48 ]
lispboxのwindows版を落としたはいいものの
インストール方法がわかりません;

645 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 16:41:50.55 ]
>>644
公式ページを辞書片手に訳せ



646 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 16:42:53.92 ]
>>643
多分、起動時に何らかのエラーが出てると思われるので、
*inferior-lisp*バッファで出力を確認することを勧める。

>>644
ファイルを展開したら出てくるlispbox-0.7を適当な場所に放りこんで、
その中のlispbox.batを実行でハッピー。


647 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 17:34:44.51 ]
>>646
ありがとうございます!

648 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 01:19:08.23 ]
CCLとsbclで自身のファイル(test.lisp)のファイル名を取得するには
どうすればよいでしょうか?


649 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 01:59:41.07 ]
>>648
compile-file前提なら

(defvar *file* #.*compile-file-pathname*)

でいける気がするけど、REPLとは相性が悪いと思うので、お勧めしない。

具体的にはどういうことがしたいの?

650 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 02:31:49.09 ]
>>649
自分のファイル名に.exeをつけたパスで
実行ファイルを作成しようとしました
test.lisp->test.lisp.exe
hoge.lisp->hoge.lisp.exe
こういう風にです

651 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 12:04:40.92 ]
>>650
save-applicationとかsave-lisp-and-dieは実行すると処理系が終了するけど、
その辺りの考慮は大丈夫?

その辺はばっちり考慮していて、インタラクティブに評価するときに注意するなら、
ある種のkludgeとして>>649を使えば良いと思う。自分は他の方法は思い付かない。

そのアプリケーションの詳しい機能が分からないので何とも言えないけど、
あるいは、makeで拡張子を利用したルールでビルドした方が楽かもしれないよ。

652 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 12:17:25.65 ]
>>651
>あるいは、makeで拡張子を利用したルールでビルドした方が楽かもしれないよ。
その手を考えていませんでした。ご指摘ありがとうございます。


653 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 02:56:58.14 ]
Common Lispの勉強に役立つサイトでおすすめのところを教えてください。

clispを入れて、カーとクダーは覚えました。他にどんな関数があるか知りません。
末尾再帰とか以前に再帰がわかりません。CLOSに興味があります。

654 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 03:17:56.14 ]
>>653
www.geocities.jp/m_hiroi/index.html

あとはこのスレのテンプレとか見て

655 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 07:33:27.39 ]
>>654
ありがとうございます。参考にさせていただきます。



656 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 19:37:27.23 ]
指定したファイルの更新時刻を変更するにはどうすればよいのでしょうか
取得するのは file-write-date でできましたが
任意の時刻に書き換える方法がわかりません

657 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 20:03:07.29 ]
SBCL@UNIXならsb-posix:utimes

658 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 20:09:07.78 ]
>>656
標準ではないみたい。

rosettacode.org/wiki/File_modification_time#Common_Lisp

OSのAPIにアクセスするには、OsicatかIOLibを使えばできる。
SBCLならPOSIXモジュールがあるよ。

IOLib
common-lisp.net/project/iolib/

Osicat
common-lisp.net/project/osicat/

使い方分からなかったら教えて。

659 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 20:26:56.74 ]
>>658
> OSのAPIにアクセスするには、OsicatかIOLibを使えばできる。

うーん

660 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 20:32:42.97 ]
>>659
ごめん。表現の仕方が悪かった?
POSIXのAPIにアクセスするなら、ではどう?

661 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 23:02:25.66 ]
そこにutime(2), utimes(2), futimes(2), utimensat(2)があるわけ?

662 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 02:03:40.58 ]
>>661
はあ? あるに決まってんじゃん、この前ソース眺めたとき確かに見たわこのボケが!
と思って見返したら、どうみても俺が痴呆です本当にありがとうございました。

代わりに供物を用意したので命だけは見逃してください。

paste.lisp.org/display/126696

663 名前:656 mailto:sage [2011/12/27(火) 03:05:55.45 ]
書き忘れていました。osはwindowsでsbclです。
>>658-662
ありがとうございます。>>662でokでした。

664 名前:662 mailto:sage [2011/12/27(火) 03:21:58.01 ]
>>663
大変失礼致しました。指摘の通り、>>658の4行目以降は嘘なので信じないでください。

また、余談ですが、Windows APIのバインディングとして、

Doors
https://github.com/Lovesan/doors

というDmitry Ignatievによるライブラリがございまして、

https://github.com/Lovesan/doors/blob/master/system/time.lisp

に今回のような時刻関係のAPIが定義されている様ですので、興味をお持ちになったらお試しください。

というわけで、どうぞ上の恥ずかしいアレっぷりを記憶から速やかに抹消してください。
さもないと枕元に立ちます。

665 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 11:31:19.14 ]
SBCLで大文字・小文字を区別する方法ってありませんか?
CL-USER> (setq L '(1))
(1)
CL-USER> L
(1)
CL-USER> l
(1)
商用CLは大文字・小文字を区別すると聞くのでその処理系と互換を持たせた仕様
だとすばらしいです。



666 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 14:21:17.64 ]
>>662
> (窓)paste.lisp.org/display/126696

おお、O_RDWR | O_APPENDでopenしてすぐcloseするオールドスタイル!

667 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 15:42:39.91 ]
>>665
商用でなくともCLは大文字と小文字を区別する
readtable-caseで検索すればいいと思う

668 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 20:39:28.46 ]
readtable-caseは>>436あたりからの話を見れば

669 名前:デフォルトの名無しさん [2011/12/30(金) 11:18:57.56 ]
emacs+slimeでお
インデントがうまくいかないないのですが
うまくいくヒント設定方法よろしくお願いします。

670 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 11:21:41.50 ]
ついこないだこんな設定を加えた
(setq-default indent-tabs-mode nil)

でもどううまくいかないか具体的に書いたほうがいいよ

671 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 12:44:17.22 ]
indent がうまくいかないなんてあったっけ。

672 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 00:11:35.74 ]
unwind-protectのformを次の行に置くとき、期待した場所より余計に下がったり、
handler-caseのインデントが狂ったりしたことは前にあったな。詳しく調べてないけど。

673 名前:デフォルトの名無しさん [2011/12/31(土) 01:28:06.63 ]
>>669
ifのインデントなんですが

674 名前:デフォルトの名無しさん [2011/12/31(土) 01:35:17.77 ]
>>673
ifの次が下がり過ぎるのですが

675 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 01:39:54.69 ]
>>674
こうしたい、という例と、こうなる、という例を貼ってくれ。
そうすれば、もっとみんな適切に回答できる。



676 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 01:42:13.47 ]
(if
nil
1
2)
うちはこんなんだな

677 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 01:53:00.16 ]
>>676
うちもこんなんだな。

(
if
nil
1
2
)

マジレスすると俺のはこんなんだが、

(if nil
1
2)

もしかして、伝統的なスタイルを期待してんのかね?
thenとelseを揃えないRMSの好きなあれ。

678 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 02:54:24.33 ]
(if nil
  1
 2)

これか?

679 名前:デフォルトの名無しさん [2011/12/31(土) 04:40:35.58 ]
(if (test)
(do 
 こうしたいのですが
(if (test)
(do
こうなってしまいます。



680 名前:デフォルトの名無しさん [2011/12/31(土) 04:43:00.81 ]
↑間違いましたすみません

(if (test)
 (do 
 こうしたいのですが
(if (test)
   (do
こうなってしまいます。


681 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 07:18:16.08 ]
言語構造よりライブラリの豊富さが実用上大事だ。
LISPとか教科書・勉強で使うくらいしかないんでは。
LISPでC#やJavaやPHPの代替できるくらいにライブラリあるのかよ。

682 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 07:34:44.41 ]
そうなんだよ。だからこんな所に来なくて大丈夫だ。お疲れ。

683 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 09:38:14.04 ]
>>679
これじゃだめ?
M-x common-lisp-set-style
Specify Common Lisp indentation style: classic


684 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 16:04:33.81 ]
>>683
それってなんていう.el?
M-x common-lisp-set-styleなんてないし、aprops-variableでも関連変数が引っかからないんだが

685 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 17:29:40.54 ]
>>684
横からあれだけど
slimeのcontribの中に入ってなかったっけ?slime-setupだかでなにかロードさせる必要があったような。
今PCの前にいないんで曖昧で間違ったこといってるかもしれないけど。



686 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 19:31:34.40 ]
>>684 >>685 が書いてるように ${SLIME_ROOT}/contrib 下に入ってる
slime-setup の引数で渡すとロードしてくれる

うちの .emacs は以下のような設定になってる
(slime-setup '(slime-fancy slime-indentation))


687 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 23:06:41.50 ]
>>686
サンクス
こういうのかあるのね
M-X common-lisp-set-style
basic
classic
modern
sbcl

688 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 23:09:05.09 ]
皆さんよいお年を!
2012はCommon Lispが大復活することを願って。

689 名前:デフォルトの名無しさん [2012/01/01(日) 03:51:43.39 ]
>>687
詳しくお願いします。

690 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 07:29:22.27 ]
去年、John McCarthy総裁が崩御されたし、今年一年は大人しくするぜ。
再来年をCommon Lispの飛躍の年にしましょう。
>>688

>>683
>>684 自分
>>685
>>686
の流れだよ。
slimeが入っていたら動くんじゃないかな。

>>685-686のcontribは自分の環境だと/usr/share/emacs/site-lisp/slime/contrib/
のことなのかな。よくわからん。特別設定せずにM-X eval-regionして>>683のが
動いちゃったし。classic入力の所でTabを押すと他の候補が出てくるよ。

老婆心だけど、(slime-setup '(slime-fancy slime-indentation))をマークして
M-x eval-regionするとemacs lispで評価されて設定される。
navi2ch上でマークしても評価されるんじゃないかな。

691 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 23:56:10.75 ]
力尽きた。まだ追加することあったら誰かやって。

cl.cddddr.org/index.cgi?SLIME%3aslime-indentation

692 名前:デフォルトの名無しさん [2012/01/03(火) 01:56:05.82 ]
↑ありがとうございます。

693 名前:デフォルトの名無しさん [2012/01/04(水) 06:25:02.26 ]
>>691
追加お願いします。

694 名前:デフォルトの名無しさん [2012/01/04(水) 10:39:17.77 ]
>>683
691うまくできませんでした
設定方法よかったらお願いいたします。

695 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 14:21:46.13 ]
>>694
>>683-693までを3回読め、文盲



696 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 17:18:50.00 ]
>>694
どのように上手くいかなかったのかkwsk。
どういう設定をして、どういうエラーが出たとかを「可能な限り詳細」に。

697 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 23:58:13.38 ]
>文盲
よめません

698 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 04:49:20.75 ]
関数の引数リストを取得する方法って標準の範囲であるんでしょうか
sbclのdescribe(呼ぶと引数リストも表示する)だと内部でsb-kernel:%simple-fun-arglistを呼んでいるぽいですけど

699 名前:デフォルトの名無しさん [2012/01/05(木) 07:15:50.25 ]
>>694
.emacsに
(slime-setup '(slime-fancy slime-indentation))
を書く
M-x common-lisp-set-styleすると
M-x common-lisp-set-style[No match]

700 名前:デフォルトの名無しさん [2012/01/05(木) 07:28:30.22 ]
>>696↑間違いました。
.emacsに
(slime-setup '(slime-fancy slime-indentation))
を書く
M-x common-lisp-set-styleすると
M-x common-lisp-set-style[No match]

701 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 07:57:07.40 ]
とりあえずEmacs再起動してみるとか

702 名前:デフォルトの名無しさん [2012/01/05(木) 08:04:00.79 ]
>>701
Emacs再起動してもだめなんですよ。

703 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 08:12:37.95 ]
slime のバージョンは?
そもそも slime のインストールディレクトリに contrib/slime-indentation.el と
contrib/slime-cl-indent.el のファイルある?


704 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 08:16:17.89 ]
>>699
環境は? Lispbox? 普通にインストールしたEmacs?

(slime-setup '(slime-fancy slime-indentation))

をC-x C-eで評価するとどうなる? 起動時に何かエラーメッセージは?
*Messages*に何かエラーが出てる?

>>699の状況を説明すると、正常にslime-indentationがロードされていない。
だからそこで定義されているcommon-lisp-set-styleも実行できない。

705 名前:デフォルトの名無しさん [2012/01/05(木) 08:41:25.08 ]
C-x C-eで評価するとEnd of file during parsing
普通にインストールしたEmacsです。
contrib/slime-indentation.el はあるけど
contrib/slime-cl-indent.el はない



706 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 10:40:33.98 ]
>>705
環境を晒せよ、バカ

707 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 10:47:45.62 ]
そういや、環境晒し方みたいなのってないね。
emacs関連だけでも書いておくといいかも。

708 名前:デフォルトの名無しさん [2012/01/05(木) 21:58:26.64 ]
>>705
ubunto11.04
sbcl
emacs23.2.1


709 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 22:33:15.35 ]
肝腎要のslimeのバージョンは?


710 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 23:19:40.86 ]
>>709
"普通"と言っているんだから、このバージョンなんじゃない。
環境設定苦手なのであとはよろしく。
Package: slime
Version: 1:20100722-1
Depends: emacsen-common, dpkg (>= 1.15.4) | install-info
Recommends: cl-swank (= 1:20100722-1), info | info-browser, emacs23 | emacs22 | emacs-snapshot | xemacs21
Filename: pool/universe/s/slime/slime_20100722-1_all.deb
Size: 1269716

ftp://ftp.riken.jp/pub/Linux/ubuntu/dists/natty/universe/binary-amd64/Packages.bz2
ftp://ftp.riken.jp/pub/Linux/ubuntu/pool/universe/s/slime/

711 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 00:00:15.48 ]
Ubuntu Nattyではslime-indentation.elは入ってるけどslime-cl-indent.elは入ってない
packages.ubuntu.com/ja/natty/all/slime/filelist

で、どうやらslime-cl-indent.elは最近入ったファイルらしい
lists.common-lisp.net/pipermail/slime-cvs/2011-May/009688.html
random-state.net/log/3513839648.html

ちなみにUbuntu Preciseには入る模様
packages.ubuntu.com/precise/all/slime/filelist

で、どうすればいいかはUbuntu使ってないので私もわかりますん

712 名前:デフォルトの名無しさん [2012/01/06(金) 00:00:24.01 ]
>>709
slime 1:20100722-1

713 名前:710 mailto:sage [2012/01/06(金) 00:23:29.38 ]
ubuntuを使い込んでいなので不具合が起きても知りません。elispだからOSには悪影響が出ないで
しょう、きっと。

環境Kubuntu10.04 amd64だけど、無理やりslime_20111027-2_all.debを入れると>>683が出るね。
wget ftp://ftp.riken.jp/pub/Linux/ubuntu/pool/universe/s/slime/slime_20111027-2_all.deb
sudo dpkg -i slime_20111027-2_all.deb

(setq inferior-lisp-program "/usr/bin/sbcl")
(require 'slime)
(setq slime-default-lisp "sbcl") ;; いらないかも
(slime-setup '(slime-repl))
(slime-setup '(slime-fancy slime-indentation))
>>711
公式のcurrentバージョン(2012-01-05)のChangelogを読んだけど、書いてなかったなあ。
作法としてChangelogをみるのが正しくないのかね。

714 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 01:00:08.28 ]
quicklisp から slime 導入するのが楽。

715 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 07:20:57.78 ]
>>713
slime/ChangeLogではなくslime/contrib/ChangeLogに書いてあるよ



716 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 12:26:33.41 ]
>>715
本当だ
2011-05-10 Nikodemus Siivola <nikodemus@r****dom-state.net>

* slime-cl-indent.el: New file. Copy of cl-indent.el from current
GNU Emacs HEAD. Replaces the ancient copy previously kept as part
of slime-indentation.el.
* slime-indentation.el (slime-handle-indentation-update): Deleted.
Since we now directly replace the previous version of
cl-indent.el, the normal version defined in slime.el works fine.
ALSO DELETED: the inline copy of 1995 vintage cl-indent.el.
slime-cl-indent.clと言い始めた人は某ディストリを使っていたのかな。
2011-05-10 以前の設定ってどうするんだろうなあ。今はそっちを推奨した方が
良いかもなあ。
それかyum, aptなどのパッケージシステムで極力管理せずにquicklispで
swank(slime?)さえも管理させるか。

717 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 15:24:13.51 ]
ちなみにLispbox on linux 64bitはslime-20110205.092829で>>683が効いていない。

718 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 18:29:18.55 ]
>>716
indentをイジりたいなら(特に)2011-05-10 以前の設定はこんな感じかな。
他にもっと適切な設定があるかもしれないけど。
.emacs.el
(setq lisp-indent-function 'common-lisp-indent-function)
;;(setq lisp-indent-offset nil)
;;(setq lisp-indent-offset -2)
(setq lisp-indent-offset 2)

719 名前:デフォルトの名無しさん [2012/01/07(土) 01:25:01.92 ]
もっと適切な設定おねがいします。

720 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 07:41:14.53 ]
>>716
emacs関連ってyum, aptなどを使わないのがデフォじゃないのか?
Linux系以外のOSと操作感変わるのはいやじゃね?


721 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 10:38:28.61 ]
>>720
自分の話ではなく、emacsを使い始めて1年以内の人を対象にしているんだけど、
1年以上の人は自力でがんばって設定してくれと思う。

あと仮想OSも安定したし、マルチプラットフォームの操作感の統一性は求めて
いないなあ。ssh経由環境を整えた方が労力が少ないよ。

722 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 15:14:50.58 ]
emacs を使い始めて35年か。。。。 という人はおらんか?

723 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 15:35:48.33 ]
RMSです。日本の皆さん、はじめまして。
って話?

724 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 17:03:50.76 ]
ttp://www.amazon.co.jp/dp/4320024141
この本が出たのが88年だから24年前か

725 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 00:03:57.95 ]
20年以上前のRMSってヒッピー族って雰囲気だったのにな。
いまや教祖。。。



726 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 00:10:55.78 ]
d.imagehost.org/0086/richardstallmanyoungg.png
www.wikinoticia.com/images/www.vivalinux.com.ar.xml.rss/i44.tinypic.com.aau5i9.png
assets.cio.com/documents/cache/images/slideshows/2009/04/hippie_programmers.jpg
www.computerhistory.org/timeline/images/1983_stallman_large.jpg
www.foreignremarks.com/images/2007_0607stallman0029.jpg

あるlispハッカーの変遷。

727 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 00:39:46.75 ]
まさに、どうしてこうなった、を素で行くRMS様だぜー。
まあでも、今でも痩せればイケメンなのは間違いない。

728 名前:デフォルトの名無しさん [2012/01/08(日) 03:24:39.80 ]
設定の話どうなったの?

729 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 19:17:24.09 ]
最後に麻原を混ぜる

730 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 22:57:13.63 ]
lisperってemacs使ってる人が多いのかな?
vi使ってる人いる?P・Gはvi派らしいけど

731 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 23:12:26.42 ]
viスキーも割と見掛ける気がする。VimにもSwankクライアントあるし。
自分はEmacsのキーバインドがダルくてviper-mode使ってるけど、
Vimpulseとか使ってる人も中にはいるかもしれない。

732 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/01/09(月) 00:13:04.38 ]
LISPer だと vim スクリプトはだりぃーとか思っちゃうかもね。
仕事の内容によってはカスタマイズされた環境に慣れるのは良くない
こともあるだろうから、そういう人は vi を使うと聞いたことがあるよ。

グレアム御大はエディタでなく言語の側で頑張れ派なので vi を使うとどこかで読んだ。


733 名前:デフォルトの名無しさん [2012/01/09(月) 00:26:34.09 ]
>>インデント?

734 名前:デフォルトの名無しさん [2012/01/09(月) 00:29:45.25 ]
>>728
インデント?


735 名前:デフォルトの名無しさん [2012/01/09(月) 00:30:28.89 ]
>>728
インデント?




736 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 01:31:58.40 ]
>>732
> グレアム御大はエディタでなく言語の側で頑張れ派なので vi を使うとどこかで読んだ。
viでshellコマンド使えるよね?
vi を使って、LISPでパースしたりうんたらしたりしているのかね。LISPでvi上で文字を
色付けしたりとかもできるのかな。SHELLを何を使っているか、知らないけど、SHELL側から
色付けアプローチができるんかな。

vi使いのLISPerの動画ってないかね。マジでみてみたいんだよなあ。
超高等テクニックを紹介している英語サイトでもいい。

737 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 11:48:05.90 ]
まず最初にvimを使おう。

738 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 13:48:06.72 ]
>>737
プログラム組むんならそれもありだろうけど,
Linux 以外でデフォで vim ってあるんかよ?


739 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 15:10:37.13 ]
>>737
vimは使えるわ。
viの話が聞きたい。
>>738
Linuxでもvimは標準で入っていないのが多いよ。

740 名前:デフォルトの名無しさん mailto:sage [2012/01/10(火) 06:28:23.08 ]
monadをlispの文法で説明しているサイトないでしょうか

741 名前:デフォルトの名無しさん mailto:sage [2012/01/10(火) 07:16:19.47 ]
>>740
okmij.org/ftp/Scheme/monad-in-Scheme.html

742 名前:デフォルトの名無しさん mailto:sage [2012/01/10(火) 07:28:41.91 ]
ああ、ごめん。早合点した。モナド自体の解説も必要なのか。
それならこっちか。

groups.google.com/group/comp.lang.functional/msg/2fde5545c6657c81

英語だけど端的でとても分かりやすいと思う。

743 名前:デフォルトの名無しさん mailto:sage [2012/01/10(火) 09:50:31.71 ]
in dente

744 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 12:51:58.52 ]
John McCarthy 追悼記事
cacm.acm.org/magazines/2012/1/144801-john-mccarthy-1927-2011/fulltext
>he was also one of the first to investigate how to rigorously prove properties of programs
この一文がよく分からない
証明関係の話だとは思うんだがどういうことなんだろう

それとこの一文に興味を持ちました
>McCarthy was "a very, very clear thinker regardless of the topic—politics, sociology, the water supply in the San Andreas Basin, anything," recalls Hayes.
paul graham御大のようにずけずけと切り込んでいくスタイルだったんでしょうかね
エッセイ集のようなものがあれば読んでみたいな

そうそう、figureにある御大の若い日の姿がいい
deliveryimages.acm.org/10.1145/2070000/2063187/figs/uf1.jpg
なんというか、目つきが鋭くて黒ひげが凛々しい

745 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 14:53:18.17 ]
チェス盤があるところを見ると Kotok-McCarthy のデバッグ中かな?



746 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 15:37:08.04 ]
質問ですが、
>>1のパワーズとはどういう人なのですか

747 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 17:31:29.46 ]
"MOJO"

748 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 17:47:31.46 ]
>>744
後ろに説明あるじゃない。
>He invented abstract syntax; created the nonmonotonic logic technique called circumscription; and invented the garbage collector.

749 名前:デフォルトの名無しさん mailto:sage [2012/01/12(木) 09:19:35.64 ]
サーカムスクリプションじゃなくてこっち。
www-formal.stanford.edu/jmc/basis.html

750 名前:デフォルトの名無しさん mailto:sage [2012/01/12(木) 15:38:06.07 ]
blog.livedoor.jp/s-koide/archives/1846185.html
>2003年ニューヨークのConferenceではものすごく感動的なトークをし
マッカーシーは2003年にどんなトークをしたのでしょう?

751 名前:デフォルトの名無しさん mailto:sage [2012/01/12(木) 18:28:37.32 ]
Tutorial:Lispで人工知能
cl.cddddr.org/index.cgi?Tutorial%3ALisp%E3%81%A7%E4%BA%BA%E5%B7%A5%E7%9F%A5%E8%83%BD
例はAllegro Common Lispで開発を進めるということになっていますが、
windowsのsbcl+emacs+slimeで試したいです
blog.livedoor.jp/s-koide/archives/1877088.html
>そのほかの Common Lisp システムで進めるかたは,ご自分で環境設定とか,コードの修正などをお願いいたします.
こう書いてあるのですが、case-sensitiveにするために
(setf (readtable-case *readtable*) :preserve)
と書くのはわかったのですが、ほかにどういう設定をしてpaipのソースファイルをどこに置けばいいのですか

752 名前:デフォルトの名無しさん mailto:sage [2012/01/12(木) 20:43:49.62 ]
>>750
comp.lang.lispでも話題になったから検索してみて。
John "Practical" McCarthy
でたどれると思う。

しかしそのページILCのIがInternetになってるな。
近くの人教えてあげて。

753 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 16:04:07.76 ]
どうもありがとうございます
https://groups.google.com/group/comp.lang.lisp/browse_thread/thread/6c75cae46f065843/f06272a6e41dfdfa?hl=ja&lnk=gst&q=John+%22Practical%22+McCarthy#f06272a6e41dfdfa

Anton van Straatenさんの発言をまとめると…
マッカーシーはチャーチのラムダ計算の考えをlispに部分的に取り入れた、
万が一ラムダ計算をlispのデザイン全体に持ち込んでいたら
実用的なプログラミング言語というものを誤って推し進めたかも、
純粋な型無しのラムダ計算にひどく捕らわれていたかもしれない
で、実際のところは無名関数を設けるラムダの表現の意味を拝借したのだ、と

lispを開発していたときマッカーシーは
チャーチの本のコピーを持ってはいたが最初から最後まで読んだわけでは無かった
飛ばし読みをしていた
そのおかげで上のようなデメリットが避けられた

lispを作った本人がlispの限界とその理由をかいつまんで解説したと
理解したのですが、これでいいでしょうか

754 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 16:41:45.59 ]
Yコンビネータで再帰定義、再帰実行とか、
理論的整合性の泥沼にはまらずに済み、
実践的な言語設計をすることが出来たってことでしょ。
もともと数式評価するFORTRANライブラリ書いていたわけだから、
下手すりゃSucc(Succ(Zero))とか別の方向行っちゃうもんね。

755 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 17:18:30.24 ]
結局、動的スコープ以外はほぼ間違いなかったわけだしな



756 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 19:25:58.91 ]
こないだエロ漫画雑誌を見てたら、姉弟でセクロスしてるところを母親に見付かった場面で「続きは単行本××で」
ってひっぱってたけど、たぶんこの母親もまじえて3Pになる展開なんだろうなぁってのが容易に予想できるので、
ここで予想を裏切るシチュを期待したい。

757 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 20:03:22.08 ]
すいません。誤爆しました。忘れてください。

758 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 20:06:12.33 ]
テンプレに入れといてやんよ

759 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 21:09:33.86 ]
クラブを持ったリスコフ婆さんも乱入だ

760 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 22:07:26.48 ]
質問なんですが、Common Lispで三目並べを作ろうとしているのですが、
対戦相手のグラとして画像を表示させることもできますか?
 できるのでしたら、関数を教えていただければ幸いです。

761 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 00:35:40.98 ]
>>760
要は「GUIアプリケーションを作れるか」ってことで合ってる?

そういう話なら「作れる」んだけど、Common Lisp標準のGUI APIというのはないので、
ライブラリを使ったり、FFI経由で各種APIにアクセスする必要がある。

そして、どういう風に作れば良いのかは、環境と方法によって全然違うので、
対象とする環境とかを教えてもらわない限りは答えにくいと思う。

762 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 00:43:52.42 ]
やっぱり X プロトコルを喋らせないと。

763 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 00:51:28.76 ]
>>761
環境はLisp IDEというフリーのエディタ。全文英語になっとる。
>要は「GUIアプリケーションを作れるか」ってことで合ってる?
たぶんあってる。ググったのを見る限り。


764 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 01:19:47.99 ]
つLTK

765 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 01:25:26.08 ]
>>764
なんか今使っとるのより断然よさげですね。
ありがとうございました。頑張ってみます。



766 名前:デフォルトの名無しさん [2012/01/15(日) 08:26:04.65 ]
宣教師と人喰人問題で4人ずつ、ボートに3人まで乗れる。
この条件でプログラムを教えて欲しいです。

767 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 08:46:19.56 ]
Prolog向きの問題じゃなかったっけそれ

768 名前:デフォルトの名無しさん [2012/01/15(日) 08:51:22.80 ]
ググってたんですけど、これでできるかな?
d.hatena.ne.jp/jits/20100718/1279443182

769 名前:デフォルトの名無しさん [2012/01/16(月) 17:26:23.02 ]
LISPさっぱりわからん…
俺向いてないわ

770 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 17:39:15.42 ]
>>769
Lispに特有の概念(S式とかマクロ)はとっても簡単なので、
再帰とかクロージャとか、そっちの方が理解し辛いのかな?
それらは他の言語でも役立つので、覚えて絶対損はしないと思う。
根気良く覚えていくことをお勧めする。

あとは、具体的にどの辺が分からないか書いてくれると、
ここを見てる他の人が、分かりやすく説明をしてくれたり、
分かりやすい説明の場所を教えてくれたりするかもしれないよー。


771 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 17:43:29.86 ]
Haskellに比べたらLispはまだわかりやすいな・・・

772 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 18:23:45.93 ]
MITハッカーにあこがれてCLISPをとりあえず入れてみた
いまいち何をすればいいかわからん

773 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 18:24:42.76 ]
Lispでもモナドとか使ったりすればHaskell並に難しくなったりするので、
Haskellが殊更難しいっていうのは、Haskellにとってもフェアじゃない気がする。
前提とする知識の多さを「難しい」って表現するなら、確かにそうなんだろうけど。

うーん。でもやっぱ軽く嫉妬入ってるかも。

774 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 20:03:31.30 ]
>>773
Haskell使いの被害妄想はすごいなあ。
遠征して書くことか。

775 名前: ◆QZaw55cn4c mailto:sage [2012/01/16(月) 23:58:33.67 ]
>>769
処理系の作成の教科書を読むといいかも



776 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 00:24:41.47 ]
>>769
酔っ払いの竹内の本は読むなよ。お金の無駄だ。
編集者が文字を書き起こしたらしいんだが、それだけの手間をかけるなら新しく書けよ、
団塊の世代。

777 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 00:32:17.99 ]
そもそもあれCommon Lispじゃないし、
「文字を書き起こした」ってのもどうなのよw

778 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 00:51:27.54 ]
竹内本は例題や練習問題が豊富だしそんな悪くないと思うけどな
初心者がコーディングする段階で詰まるポイントをよく捉えてるので
実際に手を動かしながらる本を読む人には向いてるんじゃないかと
概念本としてはそんないいとは思えなかった

779 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 01:28:57.76 ]
>>778
新しく本を書いた本を書いた方が良くない?

例題・練習問題はネットに転がっているから困らないでしょ。

780 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 01:45:47.24 ]
じゃあ竹内本みたいな構成で例題が載ってるサイト挙げてみて

781 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 02:22:48.45 ]
竹内本みたいな構成でないとダメならない

782 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 06:51:50.80 ]
>>774
反応が予想外過ぎるw俺がHaskellerだったら、何に嫉妬してんだw
Lispのシンプルさとか? ないだろー。

Lispでも時と場合によってはモナドとか遅延とか使ったりするのに、
それがHaskellだけのものみたいに思われがちなのは、正直面白くない、って話。
Lisp書きがHaskell書きに嫉妬してんの。

783 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 07:51:26.36 ]
>>782
はいはい。
さっさと巣にお帰り。

784 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 07:53:52.34 ]
構文エラーと言われたら書き直すのが筋

785 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 10:00:29.72 ]
構文エラーな手書き文章から本を作るお仕事



786 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 10:23:58.09 ]
>>773
言語が難しいと言うより、解こうとしている問題が難しいだけだと思うが。
将来はもっと簡潔&理解し易い表現方法が開発されるかもしれないが、そういう表現形式の開発自体、鶏・卵の関係だからな。

787 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 11:51:20.71 ]
>>786
同感だし、一応そういう主張。

GitHubでも、他言語由来の概念のLispへの導入とか結構見掛けるけど、
まだ手探りな感じが強い気がする。こういった流れも、数が増えていけば、
よりLisp的に洗練されていくのかなー、とか考えると面白いよね。

788 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 23:47:41.83 ]
>>786
表現形式の開発自体が卵だとすると鶏って何?

789 名前:デフォルトの名無しさん [2012/01/18(水) 08:03:50.21 ]
実践CommonLispてどの位時間でよめますか?

790 名前:デフォルトの名無しさん [2012/01/18(水) 08:05:53.51 ]
実践CommonLispてどの位の時間で読めますか?

791 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 14:06:14.90 ]
>>790
「読めますか」…そんな言葉は使う必要がねーんだ。
なぜなら、オレや、オレたちの仲間は、
その言葉を頭の中に思い浮かべた時には!
実際にそれを読んじまって、もうすでに理解しているからだッ!
だから使った事がねェーッ。

>>789、オマエもそうなるよなァ〜〜〜、オレたちの仲間なら…
わかるか?オレの言ってる事…え?

『読んだ』なら、使ってもいいッ!

792 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 18:48:45.82 ]
partake.in/events/e9956e93-dd82-4b63-96bb-f9f75370dc5d
>訳がアレな部分がある
paipの日本語版を持っていますが、具体的にはどこなのでしょうか

793 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 03:56:16.14 ]
(setq alist (acons 1 "uno" (1 . "one") (2 . "two")))) => ((1 . "uno") (1 . "one") (2 . "two"))
ではなくて
(setq alist (acons 1 "uno" (1 . "one") (2 . "two")))) => ((1 . "uno") (2 . "two"))
となるような aconsの拡張に標準的な名前はついてないのでしょうか

794 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 13:08:34.82 ]
www.aoky.net/articles/paul_graham/vw.htm
viawebのスナップショットがあるけど
なんというかシンプルなんだね
それに競合他社を欺くためのテクニックがあざとくて笑った

795 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 13:26:39.48 ]
「その理由」のリンク、昔、別の記事にもあったんだけど、大笑いしたなぁ



796 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 14:41:57.08 ]
ロバート・モリスが、表に名前を出すのを避けてた、ってのは初めて知った話という気がする

797 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 23:53:38.16 ]
>>793
俺は知らない。たぶんないんじゃない?
cltl に「assoc と rplacd でできるけど、お勧めはしない」って書いてある。
ttp://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node153.html

本当に update が必用なら hash table 使うのが普通だと思う。
あるいは property list。

798 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 00:54:45.05 ]
Lisp。入門書を読んでみたが、
この言語のなにがすごいのかよくわからない。
PROGとか手続き型となにが違うのかと。
カッコも多くてめんどくさい。


普通の手続き型言語、例えばCで同じ内容のプログラムを書いた場合と比較して、
手間が省けるプログラムって例示できる人いるの?



799 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 01:52:13.58 ]
>>798

practical-scheme.net/trans/icad-j.html

800 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 04:22:59.22 ]
>>798
Lisp全般の話がしたいのならLisp Schemeスレでね。
丁度向こうでも同じ話題が出ているので、>>798にも都合が良いと思う。
こちらでもflame warを起こすのが目的じゃなければ、の話だけどね。

Lisp Scheme Part33
toro.2ch.net/test/read.cgi/tech/1318150738/

>>799
プログラムを出せと言ってるんだから、そこで挙げるなら、例えば

www.atmarkit.co.jp/news/200909/07/lltv02.html
practical-scheme.net/vault/lltv-shiro.tar.gz

辺りでしょ。

801 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 12:04:24.58 ]
>>798
入門書とか読むだけだとLispのすごさや便利さはあまり腑に落ちないよ。

1000行くらいの簡易実装(マクロつき)を読み下すと、
CやJavaの不自由さがよくわかると思うよ。

802 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 13:17:46.65 ]
Lispのぱっと見の印象がそんなに悪くなる入門書ってなんだろな

803 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 19:07:55.33 ]
>>802
lyrical.bugyo.tk/

804 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 20:16:05.40 ]
twitter.com/lipsmagazine

805 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 01:39:03.94 ]
>>804
それ舌足らずやない唇や




806 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 15:22:56.95 ]
>>804
のアイコンを俺が今作ってる処理系に使いたい

807 名前:デフォルトの名無しさん mailto:sage [2012/01/29(日) 10:40:03.82 ]
(format nil "~{ ~}" '(l i s t))
とすると一気にメモリを消費してしまうのは仕様ですか?

808 名前:デフォルトの名無しさん mailto:sage [2012/01/29(日) 11:29:50.10 ]
>>807
仕様かどうか知らんけど
間に~aか何か置かないと引数のリストがいつまでたっても消費されないんじゃない?

(format nil "~{~a~}" '(l i s t)) => "LIST"

809 名前:806 mailto:sage [2012/01/29(日) 19:47:07.24 ]
>>808
言われてみれば確かに。
slimeで勉強中にこの式をたまたま評価したらいつの間にかメモリを食い潰してしまって焦ってしまいました。

で、こういう事態に備えてヒープサイズ?を制限しようかと思ったのですが、clozureでは可能なのでしょうか。
sbclなら--dynamic-space-sizeで指定したメモリ以上は使わないようにできました。
しかしclozureでは--heap-reserve 1Gと指定しても、topで見る限り128Gまでメモリ使用を許可しているようです。
当然そんなにメモリを積んでいないし、>>806のような馬鹿をすると1Gを超えてメモリを食い出しました。

810 名前:デフォルトの名無しさん mailto:sage [2012/01/30(月) 01:20:22.90 ]
>>809
>>806がdisられてる件について。

--heap-reserve 8Mくらいで>>807試すと普通にメモリ不足ですぐ例外発生したりしない?
Windows XP SP3 32-bit + CCL 1.8-dev-r14962-trunkだとそんな感じだけども。

一応、CCLのヒープ関係はこういう仕組みになってるとのこと。

ccl.clozure.com/manual/chapter16.1.html#Heap-space-allocation

(cl:room)するとどうなってる?

811 名前:デフォルトの名無しさん [2012/01/30(月) 05:34:46.27 ]
CL-USER> 0.123e20
1.23e19
理解できないのですが
どなたか説明お願いします。

812 名前:デフォルトの名無しさん mailto:sage [2012/01/30(月) 05:39:05.44 ]
eで桁が減ってるから合ってるじゃん。

813 名前:デフォルトの名無しさん [2012/01/30(月) 07:05:19.17 ]
↑ありがとうございました。

814 名前:807 mailto:sage [2012/01/30(月) 08:34:25.72 ]
すいません>>806じゃなくて>>807でした。
ccl64 --heap-reserve 4Mで(cl:room)としたとき、
pproximately 24,117,248 bytes of memory can be allocated
before the next full GC is triggered.
Total Size Free Used
Lisp Heap: 39190528 (38272K) 24117248 (23552K) 15073280 (14720K)
Stacks: 51246288 (50045K) 51211592 (50011K) 34696 (34K)
Static: 19070896 (18624K) 0 (0K) 19070896 (18624K)
-4071.375 MB reserved for heap expansion.

となります。OSはlinux(64bit)で、clozureはccl-1.7-linuxx86.tar.gzの中にあるccl64を動かしています(cclはエラーになる)。
(swank:start-server :port 4005 :stlye :spawn :dont-close t)でswankサーバを建ててslime-connectして使っています。
この状態で、>>807をC-c C-cとし、数秒後に(cl:room)を実行すると
Approximately 33,554,432 bytes of memory can be allocated
before the next full GC is triggered.
Total Size Free Used
Lisp Heap: 2548170752 (2488448K) 33554432 (32768K) 2514616320 (2455680K)
Stacks: 51246288 (50045K) 51210424 (50010K) 35864 (35K)
Static: 19070896 (18624K) 0 (0K) 19070896 (18624K)
-6464.125 MB reserved for heap expansion.
となります。


815 名前:デフォルトの名無しさん mailto:sage [2012/01/30(月) 15:25:59.61 ]
LispのマクロはJsとかでいわれているラムダ的な物と考えてよいのでしょうか?



816 名前:デフォルトの名無しさん mailto:sage [2012/01/30(月) 18:19:23.92 ]
>>814
Oh... 凄く…負の値です…。バグなのかなー。>>810の環境で普通に起動するとこう。

Approximately 7,864,320 bytes of memory can be allocated
before the next full GC is triggered.

Total Size Free Used
Lisp Heap: 20119552 (19648K) 7864320 (7680K) 12255232 (11968K)
Stacks: 31317648 (30584K) 31304808 (30571K) 12840 (13K)
Static: 20140352 (19668K) 0 (0K) 20140352 (19668K)
844.812 MB reserved for heap expansion.

予約された領域の表示は、ccl:%reservedbytesで領域の境界同士を引いて算出してる。
負の値になるってことは、多分境界の値がおかしなことになってるんだと思うんだけど。

trac.clozure.com/ccl/ticket/890

に、"This affects me."とか書きつつ、環境と(room)の結果でも貼ってみたらどうだろう。

blo.udoidio.info/2008/10/out-of-memory-sad-case.html

を見ると、少なくとも1.2の時点からある問題みたいだ。

817 名前:デフォルトの名無しさん mailto:sage [2012/01/30(月) 18:49:29.05 ]
>>815
ラムダは関数だから違う。強いて言うならC++のテンプレートが近い。
用途は色々あるけど、総じて他の言語ならコンパイラの書き替えや別言語の実装が必要なレベルの抽象化が出来る。

818 名前:デフォルトの名無しさん mailto:sage [2012/01/30(月) 19:01:05.30 ]
>>817
なるほど、C++のテンプレートにちかいのですね。
この考えを取っ掛かりとしてもう一度勉強してみます。

819 名前:デフォルトの名無しさん mailto:sage [2012/01/30(月) 19:24:25.09 ]
>>818
強いて言えばだから、テンプレートの勉強をしてもあまり参考にならないと思うよ。
Lispマクロ自体を勉強する方が良いと思う。
Paul=Grahamやgaucheの作者の書いた物がお勧め。

820 名前:デフォルトの名無しさん mailto:sage [2012/01/30(月) 21:57:34.69 ]
>>819
いっしょだと思う. template_expand と template_expand_1 さえあれば...


821 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 07:26:04.21 ]
>>820
条件分岐の面倒さや再帰の深さ制限とか、実行時型情報とかやはり違うと思う。Lispにはリーダマクロ等もある。
boostにもよりLispマクロを目指したmopがあるし、D言語もASTマクロを入れる予定。
ところで調べてて驚いたけど、Perl6にもASTマクロがあるらしい。現状で一番Lispに近い言語なのかも(笑)

822 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 20:38:23.98 ]
Boost.MPL はマクロに近い

823 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 17:32:20.27 ]
Why I love Common Lisp and hate Java « Piece of mine
https://kuomarc.wordpress.com/2012/01/27/why-i-love-common-lisp-and-hate-java/

Why I love Common Lisp and hate Java, part II – code examples « Piece of mine
kuomarc.wordpress.com/2012/02/02/why-i-love-common-lisp-and-hate-java-part-ii-code-examples/

824 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 21:18:26.92 ]
ネタ記事?

Compare

class HelloWorldApp {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}

with Common Lisp’s equivalent:

"Hello World"

825 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 22:41:28.18 ]
ttp://homepages.inf.ed.ac.uk/wadler/language.pdf
を思い出した。



826 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 00:30:57.46 ]
最近common lisp始めてみた。
特に作るののもないのでリストいじってあそんでいる。

827 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 00:35:10.04 ]
いらっしゃい。何かを得ていってくれると嬉しい。

828 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 02:32:05.69 ]
(defun hoge (x)
(format t "hoge start~%")(catch 'c1 (format t "catch c1 start~%") (fuga x) (format t "catch c1 end~%"))
(format t "hoge end~%"))
(defun fuga (x)
(format t "fuga start~%") (if (= x 0)(throw 'c1 "x = 0")(format t "x /= 0~%"))
(format t "fuga end~%"))
で質問です。このlispの実行結果は、
(hoge 0)
hoge start
catch c1 start
fuga start
hoge end
nil
となるのですが、catch c1 start後に関数fugaのif文でtrueなので
(throw 'c1 "x = 0")
を実行すると思うんですが
(format t "catch c1 start~%")
(fuga x)
(format t "catch c1 end~%")
を実行せずにそのまま"hoge end"で終わっています。
(throw 'c1 "x = 0")の時いったい次どこの処理をするのでしょうか。
また、最後、throwの戻り値の"x = 0"も出力されず、nilとなっています。
"x = 0"が返されるときとはどういうときなのでしょうか。
動きがよくわからなくて困っています。
よろしくお願いします。

829 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 04:02:22.74 ]
catchの各formを評価している最中にthrowされると、throwで指定した値がcatchの戻り値になる。
なので、(throw 'c1 "x = 0")によって、catchの戻り値が"x = 0"になる。以降のformは評価されない。
catchの戻り値は、件のコードでは単に捨てられるようになっているので、出力もされない。
catchの後に「hoge end」を出力して、そのまま終了する。
つまり、throwの次に実行されるのは(format t "hoge end~%")。

www.lispworks.com/documentation/HyperSpec/Body/s_catch.htm

というか、普通はcatchやthrowを直接使ったりせず、より上位の仕組みのコンディションを使う。

830 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 10:05:55.45 ]
>>829
回答ありがとうございます。
throwでx=0の後は、関数fugaは評価されないんですね
また、catchというかhogeのcatchが終了したところに戻るんですね
戻り値は受け手はいるけど出力して終了とはならないということですか
なるほど。。。非常に難しいですね。。。
ありがとうございます。

831 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 10:16:38.35 ]
1:(defun catch2 (tag)
2: (catch tag
3: (throw 'hack 'yes)))
4:catch2
5:
6:=> catch2
7:
8:(catch 'hack
9: (print (catch2 'hack))
10: 'no)
11:
12:yes
13:no
というプログラムでもやはりcatch,throwのことですがいいでしょうか
先ほどの回答ですと
まず8行めのcatchから、1,2行目にとんで3行目のthrowで
すでに8行目は行ってるので、8行目に飛ばずにそのままそのthrowは終了
でyesが返ってくる。
それが9行目のprint文にもどるのでyesを出力となるわけですね。
最後の'noはどうやって出力されたのでしょうか。
ここもやっぱりよく分からないのですが。。。

832 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 10:25:18.81 ]
(catch2 'hack)

(catch 'hack
  (throw 'hack 'yes))
になる。

833 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 11:19:25.56 ]
1:(catch 'hack
2: (print
3: (catch 'hack
4: (throw 'hack 'yes)))
5: 'no)
とすると
3行目のcatchから、throwで戻り値yesをprintして
残りは'noが残ると思うのですが
すると
結果は
yes
no
となるのですが、noは'noがただ評価されたから
出力されているという解釈でいいんでしょうか。

834 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 13:34:40.81 ]
(print (catch2 'hack))
がyesを表示してて、
(catch 'hack
  (print
   (catch 'hack
     (throw 'hack 'yes)))
  'no)
を評価したときの戻り値がno。

インタプリタ上だと標準の出力先と戻り値を表示する先が同じものが多い。

835 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 14:40:06.47 ]
リスト操作の質問です
(list "test2" "foo34" "bar23" "test5" "foo67" "test9" "bar8" "foo7")
こうして作成したリストを
("test234" "bar23" "test567" "test9" "bar8" "foo7")
のように変換したいです
どういうことかというと、test〜の直後の要素がfoo〜だったら
test〜とfooより右側の文字列を結合させます
そうでなければその要素はそのままにしておきます
(mapcar #'(lambda (a b)
のように書きはじめるのかと思いましたが、この場合の a bは二つのリストからそれぞれ
要素を取り出すものなので違うようです
どうすればよいでしょうか



836 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 19:03:40.19 ]
>>835
reduceを使えば良いんじゃないかな。というわけで、こんなんできました。
ハードコーディングしてる部分は、実際のコードでは修正してー。

(labels ((has-prefix-p (prefix x)
(let ((p (search prefix x)))
(and p (zerop p))))
(foop (x)
(has-prefix-p "foo" x))
(testp (x)
(has-prefix-p "test" x)))
(reduce (lambda (x r)
(if r
(destructuring-bind (last . rest) r
(if (and (foop last) (testp x))
(cons (concatenate 'string x (subseq last (length "foo")))
rest)
(cons x r)))
(cons x r)))
*list*
:from-end t
:initial-value nil))

837 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 19:05:43.41 ]
ああ、失礼。*list*に対象のリストが入ってるってことで。

(defparameter *list* (list "test2" "foo34" "bar23" "test5" "foo67" "test9" "bar8" "foo7"))

こんな感じで。コピペし忘れた。

838 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 19:52:31.82 ]
>>834
反応遅くなり申し訳ありません。
catch内の最後に評価された式が最後の返されるんですね
だから、yesのあとにprint文でもないのにnoが出力されるということですね
ありがとうございます!!


839 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 22:14:41.11 ]
>>838 分かりやすいかどうかは知らんが C の setjmp がおおむね catch
clhs.lisp.se/Body/s_catch.htm
# 仕様書読め(Unix で言うところの read the fucking manual)


840 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 22:53:44.57 ]
>>839
ありがとうございます。
TOEIC200点代ですが頑張って解読します。


841 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 23:16:02.80 ]
上でも少し触れたけど、何で直接catchとthrowを使ってるんだろうか。
新しい制御構造でも作るの? かなり斜め上なことをしてる予感がするけども。

842 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 00:20:38.90 ]
>>841
emacsのとあるプログラムをxyzzyのcommon lispに書き換えてみたくて
解読してたんですが、catchとthrowがでてきて・・・
調べてたら、更に分からなくなりまして。。。
なので、新しく何か作るわけではありません。
あまりcatchとthrowは一般的でないみたいですね。

843 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 00:24:46.17 ]
>>841
あと、ここで質問したcatch,throwのプログラムは
解説サイトに載っているものです。
理解できなかったので部分コピペで質問させていただきました。

844 名前:834 mailto:sage [2012/02/07(火) 00:50:44.36 ]
最初に>>833を見たときは、
インデントの所為で(print (catch ...) 'no)としてるのかと思った。

845 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 01:08:08.27 ]
>>844
わかりにくくてすいませんでした。
インデントおかしかったですね。今後は気をつけます。



846 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 01:23:05.94 ]
>>843
あー、ここか。あまり良い教材とは言えないと思う。

www.fireproject.jp/feature/common-lisp/details/catch_throw.html

Common Lispで例外処理をするときは、catchとthrowは普通使わないんだ。
その上に作られたコンディションというものを使う。

xyzzyを使っているなら、

www.geocities.jp/m_hiroi/xyzzy_lisp.html

の方がより正確で多くを解説しているので、こちらを参考にした方が良い。

あと、Emacs Lispについては、オリジナルのリファレンスが結局一番詳しい。
日本語でないと厳しいなら、

www.bookshelf.jp/texi/elisp-manual-20-2.5-jp/elisp_10.html

を読むほうが、ググッて出てきたブログとかを読むよりは良いと思う。

847 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 01:41:15.91 ]
>>842
あと、移植については、単純にxyzzyでプログラムを動かすのが目的のベタ移植なら、
そのままcatchとthrowを使えば良いと思う。

よりCommon Lisp的な表現に全体を書き換えているのなら、コンディションを勧める。

Tutorial on Good Lisp Programming Style
www010.upp.so-net.ne.jp/okshirai/tutorial-on-good-lisp-programming-style-ja.txt

から引用するけど、

> catchとthrowを使用に対するいくつかの忠告がある:
>
> - マクロとしてより抽象的な制御構造を実装するときに副プリミティブとして
> catchとthrowを用いること。通常のコードの中では用いないこと。

普段使いにはもっと便利なものがあるんで、そっち使いましょうよ、ってこと。

848 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 02:04:41.44 ]
>>846
>Common Lispで例外処理をするときは、catchとthrowは普通使わないんだ。
情報が少ない気がしたのですがそういうことだったんですね。
「catch,throw」より「コンディション」ですね!
調べてみます。
実は載せていただいた資料は前に読んだんですが
少し難しかったです。。。
ですが、emacsのサイトは確かに一番読みやすいですね!!
>>847
common lisp的なものを書けるようになりたいので
「コンディション」で制御できるよう勉強します。

lispで勉強会があれば出たいですが、なかなかないですね。。。
周りにlisp使ってる人がいない場合、やっぱ独学しかないんでしょうね。

849 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 09:38:28.30 ]
>>848
twitter始めてみたら?それか初心者が勉強していくblogを書く。

850 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 12:16:40.84 ]
ただ、carの例で考えると、Common Lispでは「対象性」が失われているような気がするんですよね。これが納得
出来ない。
(car '())=>nil
(car '(()))=>nil
で結果が同じだとマズいだろ、って事ですよね。

ttp://www.shido.info/gb/guestbook.php?id=1422

この話ってcarをscar(仮)で使った方が良いですか?
(defun scar (l) (if (tree-equal '() l) "#f" (car l)))
またもっとエレガントな方法・アプローチがありますか?

851 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 12:45:54.49 ]
とりあえずcond,cons,car,cdr,apply,mapcar,funcallあたりは覚えた。
次はいよいよマクロに手を出してみようかな

852 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 14:14:53.56 ]
>>836
ありがとうございます
reduceをそのように使えばいいのですね
目から鱗です

853 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 14:24:40.95 ]
on lispの2.9compilationを読んで疑問に思ったのですが

(defun 50th (lst) (nth 49 lst))
(proclaim ’(inline 50th))

これと、defmacro で50thを作ったときの違いは何なのでしょうか?
2.9の最後にinline functionの制約はmacroのそれと基本的には一緒だと書いてあるのですが、
common lispのmacroとinline compileは実質的にどう違うかよくわかりません

854 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 20:06:22.87 ]
>>853
そのまま読み進めていけばinlineで書けない実例が大量に出て来る。

855 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 21:40:28.11 ]
>>836
>>835のような実用用途に対するLISPプログラムを初めて読んだ。
結構時間かかったけど、こういう風にするんだな。面白い。
destructing-bindって融通効かしてくれるんだな。きれいに書きますね〜。

(concatenate 'string "test39" (subseq "foo8" (length "foo")))
こういう実務向けの機能知らな過ぎワロタ

このぐらいの長さの物をもっと読みたいんだけど、良いサイトあります?
当方竹内さんの入門書を一冊通した程度の実力。



856 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 22:42:59.10 ]
>>855
どういう分野を勉強したいのか、具体的に詳しく書いた方がいいよ。
あと何を作りたいとか。

857 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 23:03:07.02 ]
>>855
実務向けの機能と言うか、マニュアル(CLtL2)読めばいいじゃん。

858 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 23:16:28.21 ]
>>850
Schemeを使う。半分冗談だけど半分は本気。
Common Lispは利便性と厳格さのトレードオフで利便性を採った言語だから。
多分、その辺が気になるなら、今後も色々引っかかりを覚える事が多いはず。

リーダーをいじって、'()を適当にユニークなデータに置き換えて、
cl:carとかcl:cdrとかcl:consとかも上書き定義して…みたいに頑張るよりは、
nilと空リストが同じことに慣れるか、Scheme使う方が幸せだと思う。

859 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 23:19:16.92 ]
「実務向けの機能」なら実践Common Lispはどうだろ
部分的にしか読んでないけど
パス名の扱いとか懇切丁寧に書いてあってすごい参考になった

860 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 23:44:00.80 ]
>>858
> Schemeを使う。半分冗談だけど半分は本気。
> Common Lispは利便性と厳格さのトレードオフで利便性を採った言語だから。
> 多分、その辺が気になるなら、今後も色々引っかかりを覚える事が多いはず。
勉強で必要最小限Schemeやるけど、今の所、真面目に勉強する気がないなあ。
Scheme使うのは誰かに任せるよ。自分はCL道を極める。

ちなみにSchemeでデバッグ機能も強力で日本語も使える処理系ってRacket?
SchemeってCLみたいに処理系分岐ってできないの?
Gaucheの良さって分かるんだけど、学習コストをかけた後に後々やっぱり
タスキに長し帯に短しで不満が出てきそうなんだよね。
GaucheのコードをRacketに移植ってコストがかかって面倒くさいでしょ。

861 名前:836 mailto:sage [2012/02/08(水) 00:00:15.62 ]
>>855
私幼女だけど、concatenateの部分はむしろ教科書的というか、
多分実用的なコードなら正規表現の後方参照使うと思うの。
あと、(concatenate 'string x y)よりは、(format nil "~a~a" x y)使う。
ついでに、(length ...)の部分は#.(length ...)ってする。

あんま長過ぎず、見てて楽しいっていうと、ユーティリティライブラリじゃないかな。
例えば、こんなんどうだろう。

common-lisp.net/gitweb?p=projects/alexandria/alexandria.git;a=tree;js=1
www.flownet.com/ron/lisp/rg-utils.lisp

862 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 00:27:18.15 ]
>>860
CL続けるなら、tやnilの使い回しには慣れたほうが良い。
じゃないと、多分CLOSを学習するとき、一番底にあるクラスにビビる。

Schemeだと、現状だとRacketが優秀過ぎるってのはある。
CLに比べると処理系切り替えは楽じゃない。処理系依存部分が大きく、ある程度は面倒。
でもまあ、Gaucheかはともかく、Schemeを勉強するのは、視野が広がって良いと思うよ。

863 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2012/02/08(水) 00:45:13.51 ]
>>860
処理系ごとの切り替えは srfi-0 があるが…。
srfi.schemers.org/srfi-0/srfi-0.html
そもそも srfi-0 をサポートしてない処理系もあるからなー。
racket だと srfi-7 を使えってことになってたと思う。

864 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 00:47:07.73 ]
>>862
> でもまあ、Gaucheかはともかく、Schemeを勉強するのは、視野が広がって良いと思うよ。
英語できて、フランス語できれば、視野が広がるのは分かるんだけど、
時間は有限だからなあ。

865 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 18:28:29.02 ]
>>854 ありがとうございます。読み進めてみます。

>>855に関連することですが、
THE SEASONED SCHEMERのような短いコードでcommon lispのノウハウを一通り学べるサイトはありますか?
とくにseriesの実例をいくつも見てみたいのですが。



866 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 20:41:13.84 ]
wiki文法をhtml風のs式に変換しようとしているのですが
インラインの装飾をどう変換するのでしょう
あ\*ああ**//強調&斜体//**ううう
この行を
(:P "あ*ああ" (:EM (:ITALIC "太字&斜体")) "ううう")
こうしたいのですが(//で囲まれていればitalic、**で囲まれていればem、\*は*に)、
(defun wiki-syntax->html-like-sexp (text)
;; cl-ppcre
(ppcre:register-groups-bind (first second third)
("^(.*?)\\*\\*(.+?)\\*\\*(.*?)$" text)
(list first (list :em second) third)))
このように書くと:italicに対応するため正規表現を複雑にしなければなりません
読み込んだ文字列全体を:pでまとめるというのも入れると、こんがらがりそうです
どうすればいいのでしょう?

867 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 20:53:05.55 ]
wikiの文法は知らないけど、正規表現でなく、parserを書いてモードで切り替えた方が楽なんじゃない?
clikiを見たらwiki用のライブラリもあるみたいだから参考にすると良いんじゃないかな。

868 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 20:56:16.48 ]
自己訂正:コメントじゃないからモードの切り替えは要らないか。

869 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 21:20:22.06 ]
>>867の言うように、再帰下降パーサを手書きするか、CL-Yaccやmeta-sexpを使うか、
いくつかあるパーサコンビネータライブラリを使うかした方が多分楽だと思う。
多分、最終的にはもっと多くのWiki構文をサポートするんでしょ?

870 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 14:41:12.30 ]
>>867-869
ありがとうございます。たしかに既存のパーサを利用するのがよさそうですね。
はい。多くのwiki構文をサポートするつもりです。
早速やってみます。

871 名前:866 mailto:sage [2012/02/09(木) 18:55:09.42 ]
すみません。続けて質問します。
字句解析を書いたのですが:があらわれると
illegal terminating character after a colon: #\
となってしまいます
ソースはこちらです
paste.lisp.org/display/127608
コロンを特別の字句として解析するにはどうすればいいのでしょうか。

872 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 21:21:08.69 ]
>>871
:もreadが読んでる。:の解析部分はこの場合には使用されてない。
もともと内部的にもLispではない文字列だからreadは使えない。怠けず全文字処理すべし。

873 名前:デフォルトの名無しさん mailto:sage [2012/02/10(金) 14:34:06.44 ]
>>871
cl-yaccを使うなら、lexerもライブラリを使えば?

874 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 15:48:00.58 ]
>>872
ありがとうございます
指摘を受けてloopのacrossを使って全文字を処理するようこう書き換えました
paste.lisp.org/display/127669
処理できたようなのですが、なぜかサンプルと同じように動きません
lispuser.net/memo/lisp/2006-03-30-23-58.html
の「つくったら早速 REPL で試してみましょう.」以下と同じく出力されると思うのですが

>>873
blogs.yahoo.co.jp/oiron_abok/archive/2011/9/21
これを見てcl-lexをいじってみたのですが#\newlineと#\spaceの検出方法がわかりませんでした

875 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 02:09:23.54 ]
>>874
あんまloop詳しくないけど、do節の使い方が間違ってる気がする。
あと、字句解析器(lexer)はトークンをひとつずつ返せばいいので、
一度に全体を走査する必要ないはず。

ja.wikipedia.org/wiki/%E5%AD%97%E5%8F%A5%E8%A7%A3%E6%9E%90

それと、想定外の結果になったら、問題の切り分けからすると良いと思う。
この場合、まずlexerが正しく動作するか確認すれば、問題の位置を特定できる。
lexerの中にはloopしかない。loopをマクロ展開すると、どうやら値を返すようになってない。
じゃあ、HyperSpecやCLtL2とかのリファレンスを見てみよう、って感じで。



876 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 03:22:32.57 ]
テンションが上がったので、ちょっと書いてみた。
こんな感じのことがやりたかったってことで良いんだろうか。

paste.lisp.org/display/127683

877 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 10:58:50.37 ]
>>874
もう要らないかも知れないけど、cl-lexはlexと同じく正規表現で指定する。

878 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 18:22:23.84 ]
みなさんありがとうございます。
cl-lexを使うパターンと使わないパターンの二つを書いてみました。

>>875-876
たしかにご指摘のとおりloopの部分がおかしかったです。
そしてまさに>>876の例が行いたかった処理です。うまく動きました。
ただ、コメントにあるように効率的に処理するために一度に複数のトークンを切り出すのが理想的ですが
peek-charを使っても一つ先しか見れません
paste.lisp.org/display/127703
このようにして先の文字を読み込むのではなく、はじめにpeek-charを使うと今度は": "の読み込みで
引っかかってしまいます。

>>877
正規表現を書き直したら大方うまく動きました。行も判定できました。
ですが、backslashの判定と、パースの結果をまとめる部分がうまくいきません。
cl-lexを使ってこのように書きました。
paste.lisp.org/display/127704
引き続き調べます。

879 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 20:40:33.48 ]
>>878
> ただ、コメントにあるように効率的に処理するために一度に複数のトークンを切り出すのが理想的ですが
なぜトークンを切り出す関数を別に作らない?
(t (values :token (get-token c in)))
とかすれば, ええんちゃう?


880 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 23:42:39.64 ]
>>878
分かってるっぽいけど「複数のトークン」じゃなくて、「複数文字のトークン」。
構文解析のときに一文字ずつ解析するより、ブロックごとの方が効率良くなるという話。
とりあえず、ライブラリで字句解析するみたいだからこの辺で止めとく。

あと、コメントに書いたように、"う\うう"だと"ううう"と同じに解釈されるからね。
"う\\うう"じゃないと、文字列にバックスラッシュが含まれることにならない。
あと、colonの区別が付かないのはread-from-stringしてるから。
元の値を使えば良いと思うんだけど、readしてるのは何か事情があるの?

881 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 14:12:28.41 ]
>>879 ええ。そうしようとしたのですが、うまくできませんでした。
>>880 read-from-stringを使っていたのはミスでした
そのまま値を返せばよいだけでした
バックスラッシュについても勘違いしていたようで、
他のファイルのテキストから読み込むときにはバックスラッシュをきちんと認識できていました
これで問題が無事解決しました
お騒がせいたしました

882 名前:デフォルトの名無しさん mailto:sage [2012/02/14(火) 17:57:50.83 ]
common lispを使った講義や開発シーンを動画で公開しているところはありますか?
schemeのsicpなら
ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/video-lectures/
がありますが。

883 名前:デフォルトの名無しさん mailto:sage [2012/02/14(火) 18:47:06.73 ]
プログラミングを何も知らない私がClispを始めるには何を用意すれば良いのでしょうか
win

884 名前:デフォルトの名無しさん mailto:sage [2012/02/14(火) 20:18:01.64 ]
winでclispもろもろをそろえるなら
lispboxでいいんじゃない?
紫藤のWiki と lispbox で検索


885 名前:デフォルトの名無しさん mailto:sage [2012/02/14(火) 22:19:27.24 ]
www.google.co.jp/search?q=common+lisp+video+lecture
おなじの物ばかりかもしれないが。



886 名前:デフォルトの名無しさん [2012/02/15(水) 14:08:33.85 ]
長いリストの出力について教えてください。
(print (make-sequence 'list 100))
これをsbclやclispで行うとNIL19個毎に改行されてしまいます。
どうすれば改行せずに出力出来ますか?次工程でgrepなんかを使いたいのです。
よろしくお願いします。

887 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 14:38:12.07 ]
>>886
(let ((*print-pretty* nil)
(*print-length* nil))
(print (make-sequence 'list 100)))


888 名前:デフォルトの名無しさん [2012/02/15(水) 14:46:42.86 ]
>>887
動きました。ありがとうございます。
pretty print絡みだったんですね。

889 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 15:24:36.69 ]
>>885
ありがとう
slimeの入門動画なんてものがあったんだな
知らなかったよ

890 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 18:43:19.33 ]
“@ajiyoshi: NTTデータでcommon lispが使われるようになったりするのか?!w t.co/9zLNfeRs 株式会社数理システムの子会社化について 2012年2月15日 | ニュースリリース | NTTデータ”

株式会社数理システムの子会社化について
ttp://www.nttdata.co.jp/release/2012/021500.html

891 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 07:02:40.13 ]
MSI、NTTデータの子会社になるんだ。
Common Lispユーザにとって色々有益な情報を出してくれる所だから、少し不安。

892 名前:デフォルトの名無しさん [2012/02/17(金) 01:32:25.22 ]
sbclでのコンパイルについて教えて下さい。
以下の方法でSBCL 1.0.40.0.debianでは動いていたはずなのですが、
SBCL 1.0.50.0.debianではエラーが出てしまいます。
メモリが少ないために小分けで何万回と実行する予定ですので
コンパイル済みのバイナリとしたいのです。
どうすれば良いでしょうか?よろしくお願い致します。

hell.lisp:
(print "HELL!")

$ sbcl --noinform --disable-debugger --eval "(compile-file \"hell.lisp\")" --eval '(quit)'

; compiling file "/.../hell.lisp" (written 17 FEB 2012 XX:XX:XX AM):
; compiling (PRINT "HELL!")

; /.../hell.fasl written
; compilation finished in 0:00:00.003

$ chmod +x hell.fasl
$ ./hell.fasl
unhandled SB-C::INPUT-ERROR-IN-COMPILE-FILE in thread #<SB-THREAD:THREAD
"initial thread" RUNNING
{AA65919}>:
READ failure in COMPILE-FILE:
SB-INT:SIMPLE-READER-ERROR at 27 (line 2, column 2) on #<SB-SYS:FD-STREAM
for "file /.../hell.fasl"
{AA697D9}>:
illegal sharp macro character: #\

893 名前:デフォルトの名無しさん [2012/02/17(金) 01:34:17.67 ]
(つづき)
0: (SB-DEBUG::MAP-BACKTRACE #<CLOSURE (LAMBDA #) {AA75BAD}> :START 0 :COUNT 128)
1: (BACKTRACE 128 #<SB-SYS:FD-STREAM for "standard error" {AA669C9}>)
2: (SB-DEBUG::DEBUGGER-DISABLED-HOOK
#<SB-C::INPUT-ERROR-IN-COMPILE-FILE {AA71861}>
#<unavailable argument>)
3: (SB-DEBUG::RUN-HOOK
*INVOKE-DEBUGGER-HOOK*
#<SB-C::INPUT-ERROR-IN-COMPILE-FILE {AA71861}>)
4: (INVOKE-DEBUGGER #<SB-C::INPUT-ERROR-IN-COMPILE-FILE {AA71861}>)
5: (ERROR
SB-C::INPUT-ERROR-IN-COMPILE-FILE
:CONDITION
#<SB-INT:SIMPLE-READER-ERROR "illegal sharp macro character: ~S" {AA71791}>)
6: (SB-C::READ-FOR-COMPILE-FILE
#<SB-SYS:FD-STREAM for "file /.../hell.fasl"
{AA697D9}>
25)
7: (SB-INT:LOAD-AS-SOURCE
#<SB-SYS:FD-STREAM for "file /.../hell.fasl"
{AA697D9}>
:VERBOSE
NIL
:PRINT
NIL
:CONTEXT
"loading")

894 名前:デフォルトの名無しさん [2012/02/17(金) 01:34:51.95 ]
(つづき)
8: ((FLET SB-FASL::LOAD-STREAM)
#<SB-SYS:FD-STREAM for "file /.../hell.fasl"
{AA697D9}>
NIL)
9: (LOAD
#<SB-SYS:FD-STREAM for "file /.../hell.fasl"
{AA697D9}>
:VERBOSE
NIL
:PRINT
NIL
:IF-DOES-NOT-EXIST
T
:EXTERNAL-FORMAT
:DEFAULT)
10: ((FLET SB-IMPL::LOAD-SCRIPT)
#<SB-SYS:FD-STREAM for "file /.../hell.fasl"
{AA697D9}>)
11: ((FLET #:WITHOUT-INTERRUPTS-BODY-[PROCESS-SCRIPT]69))
12: (SB-IMPL::PROCESS-SCRIPT "./hell.fasl")
13: (SB-IMPL::TOPLEVEL-INIT)
14: ((FLET #:WITHOUT-INTERRUPTS-BODY-[RESTART-LISP]30))
15: ((LABELS SB-IMPL::RESTART-LISP))

unhandled condition in --disable-debugger mode, quitting
$

895 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 05:07:44.25 ]
lispboxをXPで使いたいんだがbat実行しても動かん;
落としてきてbat実行するだけじゃダメなのかこれ?
linuxのはsh実行するだけで普通に動いたんだが



896 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 05:39:03.41 ]
追記:後、時々、win版は自動インストーラがついてるって書いてるブログあるけど、
これは昔のバージョンだけ?lispbox-0.7には入ってないみたいだけど

897 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 06:20:45.30 ]
batファイルをどう実行したの?
ダブルクリックではなくコマンドプロンプトから実行すれば
何かしらエラーメッセージでも出そうなものだけど

898 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 06:46:01.31 ]
>>892
むしろ、その話が事実だと、前はFASLをそのまま実行できたということに。マジですか。
SBCLでバイナリを作るには、cl:compile-fileじゃなくてsbcl-ext:save-lisp-and-dieを使えば大丈夫。
Common Lispでは(Cとかでもそうだけど)コンパイルと実行形式を作ることとは別なのでご注意。

cl.cddddr.org/index.cgi?%bd%e8%cd%fd%b7%cf%3a%bc%c2%b9%d4%a5%d5%a5%a1%a5%a4%a5%eb%a4%ce%ba%ee%a4%ea%ca%fd

ただ、メモリの消費量とバイナリにすることって、多分あんまり関係ないと思うけど、
それはそれで大丈夫なんだろうか。

899 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 08:02:38.86 ]
>>897
すいません、自己解決しました;
windowsのユーザーフォルダ名が日本語だったのでそれが原因でエラーが
起きてた模様
レスありがとうございました


900 名前:デフォルトの名無しさん [2012/02/17(金) 13:12:34.76 ]
>>898
ありがとうございます。
>むしろ、その話が事実だと、前はFASLをそのまま実行できたということに。マジですか。
faslにはシバン(#!/usr/bin/sbcl --script)が付加されてるので実質はsbcl呼んでるんですけどね。
0.50にも付いてるのですが動かなくなりました。
>SBCLでバイナリを作るには、cl:compile-fileじゃなくてsbcl-ext:save-lisp-and-dieを使えば大丈夫。
save-lisp-and-die時のTOPLEVELの指定が分かりません。
スクリプトとコンパイルのソースを共有したかったので。
実行時型チェックすれば良いのだろうけど。

>ただ、メモリの消費量とバイナリにすることって、多分あんまり関係ないと思うけど、
起動に掛かる時間を減らしたいのです。
コンパイルとか数秒掛かるでしょ。何万回とかになると何時間にもなるのではないかと。
実際は何百万回とかだた。

901 名前:デフォルトの名無しさん [2012/02/17(金) 13:27:19.85 ]
補足です。
# save-lisp-and-die時のTOPLEVELの指定が分かりません。
WEBだと関数を指定しているものばかりなのですが、
スクリプトの場合は関数の呼び出しまで記述する必要があり
共用させるのに「おまじない」が必要になります。
例示した様なスクリプト形式のままで実行出来る
コンパイルの方法が分からないとの意味です。

902 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 14:18:49.78 ]
>>900
なるほど。そちらの事情は把握できたと思う。

とりあえず、1.0.51以降でのFASL周りの変更は、型関係の不具合修正だけなはずなので、
1.0.55でも直ってない気はする。1.0.40以降のリリースノートにも書いてないように見える。
それって正式な機能なのかな? マニュアルのFASLの項には特に書いてない感じだけど。
正式な機能ならLaunchpadへ報告どうぞ。そうでなくとも、MLで聞いてみても良いかも。

自分なら、トップレベルの関数を利用する形にスクリプトのコードを自動変換し、
それをコンパイルしてロード、save-lisp-and-dieするまでの処理を自分で書いちゃって、
今度からそれを使うようにすると思う。一度書いちゃえば次からは使い回しもできるし。
ただ、いかにもkludgyではあるので、そちらのお気には召さないかも。

それと、多分バイナリにまでする必要はなくて、ロードした状態のイメージを保存して、
それを処理系を起動するときのイメージとして指定すれば、同じ効果が得られると思う。
ロード時間を削るために良く使われる手じゃないかと。

903 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 18:03:16.60 ]
>>900
いまいち何がしたいのか理解できてないけど、バイナリにしたいのではなくて、コンパイル済のファイルを呼び出したいだけではないの?
シバンに任せずに普通にloadしてはいけないの?

904 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 18:07:10.83 ]
>>900
エラーの直接の原因としてはfaslファイルの2行目の# FASLの部分でマクロキャラクタと判別してるからだと思う。

905 名前:デフォルトの名無しさん [2012/02/17(金) 20:30:39.44 ]
沢山のコメントありがとうございます。

>>902
LISP初心者なんでLaunchpadとかよく分かりません。
ベテランLISPerが誰も困ってないのなら仕様どおりなのでしょう。
処理時間の関係だけなので実はソースを弄ってsave-lisp-and-dieで既に動かしてはいます。
今まで便利だったのでそのまま使えたらと考えました。
>ただ、いかにもkludgyではあるので、そちらのお気には召さないかも。
ソースコードの可読性が損なわれないなら問題ありません。
>トップレベルの関数を利用する形にスクリプトのコードを自動変換し、
LISPならこんな事も簡単?に出来るのでしょうか。勉強してみます。
>ロードした状態のイメージを保存して、それを処理系を起動するときのイメージとして指定すれば、
これってsave-lisp-and-dieの事ですよね。

>>903
個人的にsave-lisp-and-dieの方法も検討していたので書き方が混乱していました。
目的は処理時間の短縮なので方法には拘りません。今まで(とは言っても数日ですが)
動いていたのが環境を変えたら動かなくなったのでどうなったのかなと。

>>904
なるほど。
実は0.40ではシバン付けたままでもコンパイルが通ってたんですよ。
シャープマクロ?の解析方法が変わったのかもしれませんね。



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


908 名前:デフォルトの名無しさん [2012/02/18(土) 18:09:12.81 ]
あと、皆様ごめんなさい。
SBCL自体では *シバンはサポートしてない* みたいです。
私の環境で動いたのは~/.sbclrcに以下を記述していた為でした。
(同様な記述がいくつもありますがおそらくwww.kono.cis.iwate-u.ac.jp/~hiki/?SBCLからのコピペ)
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 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 03:31:07.45 ]
stumpwmはそろそろ実用してもいいのだろうか

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

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

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

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

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

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

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

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

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



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

917 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 11:36:03.91 ]
[(((;゚Д゚]

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

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


920 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 09:53:27.22 ]
lisp始めたてだけどまだまだ括弧の多さになれない。

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

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

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

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

924 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 07:41:50.10 ]
sites.google.com/site/shidoinfo/Home/programing-lang/%E9%96%A2%E6%95%B0%E5%9E%
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 mailto:sage [2012/02/23(木) 09:37:42.03 ]
失礼、自己解決しました;
普通に
(load "smartcalcconsoleini.lisp")
で動きました;
手順にコンパイルするよう書いてあったのでそうしたのですが、、、
動いてよかったけどなんで動いたのか・・・;



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






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<297KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef