【入門】Common Lisp その6【質問よろず】at TECH
【入門】Common Lisp その6【質問よろず】 - 暇つぶし2ch545:デフォルトの名無しさん
09/09/22 00:31:42
>>543
えーと、AAを貼りだしたからといって、>>506をかまってちゃんのキチガイ扱いするのは可哀相すぎじゃないですか?
個人的には>>520あたりの脳内仮想敵について語り始めたり、罵倒しはじめる人の方がどうかと思いますよ。


546:デフォルトの名無しさん
09/09/22 00:55:53
今のところ可哀相じゃない

547:デフォルトの名無しさん
09/09/22 01:47:56
>>542
煽りっぽいけどマジレス

asdf-installが使えないと何かが足りないときに本当にめんどくさい。
どうしてもWindows上でチョロくCommonLispで遊びたいならUnix系のVM作るか
学習版のLispworksを入れてからStarter packで遊ぶ以外どうしようもない

なお学習版のLispworksでSDLなんかで遊ぶとあっという間にconsセル上限に達して再起動だから
結局製品版を買わないと遊べないぞ


548:デフォルトの名無しさん
09/09/22 02:44:06
あー、なるほど?
506の人がいった*nixの方がいいというのはそういう事なんですか?
わかりました。そういう事ならVMにLinux入れて試してみます。

549:デフォルトの名無しさん
09/09/22 02:51:53
Lisp を触りたいなら、Windows 信仰を捨てれば色々と楽になるよ。

550:506
09/09/22 03:48:50
>>542
どうしてもsdl-bin使いたきゃcffi/package.lispで
(:documentation ...)
#+windows(:import-from #:sdl-bin *dll-path*)
(:export ...)
とか突っ込んでおけば通るだろう。
no symbol named "*DEFAULT-FPSMANAGER*" in "LISPBUILDER-SDL-BASE" は、タイミング悪く
URLリンク(code.google.com)
にでも引っ掛けちゃったんじゃねーの。svn先端にすれば通るはず。



・・・ていうか、lispbuilder-sdl のレポジトリ見ても、「DOSの改行コード直す」とかいうリビジョンが
いくつかあったり、おれがマカーかもしれないことについて何か言い残したいことはあるか?

551:デフォルトの名無しさん
09/09/22 05:49:46
>>542

> >>534
> すいません、宗教上の理由によりMacは使えません。改行コードとかおかしいし。

物知らずなので教えて欲しいのだが、正しい改行コードというのがあるのだろうか?
ここだけ読むと途方も無い莫迦にしか見えない。Winsdows の改行コードだけが正し
いのです、というのなら *nix も使えないと思うのだけど。なるほど確かに宗教的な
理由だね。


> 日本語環境がおかしくてOSごとすぐ落ちるという印象がまだぬぐえないので。
> PowerXCell 8iが載ったMacとかが出たら考えちゃいますが。

OS ごとおかしくて、直ぐに青い画面になったり、一般保護違反を出すという印象が
まだ拭えな(ry


552:デフォルトの名無しさん
09/09/22 06:33:40
正しいのはCR+LF
なぜかというと
タイプライタのCRが行頭でLFが改行だから
Macの様にCRのみだと同じ行に重ねてタイプされる
*NIXの様にLFのみだと
                下の行に移動はするが
                                   行頭にはいかない

553:デフォルトの名無しさん
09/09/22 06:58:47
そんなことを言い出したら
backspaceでカーソル前の文字が消える
delete(rubout)でカーソル位置の文字が消える
(カーソルはブロックカーソルを想定)
ってのも、おかしいわけだが


554:デフォルトの名無しさん
09/09/22 07:06:48
>>550
ご親切にどうも。マカ―かどうかについては、口にするほどの事は別に何も。

>>552
通信分野、特にインターネットプロトコルの多くはWindows(というかDEC)の改行コード
である CR + LFが正統とみなされてますね。
*nixのLFのみは対応している場合もありますが、旧MacのCRのみは論外ですね。
調べてみたらMacはOS Xで一応まともなOSになったんですね。

あと、宗教的理由とは言いましたが、使ってる人が圧倒的に多いWindows環境になるべく
合わせたいんですよね。Macみたいに人が少なすぎて誰にも遊んでもらえないとか悲しいですし。
まあ、Common Lispを選んだ時点であんまり関係なさそうですけど。

555:デフォルトの名無しさん
09/09/22 07:11:06
それは機械式のタイプライターじゃなくてテレタイプのことだし、そんなこと言い出したら長い行のときは
その分いっぱいCR並べないといけないことになるわな。機械式はレバーでがちゃーんとやると行送りと
同時にヘッドも行頭に戻るようになっていた。

556:デフォルトの名無しさん
09/09/22 07:12:36
>>555>>552宛ね。

557:デフォルトの名無しさん
09/09/22 07:27:52
>>554

> 調べてみたらMacはOS Xで一応まともなOSになったんですね。

Windows はいつになったらまともなOSになるんですか?


cp932 以外の文字コードは認めない。UTF-8 なんて論外だ。
EUC-JP は存在自体が許せない。

とか言い出しそうな人にしか見えない。


改行コードってそもそも低速通信の頃の名残じゃなかったっけ?
そんな話を何処かで聞いたのだけど、何処だったか忘れた。だか
ら正しさとかいう話ではないと思うが、どうなんだろう。


私は使えれば良いや、くらいにしか思ってないから拘りがあんま
りないな。だから Java には驚いた。

558:デフォルトの名無しさん
09/09/22 07:50:41
もし宜しければどなたか>>509をお願いしますm(_ _)m

あと、String型としてHTMLタグを書くときに、バックスラッシュを使わずにダブルクオーテーションをそのまま書ける方法はありますか?

559:デフォルトの名無しさん
09/09/22 08:02:41
まさか未だに Mac が PowerPC だと思ってるわけ無いよな。改行コードは知らなかった
みたいだけど、Mac OS X が元々 NextStep だって事くらいきっと知ってるんだよな。
この分野で Windows を使ってる人が圧倒的に少ない事にはそろそろ気付いてるだろうし、
SBCL の公式バイナリが Mac 版だけが最新バージョンな事は当然知ってる事だよな。
その上で自分の宗教と現実のどっちが大事かくらいは分かるよな。

560:デフォルトの名無しさん
09/09/22 08:15:57
>>557
> 改行コードってそもそも低速通信の頃の名残じゃなかったっけ?
そだよ。50baud 位の通信レートで直接リレーを叩くって時代の名残


561:デフォルトの名無しさん
09/09/22 09:24:48
>>558
ほとんどのCL処理系は読み込んだ時点でコンパイルまでしてしまうと思うが・・。(評価時に未束縛
シンボルや不正データ型でエラーが出るのはまた別の話)evalはともかくマクロ自体はパフォーマンスに
関係ないはずだし、ふつうボトルネックはCGI本体以外のところにある。

エスケープせずにダブルクオート使いたかったら自分でリーダマクロ書くしかアルマジロ。

562:デフォルトの名無しさん
09/09/22 09:48:18
>>554
>>Macみたいに人が少なすぎて誰にも遊んでもらえないとか悲しいですし。
今ならMac=Unixなんだから、プログラム勉強するならMacの方が圧倒的に楽だけどなぁ。
技術系のセミナーとか行ってみるといい。Macのノートがやたら多いよ。

563:デフォルトの名無しさん
09/09/22 10:53:27
>>551
> OS ごとおかしくて、直ぐに青い画面になったり、一般保護違反を出すという印象が
> まだ拭えな(ry

へぇ、今りぬくすユーザはそんなことが書けるんだ。
なんでりぬくすにコントロール+おると+デリートキーコマンドがあったのか知らないのかな。
いや、みゅーる終わらせるのに再起動していたインスト厨だけど(泣


564:デフォルトの名無しさん
09/09/22 12:02:45
>いや、みゅーる終わらせるのに再起動していたインスト厨だけど(泣
ものすげぇ自爆じゃねぇか!


565:デフォルトの名無しさん
09/09/22 20:56:15
>>559
むしろPowerPCアーキテクチャでなくなった事で、完全に選択肢に入らなくなりましたね。
Mac OSを使う気は全く無いですし、Windowsが動くとはいっても、Macにこだわるべき理由
が全くありませんから。素直に低価格のWindows PCを選びますよ。2~3万円で必要な
機能は全て揃いますからね。

> SBCL の公式バイナリが Mac 版だけが最新バージョンな事は当然知ってる事だよな。
これは知りませんでしたね。まさかSBCL自体が地雷だったとは思ってもみませんでした。


566:デフォルトの名無しさん
09/09/22 21:11:38
>まさかSBCL自体が地雷だったとは

こういう事を平気で言えてしまうのは一体どういう人なんだろうな…
他人事とはいえ、悲しくなるわ

567:デフォルトの名無しさん
09/09/22 21:25:23
>>561
ありがとうございます。

スレ荒れてますね・・。

568:デフォルトの名無しさん
09/09/22 21:26:57
相手しないほうがいいって意見が正しかったな

569:デフォルトの名無しさん
09/09/22 21:52:25
URLリンク(jp.techcrunch.com)

Common Lispなら何とかしてくれる

570:デフォルトの名無しさん
09/09/22 21:54:25
宗教って怖いね


571:デフォルトの名無しさん
09/09/22 22:02:13
>>566
> こういう事を平気で言えてしまうのは一体どういう人なんだろうな…

一神教の人。

572:デフォルトの名無しさん
09/09/22 22:21:28
>>569
MIT の学生なら、その問題を解かなくても Google には入れそうな気が、、、
でもこういうのは楽しくて良いね

573:デフォルトの名無しさん
09/09/22 22:43:56
(defun test (str)
(setf lst '())
(loop for i from 0 upto 3
do (setf (char str i) #\a)
(push str lst))
(format t "~A ~A ~A ~A~%" (car lst) (cadr lst) (caddr lst) (cadddr lst)))

(test "test")

* aaaa aaaa aaaa aaaa
NIL

何故だ

574:デフォルトの名無しさん
09/09/22 22:48:46
>>566

どんな状況でも自分を正当化できる人間って、ある意味羨ましいよな

575:デフォルトの名無しさん
09/09/22 22:53:20
やりたい事はこれでいいのかな?
(defun test (str)
(format t "~{~A~^ ~}~%"
(loop
for i from 0 upto 3
for s = (copy-seq str)
do (setf (char s i) #\a)
collect s)))

* (test "test")
aest tast teat tesa
NIL

576:デフォルトの名無しさん
09/09/22 22:55:28
一つしかない文字列 str を破壊的に更新しているから。
i:0 str => "aest", lst => ("aest")
i:1 str => "aast", lst => ("aast" "aast")
i:2 str => "aaat", lst => ("aaat" "aaat" "aaat")
i:3 str => "aaaa", lst => ("aaaa" "aaaa" "aaaa" "aaaa")
どうなって欲しいのかがよくわからんが、push時にコピーしときたいならこうかな。
(defun test (str)
(let ((lst nil))
(loop for i from 0 upto 3
do (setf (char str i) #\a)
(push (copy-seq str) lst))
(format t "~A ~A ~A ~A~%" (car lst) (cadr lst) (caddr lst) (cadddr lst))))

577:デフォルトの名無しさん
09/09/22 22:57:26
今気付いたけどtoじゃなくてuptoなんてあるんだ。
なんか違いあったりするの?

578:デフォルトの名無しさん
09/09/22 23:10:34
数値ベースの for における incremental stepping / decremental stepping の指定につかう。
toとuptoで違いがあるというより組合せだね。byでの増分値指定は正の数のみなので、
from .. to .. [by N] => inc
from .. upto .. [by N] => inc
downfrom .. to .. [by N] => dec
from .. downto .. [by N] => dec
となる。below/aboveとかもあるけど。詳細は CLHS 6.1.2.1.1 The for-as-arithmetic subclause 参照。

579:デフォルトの名無しさん
09/09/22 23:15:47
>>575-576
お、ありがとう
charを使ったら思うようにならなくなって困った

580:デフォルトの名無しさん
09/09/22 23:37:17
>>566
だってシェア10%未満の環境のみを基準にして、他は対応が大幅に遅れるんでしょう?
なら、地雷そのものじゃないですか。GCLにでも乗り換えますよ。

>>571
つまりMac信者の事ですね。


581:デフォルトの名無しさん
09/09/22 23:43:22
やっぱりソースコードが書いてあるとスレがマッタリするな~

582:デフォルトの名無しさん
09/09/22 23:49:23
>>580
シェアが大きいってことは「正しい」ってことでも「優れている」ってことでもないんだ。
ある条件にはよりよくマッチするってことはあるかもしれんがね。

583:デフォルトの名無しさん
09/09/23 00:06:52
>>582
その話題を続けたいなら別スレに行こうな。
君が相手を続ける限り終わらないぜ。論理で信仰に挑んでも仕方が無いさ。

584:デフォルトの名無しさん
09/09/23 01:28:36
まじキチ…ユダヤが人工地震を起こすぞ

【緊急情報カクサンよろしく】

ついに来ました。

大きい動きです。250nT超えてきました。ほぼ間違いありません。もう一度言います。

友人、知人、親類縁者、あらゆるつながりを駆使して巨大地震がくることを教えて下さい。

四川地震より大きいのが来る可能性があります。
URLリンク(g)<)★253494015/
【大気イオン】e-PISCO Part11【また延長】
スレリンク(eq板)★252991726/

本当に地震が来たら、犯人は特権階級全員だということ2


585:デフォルトの名無しさん
09/09/23 04:56:01
>>580
SBCL は *nix 上で動作するものとして開発が始まっていてだなぁ,
Windows 上での動作なんてのは想定外だったんだよ。
# Mac も OS X は, ユーザーランドは立派な *nix だしな………

そうゆう意味では地雷だったわけだ。
# ぶつぶつ文句言うくらいだったら SBCL Windows 版の開発に参加すればいいのに
# 何のためのオープンソースなんだか………


586:デフォルトの名無しさん
09/09/23 05:16:22
なぜかやたらSDLにご執心のようだからおおかたHSP畑の人なんじゃね・・と書こうとしたら

    |
  \ _ /
 _ (m) _
    目   ピコーン
  / `′ \
   ∧∧
   (・∀・)
  ノ( )ヽ
   < >

HSP <-> I_ISP <-> LISP 俺って天才?

587:デフォルトの名無しさん
09/09/23 10:58:03
>>586
天才。

588:デフォルトの名無しさん
09/09/23 13:08:59
>>586
      _人人人人人人人人人人人人人人人_
        >      な、なんだってー!!    <
        ̄^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄
   ∩___∩              ∩____∩
   | ノ     u ヽ            / u     u └|  ∩____∩
  / # ●   ● |           | ●   ● # .ヽ/  u    └|
  | u   ( _●_)  ミ          彡   (_●_ ) u  |●   ● # ヽ
 彡、   |∪|  、`\        /     |∪|    彡  (_●_) u   |
/ __  ヽノ /´>  )       (  く   ヽ ノ   / u   |∪|    ミ
(___)   / (_/        \_ )      (  く   ヽ ノ     ヽ


589:デフォルトの名無しさん
09/09/23 13:14:10
>>586
お前天才だな

590:デフォルトの名無しさん
09/09/23 17:49:43
#'って紛らわしくない?
quoteっぽく見えるけど、やってることはquote剥がしに近い


591:デフォルトの名無しさん
09/09/23 18:42:50
>>590
俺も、似たようなこと思ってた。

時々、#'がquote の関数版とか言う表現を見かけたんだけど、
「やってることの向きが逆じゃね。」
と、思ってたよ。

ただ、だまってたけど。


592:デフォルトの名無しさん
09/09/23 19:13:29
>>590
見た目のはなし?気に入らないなら function でもどーぞ。
>>591
それって見た目の話じゃなくて意味の説明だった?
俺には向きというか全然別物に見えるけど。

593:デフォルトの名無しさん
09/09/23 19:42:15
シンボルから関数実体をデリファレンスするんだから、確かにquoteのように
ラップするのとは逆といえば逆かな。

lambdaに対する#'は微妙だけど。

594:デフォルトの名無しさん
09/09/23 21:22:02
>>590
quote と function は元々同じ意味で、
function を使うのは処理系に与えるヒントでしかなかった。
emacs lisp では今でもそう。

Common Lisp では (たぶん lexical closure のせいで)
quote と function は違うものになった。

595:デフォルトの名無しさん
09/09/23 21:23:14
ANSI Common Lispのlambda式は謎すぐる。

全体として関数名とみなされ、#'で対応する関数が得られ、
それとは別にlambdaマクロで関数が得られる?

もうschemeに帰りたい…


596:デフォルトの名無しさん
09/09/23 21:46:35
あんまり関係ないオペレータ間に関係を見出すのはどうかと思うなぁ。
(QUOTE object) => オブジェクトそのものを返す
(FUNCTION name) => カレントレキシカル環境の指定された名前の関数を返す。みつかんなかったらグローバル環境から探す。
だろ?>>593のいうようなデリファレンスはSYMBOL-FUNCTIONを想像するなぁ。

597:デフォルトの名無しさん
09/09/23 21:49:02
590です。

>>594
ありがとう。
"lisp quote function"でぐぐって、関係ありそうな日本語の文書として

URLリンク(www.ice.nuie.nagoya-u.ac.jp)
URLリンク(www.ice.nuie.nagoya-u.ac.jp)
URLリンク(tips.lisp-users.org)

がひっかかった。これから読む。


598:デフォルトの名無しさん
09/09/23 21:54:46
>>595
俺もお前が謎すぐるので、もうSchemeに帰ってほしい…

599:デフォルトの名無しさん
09/09/24 01:12:53
普通のやつらの上を行け
URLリンク(www.youtube.com)

600:デフォルトの名無しさん
09/09/24 09:25:01
>>594
その辺はemacs lispの方がわかり易いな。
ただemacs lispはCLの人の為に #' は残してくれてるよね。
中では多分同等にあつかってるとおもう。

(defun foo (fn) (funcall fn))
=> foo
(foo '(lambda nil 1))
=> 1 (#o1, #x1)
(foo (lambda nil 1))
=> 1 (#o1, #x1)
(foo #'(lambda nil 1))
=> 1 (#o1, #x1)
(foo (function (lambda nil 1)))
=> 1 (#o1, #x1)

#'1
=> 1 (#o1, #x1)

601:デフォルトの名無しさん
09/09/24 10:15:30
> #'1
> => 1 (#o1, #x1)

こいつはくせえ。ゲロ以下のにおいがプンプンするぜ。

CLでもlambdaマクロからは同じようなにおいがするけどね。


602:デフォルトの名無しさん
09/09/24 10:21:50
>>601
> こいつはくせえ。ゲロ以下のにおいがプンプンするぜ。

ちゃんと>>600を読めよ。 emacs lisp では
' == #'
なんだよ。

603:デフォルトの名無しさん
09/09/24 12:39:45
> (defun foo (f) f)
FOO
> (defun fuga () (format t "test"))
FUGA
> (foo (fuga))
test
NIL

これって問題ないんですか?
funcallやapplyは不要??

604:デフォルトの名無しさん
09/09/24 12:56:46
(foo (fuga))と(foo fuga)を混同してない?

605:デフォルトの名無しさん
09/09/24 13:01:03
>>604
すみません、どう違うんです??

606:デフォルトの名無しさん
09/09/24 14:27:54
((lambda (x) x) (format t "test"))

607:デフォルトの名無しさん
09/09/24 14:34:39
どう違うかって、試してみればいいでしょ

608:デフォルトの名無しさん
09/09/24 14:58:15
> (foo fuga)

*** - SYSTEM::READ-EVAL-PRINT: variable FUGA has no value

変数の名前空間と関数の名前空間が違うということですね。
ということは(foo (fuga))ではfugaは代入されて実行されたわけではない?
引数にした関数をなかで実行したい場合はどうすればいいんですか??

609:デフォルトの名無しさん
09/09/24 15:07:04
>>608
何を言ってるんだお前は

610:デフォルトの名無しさん
09/09/24 15:10:06
ごめんなさい…

611:デフォルトの名無しさん
09/09/24 15:33:59
>>608
各 symbol には関数以外の値と関数の値(ポインターかコードオブジェクト)を
保持するスロットがある。名前空間が違うわけではない。


612:デフォルトの名無しさん
09/09/24 15:53:02
>>608
呼び出し元で function(#')またはquote(')、
呼び出し先でapplyまたはfuncallを使う。

>>611
> 各 symbol には関数以外の値と関数の値(ポインターかコードオブジェクト)を
> 保持するスロットがある。
それが名前空間が違うということなんじゃないの?


613:デフォルトの名無しさん
09/09/24 16:10:27
>>505
ここの方法を改変したらいけた

URLリンク(mono.kmc.gr.jp)
私は
Program Files
じゃなくて
c:\sbclに入れた

614:デフォルトの名無しさん
09/09/24 16:28:31
> 呼び出し元で function(#')またはquote(')、

たいていはどっちでもいいのだが
前者は関数定義そのもの、後者は関数名による呼び出しなので
別のものが呼び出される場合がある

615:デフォルトの名無しさん
09/09/24 16:38:35
> (defun fuga () (format t "test"))
fuga

> (setq fuga1 #'fuga fuga2 'fuga)
fuga

> (funcall fuga1)
test
nil

> (funcall fuga2)
test
nil

> (defun fuga () (format nil "test"))
fuga

> (funcall fuga1)
test
nil

> (funcall fuga2)
"test"



616:デフォルトの名無しさん
09/09/24 17:24:11
windowsで.sbclrcってファイル作れないよね
dot.sbclrcとかで代用できないの?

617:デフォルトの名無しさん
09/09/24 17:36:37
%HOME% 設定してるうちの環境ではふつーに読んでくれるみたい
;;; SBCL 1.0.29 on win2003


618:デフォルトの名無しさん
09/09/24 19:41:52
>>616
コマンドラインからつくれなかったっけ?

619:デフォルトの名無しさん
09/09/24 20:00:00
>>618 nt-emacs あたりで普通に作れなかったけ?


620:デフォルトの名無しさん
09/09/24 20:42:09
>>616
適当なファイル名で作ってから ren コマンドでリネームが常套手段

621:デフォルトの名無しさん
09/09/25 19:40:22
(human nanasino gonbe
 ((00-0000-0000 keitai)
  (11-1111-1111 ie))
(("toukyouto chiyodaku nagatacho 1-1-1" jitaku)))
みたいなデータ構造を扱いたいと思っています
これってプロパティリストでは扱えないと思うんですが
アクセッサやフォーマットチェッカなんかを作ってくれるライブラリとかご存じないでしょうか

622:デフォルトの名無しさん
09/09/25 21:18:17
ちょっと良くわからないな。
> これってプロパティリストでは扱えないと思うんですが
内容によっちゃぁ、
(:type human :name (nanasino gonbe) :keitai 00-0000-0000 :ie 11-1111-1111 :jitaku "toukyouto ...")
とう形式で覚えて、入出力時に任意の表現でもいいんじゃないか。
> アクセッサやフォーマットチェッカなんかを作ってくれるライブラリとかご存じないでしょうか
どんなアクセサが欲しいのか?フォーマットチェッカはどんなデータをどうエラーにしたいの?


623:デフォルトの名無しさん
09/09/26 02:45:46
sbclよりECLの方が速いんだろうか

624:デフォルトの名無しさん
09/09/26 09:09:21
どうしてそう思ったのかスゲー気になるけど基本的にsbclの方が圧倒的に速いよ。

625:デフォルトの名無しさん
09/09/27 19:36:46
kwsk

626:デフォルトの名無しさん
09/09/29 20:49:56
天才が居ると聞いてやってきました

627:デフォルトの名無しさん
09/09/29 21:29:38
>>626
どこで聞いたの?

628:デフォルトの名無しさん
09/09/29 23:35:13
天気予報を見ていると「満潮」「干潮」の時刻まで画面に表示している。
干潮 (かんちょう) というと当然ながら浣腸を連想するわけだ。
肛門にぶっ挿して中に出すあれだ。
では満潮 (まんちょう) というと、もちろん差し込む場所は…


629:デフォルトの名無しさん
09/09/29 23:36:34
誤爆しました。 すまんこってす。


630:デフォルトの名無しさん
09/09/30 10:27:37
天才が居ると聞いてやってきました

631:デフォルトの名無しさん
09/09/30 10:52:14
URLリンク(find.2ch.net)

632:デフォルトの名無しさん
09/09/30 10:56:53
>629
Lisperは変態の集まりだと思われかねないので
そのような誤爆には気を付けてくれた給へw。

633:デフォルトの名無しさん
09/09/30 10:59:46
>>632
> Lisperは変態の集まりだと思われかねないので

え、違うの?

634:デフォルトの名無しさん
09/09/30 11:00:12
マルチコピペ

635:デフォルトの名無しさん
09/09/30 11:02:16
ここまでテンプレってところですか

636:デフォルトの名無しさん
09/09/30 15:51:52
                _, -―‐―- 、
               /斗─= 、―-、\
              /'´>‐‐─-\  ヽ`ニヽ
             ////   l     ヽ  ∨ヽ\
           __〃 l   |     {  ヽ    |    V-、/
         く // │l ト、ノ   ヽ  \‐-!  |  トく \
        //| l l |l┼匕_\|\ \ {_\|  j  l{ ヽ/}
        </レV|ヽ小 ヾ氿心  \l〃⌒|   八ーⅣ
         // /| \ヽハ弋ヒ}   ,  ::::::│/ / 从リ
          / /|__l |  rfV \ :::  t=ー ァ  // / `>、_       すまんコ!
         ∨ {ヘハヽト:!ハ\.> _`ー_,.イl/∨l / /\-、___
.             ヽ从| | lヘn\ゝト、 7  :|八 '/  /   ノ`'|lllレ│
                  | l人j {ヽミ :|二ニ二|  / /       |l斗' |\
                  { ヽ `}\ ∨ ,'  j '/    ォ<__/__ヽ、j _}
                /ム , /}小\∨ r//     / )><_|寸|/ /
            /_|l`三彡ハ \∨l/       //「「|    ̄ _/
           {/ \二イ  `ーォ≧≦二ニ ≠  \>‐‐=彡'
           |     /   / / / ハヽ  │   `rー‐'´
           l     /    人く/イ|  L_>、    /ヘ
            `ー‐'´   /   '/ | !   \ヽj/ / /^ヽ
                r‐'´    ,' /j j    ヽト、   /  ノ\_
               }    / ///      ∧ヽ      /
                ヽ.   / /く/     │l\_>     /
                \_/ l          │l      /
                  |`ヽ{_        ノ {   __/
                  |   `ー┬┬-、(厂'ー'´/
                  |     ,' /       /



637:デフォルトの名無しさん
09/10/01 20:36:31
araneidaってどう?
hunchanroot使う人多いみたいだけど

638:デフォルトの名無しさん
09/10/04 01:05:34
clbuildが/home/myname/.sbcl/
以下にいろいろインストールしちゃうんだけど
/usr/share/common-lisp/
以下に変更する方法ないものだろうか

639:デフォルトの名無しさん
09/10/04 02:32:41
>>569

いまさらだし、ネタばれ読んでから作ったものですが、、、

(defun make-decode-hash (key-list)
  (let ((d-hash (make-hash-table :size 47))
        (bs-list (coerce "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" 'list)))
    (dolist (x (append key-list bs-list) d-hash)
      (or (gethash x d-hash)
          (setf (gethash x d-hash) (pop bs-list))))))

(defun decode-google (key quest)
  (let ((dec-hash (make-decode-hash (coerce (nstring-upcase key) 'list))))
    (format t "~{~a~}~%" (mapcar #'(lambda (x) (gethash x dec-hash))
                                 (coerce (nstring-upcase quest) 'list)))))

(decode-google "jobs" "8MLDQ6TUI6TFMLRHAANRA6Q8EFLDMQ86II2O32S5J13JXOJ")

この問題に関してなら、コンパイルなしでハッシュが使える言語なら、
何でも向いているといえそうな気がします。


640:デフォルトの名無しさん
09/10/04 09:55:07
Lispのハッシュってどれくらい早いの?
データが多くなければMySQLの代わりに使える?

641:デフォルトの名無しさん
09/10/04 09:59:12
速さで言えば充分に速いと思うけど、
MySQL (リレーショナルデータベース) の価値は速さじゃないからなぁ…
代わりに使えるかどうかという疑問には簡単には答えられない。 状況による。

642:デフォルトの名無しさん
09/10/04 10:20:44
>>640
SQLite使いなよ。
URLリンク(www.cliki.net)

643:デフォルトの名無しさん
09/10/04 10:22:48
>>640
お前バカか?
基本ハッシュテーブルの方が早いわ。

644:デフォルトの名無しさん
09/10/04 10:28:32
>>641-643
wikiで関係代数、関係論理の項目読んでみた。
無知でごめん。勉強になります。

645:デフォルトの名無しさん
09/10/04 11:40:30
>>643
MySQLのHEAPテーブルだったらオンメモリなハッシュテーブルみたいだから
あまり変わらんのでは?

646:デフォルトの名無しさん
09/10/04 11:58:01
>>645
いや基本遅いから。
いちいちこんな簡単なこと聞くなよ低能。

647:デフォルトの名無しさん
09/10/04 12:53:17
日本語のようだが意味が通じない

648:デフォルトの名無しさん
09/10/04 13:53:54
アフリカ人並の読解力だな

649:デフォルトの名無しさん
09/10/04 14:16:01
差別発言だな

650:デフォルトの名無しさん
09/10/04 17:44:32
アフリカ人の平均言語性IQが異常に低いのは事実であり、差別発言ではない。

651:デフォルトの名無しさん
09/10/04 17:51:15
Lisperの平均的社会性が低いのは分かった。

652:デフォルトの名無しさん
09/10/04 18:11:00
知能の低い人や頭のおかしい人は、変なタイミングで変なことをわかっちゃうからね。
この人なら、町内会のチラシ見て宇宙の真理とかもわかっちゃいそう。

653:デフォルトの名無しさん
09/10/04 18:16:47
そのチラシに第42回とか、42歳とか、42年目とか書かれていたのかもしれん

654:デフォルトの名無しさん
09/10/04 18:53:36
人生、宇宙、すべての答えが42だとしても、
42という数字がそうであると一瞬で確信できるのはやっぱりキチガイ。

655:デフォルトの名無しさん
09/10/04 20:35:14
(defmacro macro-test ()
(let ((g (gensym)))
`(eq ',g ',g)))
を評価して

>(macro-test)
を評価すると
T
となるのですが

>(EQ '#:G6575 '#:G6575)
を評価すると
nil
となるのはどうしてでしょうか?


656:デフォルトの名無しさん
09/10/04 20:53:59
>>645
マニュアル見ると、機能的には実装もハッシュぽいね。
これならあんまりかわらないのかも。

657:デフォルトの名無しさん
09/10/04 21:08:32
>>655
前者は gensym で作成されたシンボルが g にうめ込まれている。二つは同じシンボルなので比較するとT。
後者はリーダーが読む毎に別のシンボルを作成する。後者の場合はリーダーが読んだ結果は (EQ <シンボルA> <シンボルB>) でこの二つは別のオブジェクト。
SYNBOL-NAME で取得するとどっちも "G6575" がかえってくるだろうけど、別のシンボル。#: はこれを実現するためのマクロだからね。
この動作は CLHS 2.4.8.5 で規定されている。

658:655
09/10/04 21:53:02
納得しました.ありがとうございました.

659:デフォルトの名無しさん
09/10/05 01:54:11
windowsにsbclとcffiをインストールすると
うまく動くPCと動かないPCがある
何が違うんだろう

660:デフォルトの名無しさん
09/10/05 06:08:18
>>656
アホだなお前。

661:デフォルトの名無しさん
09/10/05 09:07:17
> マニュアル見ると、機能的には実装もハッシュぽいね。

苦笑い

662:デフォルトの名無しさん
09/10/05 09:09:42
今迄、これほど顕著になることはなかったけれど、
なんかこのスレの程度の低さが露呈されてきたようだな。
このスレッドには基礎的なデータ構造すら理解できていない人間が多すぎる。

663:デフォルトの名無しさん
09/10/05 09:12:22
でもそのレスだったら、このスレで一番程度の低い人でも書けますよ。

664:デフォルトの名無しさん
09/10/05 21:29:52
ハッシュテーブルを外部プログラムに任せる方が速いCL実装があるとは信じら
れないが、そんなことが分からない人間がこのスレにいることは信じるしかない
みたいだな。


665:デフォルトの名無しさん
09/10/05 22:11:24
>>664
Lisp脳は簡単な日本語も分からないのか?
どこにLispの実装より早いと書いてある??? はぁ????



666:デフォルトの名無しさん
09/10/05 22:12:13
脳細胞がリストとS式出来ているから無理は無いかwwww


667:デフォルトの名無しさん
09/10/05 22:13:21
Orz

668:デフォルトの名無しさん
09/10/05 22:33:29
>>640
ハッシュテーブルで済む用途にはハッシュテーブルを使ったらいいし、
RDBS が必要な用途にはそれを使えばいい。
機能が違うのに性能を比較するのはナンセンス。

ただのハッシュテーブルで済むことに MySQL を使ってたのだとしたら、
アホなことやってんなぁと思う。 そんな話。

どうしても速度が気になるなら自分がやりたい条件で実測しろよ。

669:デフォルトの名無しさん
09/10/05 23:10:59
>>656
この低能さんはプログラマなの?

670:デフォルトの名無しさん
09/10/05 23:18:47
あんまり汚い言葉ばかり使っていると、自分のきれいな部分が汚れていくよ

671:656
09/10/05 23:32:23
学生です…ハッシュつかったO(1)かと思ったのですが、違ったんですかね。
不用意な発言で荒れてしまい申し訳ありませんでした。

672:デフォルトの名無しさん
09/10/06 00:13:37
殺伐としてきたな。まあお茶でも飲んで落ち着け


  旦旦旦旦旦旦旦旦旦旦旦/⌒ヽ旦旦旦旦旦旦旦旦旦
  ⊂二二二二二二二二二二( ^ω^)二二二二二二二二⊃  お茶が入りましたおー
                  |    /
                  ( ヽノ
                  ノ>ノ
              三  レレ


                         ∩     ダシャーン
       ミ                 //
     ミ    ⊂'ヽ  ∩      //   \
      ミ    \\\\_,,,,,,,,/ ∠          /
             \\\\    .,''.,':.',,      .,':.',, .,': l  .,':.',,|[]].,':...,
    ガッ        )   \\      ).,':.',,:.',,  []] .,':.',,.,':.',,.,日  .,':.',,.,':.',,          /
    ⊿   ⊂二二二、___ヽ \_,,..ノ  /[]].,':',,:',[]]/[]]\[]].,':.',,|[]].,':.',, _ .,':.',,]]/ 日.,':.',,.., . ..,,,;:[]]


673:デフォルトの名無しさん
09/10/06 00:20:50
lispは初心者を大事にするような風潮がないようだね。
最初は間違うものだから頑張れ。頑張れ。

674:デフォルトの名無しさん
09/10/06 00:53:48
>>673
黙れマッチポンプ

675:デフォルトの名無しさん
09/10/06 02:10:33
>>666
脳細胞がリストとS式で出来てるなんてうらやましい

676:デフォルトの名無しさん
09/10/06 02:15:53
全部weak pointerですが

677:デフォルトの名無しさん
09/10/06 02:53:18
頭を振ったらアトムが出てきたお

678:デフォルトの名無しさん
09/10/06 03:38:22
>>675
表現可能ってだけで、できているわけではない。
それにS式である必要もない。

679:デフォルトの名無しさん
09/10/06 12:48:29
リストはS式に含まれるから
単に(S式)か(アトムとコンスセル)かどっちかだな

680:デフォルトの名無しさん
09/10/06 20:28:07
lambda式を取り出す手段てありますか?
(lambda (...) ...)はマクロとして評価されて返ってくるのは関数ですよね。

直接lambda式をいじる、という状況はあまり思い浮かばないけど
なんとなく気になったもので。

681:デフォルトの名無しさん
09/10/06 22:30:21
>>679
M式って別の表現があることで分かるように、S式は印字表現だぜ。
>>680
#'(lambda (...) ...)のこと?

682:デフォルトの名無しさん
09/10/06 22:42:27
>>681 M式 … S式は印字表現
なにをば(ry


683:デフォルトの名無しさん
09/10/06 22:47:15
>>681
#'(lambda (...) ...)だと返ってくるのは関数ですよね。
ほしいのはその一段階前の状態です。
マクロとして評価されない(lambda (...) ...)と言えばいいのかな?

684:デフォルトの名無しさん
09/10/06 22:56:05
lambda はスペシャルフォームだお。

685:デフォルトの名無しさん
09/10/06 23:16:17
>>683
これかな。使ったことないけど。
URLリンク(www.lispworks.com)

686:デフォルトの名無しさん
09/10/06 23:38:20
>>685
意図していたのはまさにそれです。ありがとうございました。
自分で聞いといて何ですが、どういうときに使うんでしょうね。

687:デフォルトの名無しさん
09/10/07 00:04:50
function-lambda-expression の返す lambda expression に関しては、
CLHSにあるとおり nil が返る可能性があるからねぇ。最悪常に nil でもいいわけで。
ほとんどの処理系で最適化の具合でなくなっちゃうから、ユーザーレベルでこれを
アテにするほうな利用法はあまり見かけないね。プリティプリンタ、インスペクタなどの
表示系で nil になったても致命的じゃない場所で使われてるのはたまに見かける。

688:デフォルトの名無しさん
09/10/07 00:20:36
>>684
節子、それcommon lispやない、schemeや

689:デフォルトの名無しさん
09/10/07 01:40:17
節子、ここにいたのか

690:デフォルトの名無しさん
09/10/07 05:16:56
defunのついでにdefvarで適当な名前の変数に関数定義のS式を格納しておくマクロでも
書けばいいんでねえか

691:デフォルトの名無しさん
09/10/07 09:28:13
>>687
なるほど。表示系が一番適切そうですね。

>>690
書き込み見て気づきました。
       |
   \  __  /
   _ (m) _ピコーン
      |ミ|
   /  .`´  \
     ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    (・∀・∩< lambda式ってただのS式?
    (つ  丿 \_________
    ⊂_ ノ
      (_)


692:デフォルトの名無しさん
09/10/07 10:26:33
>>690
defun特化なら、そのシンボルのsymbol-plistに加えた方がいいのでは?
ただdefun特化だと、無名のクロージャのfunction-lambda-expressionは取れないよね。

それからS式は印字表現だっての。

URLリンク(en.wikipedia.org)
> The term S-expression or sexp (for symbolic expression) refers to
> a convention for representing semi-structured data in human-readable
> textual form.

Elisp辺りはobjectの意味で使ってるけど。

693:デフォルトの名無しさん
09/10/07 13:56:53
>>685-687
schemeだと、それがnilにならないの?
stalimもそうなのかな

694:デフォルトの名無しさん
09/10/07 14:14:45
Schemeは、ラムダ式の評価後の値は実装依存の何かだよ。

$ gosh
gosh> (lambda () t)
#<closure #f>

$ guile
guile> (lambda () #t)
#<procedure #f ()>


695:デフォルトの名無しさん
09/10/07 20:54:11
RDBSが必要な場面ってなんだろう
データがメモリーに入りきらないとき?

696:デフォルトの名無しさん
09/10/07 21:11:11
「リレーショナル」ってどういう意味かわかるよな?

697:デフォルトの名無しさん
09/10/07 21:44:42
データを別のプログラムやシステムと共有するとか、
冗長性を減らすとか、一貫性が必要な場合とか、完全性とか
セキュリティとか…いっぱいあるから RDBMS は勉強しとくといいよ。

698:デフォルトの名無しさん
09/10/07 22:03:50
>>697
「リレイション」は無視かよ。

699:デフォルトの名無しさん
09/10/07 23:19:42
>>698
なんか嫌なことでもあったのか?

700:デフォルトの名無しさん
09/10/08 11:58:37
あったよ。

701:デフォルトの名無しさん
09/10/08 13:35:12
Linuxに入れるclispをffi対応にしたいのですがどうすればいいのでしょう?
readlineとlibsigsegvはインストール済ですがffiもどこかから持ってくる?

configureするとこうなっています

Configure findings:
FFI: no (user requested: default)
readline: yes (user requested: default)
libsigsegv: yes

702:デフォルトの名無しさん
09/10/08 13:55:41
>>701
configure の時のオプションは何?

703:デフォルトの名無しさん
09/10/08 14:06:29
>>702
prefixでインストールディレクトリだけ指定しています
あと、configureではありませんが、srcディレクトリで
./makemake --with-dynamic-ffi
等も試してみました

704:デフォルトの名無しさん
09/10/08 16:35:16
>>703

URLリンク(d.hatena.ne.jp)

しかし、clispのバージョンによって、ソースからインストールしたときに、ffiパッケージが
有効になるバージョンと有効にならないバージョンがあるようでした。

とあった。ここによると clisp 2.42 だと大丈夫のようだけど、調べてないです。


ほかにこんなのもありました。

URLリンク(blog.goo.ne.jp)


705:704
09/10/08 17:00:25
ためしに clisp-2.41 でやってみた。libsigsegv などを /usr/local ではない所に
入れているので、./configure のときにちょっと書き足したけど、結果は以下の
通り。

Configure findings:
FFI: yes (user requested: default)
readline: yes (user requested: default)
libsigsegv: yes


ということで、バージョン依存でよさそう。2.47 だと FFI は no になってた。

706:デフォルトの名無しさん
09/10/08 19:19:35
"Land of Lisp"ってどうなんでしょうかね
ゲームを題材に、ってのは惹かれる

707:デフォルトの名無しさん
09/10/08 22:23:35
ffcallがインストールしてあるか確認してください。
URLリンク(www.haible.de)

以前は同梱してありましたが2.44で同梱されなくなりました。


708:デフォルトの名無しさん
09/10/09 10:43:42
>>706
どうもアチラさんの絵のセンスは理解できない。
試み的には期待してる。


709:デフォルトの名無しさん
09/10/09 11:21:50
>704-705>>707
インストールできました。ffcallという名前のライブラリだったんですね
ありがとうございます

710:デフォルトの名無しさん
09/10/09 19:03:51
URLリンク(www.gnu.org)

には

Note

The old page, URLリンク(www.haible.de) is deprecated (it offers an obsolete source tar ball).


と書いてあるんだけど、なんかあったの?

711:デフォルトの名無しさん
09/10/09 19:22:36
なんかあったかというと、 URLリンク(www.gnu.org) が公式になったってくらいかな。
そっちの旧ページはもうメンテされてないし、古いソースがころがってるから見ちゃだめ、という意味。


712:デフォルトの名無しさん
09/10/10 17:15:09
>>711
ありがとうございます。

cvs ってのがイマイチよく分からなかったのですが、なんとか落としてみました。

;; tgz で固めたのでも置いてくれれば個人的には楽なんですけど、筋違いですね。

713:デフォルトの名無しさん
09/10/11 02:50:45
だよねーアーカイブ作れっての
cvsメンテしてる奴って完全にアホだよね

714:デフォルトの名無しさん
09/10/11 07:00:09
そんなもんアーカイブなんて作る意味が無いわ

715:デフォルトの名無しさん
09/10/12 21:45:55
古い話なのですが、私の環境でも>>223と同じエラーがでて実行することができません。
どのようにすればいいのでしょうか?よろしくお願いします。
使用OSはWindows XPです。

716:デフォルトの名無しさん
09/10/14 23:07:20
>>715
俺んとこでは普通に動いたからなー
逆になんで動かないのかこっちが聞きたいw

717:デフォルトの名無しさん
09/10/16 21:10:09
ためしにデスクトップに解凍したら>>223っぽいエラーがでた。

日本語も空白もないパスのときは普通に起動した。

718:223
09/10/16 23:10:51
>>717
うまく動作したよ。フォルダの問題だったんだ。ありがとう。
かなり速い。
? (time (tak 12 6 0))
(TAK 12 6 0) took 0 milliseconds (0.000 seconds) to run
with 2 available CPU cores.
During that period, 172 milliseconds (0.172 seconds) were spent in user mode
0 milliseconds (0.000 seconds) were spent in system mode
12
?

719:デフォルトの名無しさん
09/10/18 08:51:34
すいません、Windows、emacs23の日本語表示に関する質問です。

処理系はSBCLを使っています。
日本語を扱うため、色々調べた結果.emacsには以下の設定を書きました。

(set-language-environment "Japanese")
(set-terminal-coding-system 'utf-8)
(prefer-coding-system 'utf-8-unix)
(set-keyboard-coding-system 'utf-8)
(set-clipboard-coding-system 'utf-8)
(set-selection-coding-system 'utf-8)
(set-buffer-file-coding-system 'utf-8)
(modify-coding-system-alist 'process""'utf-8)
(setq default-buffer-file-coding-system 'utf-8)
(set-default-coding-systems 'utf-8-dos)
(set-selection-coding-system 'utf-16le-dos)

(setq slime-net-coding-system 'utf-8-unix)

しかし、REPLで日本語を入力すると

decoding error on stream
#<SB-SYS:FD-STREAM for "standard input" {23B57741}>
(:EXTERNAL-FORMAT :SHIFT_JIS):
the octet sequence (130 10) cannot be decoded.

というエラーが出てきてしまって日本語が扱えません。
どなたか解決法を知っている方がいましたら教えて下さい。

720:デフォルトの名無しさん
09/10/18 10:30:46
まず日本語を窓から投g(ry とかできたらどんなに良いかとたまに思うが
新聞の今日の一句を見て思い直す

>>719
slime起動して
sb-impl::*default-external-format* と
sb-alien::*default-c-string-external-format*
の値を調べて、:utf-8じゃなかったら
Emacsのホームフォルダに .sbclrcというファイルを作って
(setf sb-impl::*default-external-format* :utf-8)
(setf sb-alien::*default-c-string-external-format* :utf-8)
と書きこんどく。
直らなかったら次の人頼む

721:デフォルトの名無しさん
09/10/18 11:08:53
>>720
レスありがとうございます。
しかし、そのように設定してもREPLで同様のエラーが出てしまいました。


ちなみに外部のテキストファイルtest.txtに対して

test.txt
----------
(12 23 あ)

以下を実行すると

(with-open-file ( in "test.txt")
(let ((word (read in)))
(format t "~A " word)))


(12 23 \202\240)
このように表示されてしまいます。


722:デフォルトの名無しさん
09/10/18 16:34:53
すごくたくさんエンコーディングを設定しているなぁ。

(prefer-coding-system 'utf-8)

(set-default-coding-systems 'utf-8)

;; slime
(setq inferior-lisp-program "sbcl.exe") ; your Lisp system
(add-to-list 'load-path "~/.emacs.d/slime/") ; your SLIME directory
(require 'slime)
;(slime-setup)
(slime-setup '(slime-repl))
(add-hook 'lisp-mode-hook (lambda ()
(slime-mode t)))
(setq slime-net-coding-system 'utf-8-unix)

自分の設定はこんなだけど、utf-8で問題なく動くよ。

723:720
09/10/19 23:27:45
>>722
それと同じ設定にしてみてもダメでした。
Windowsからだと難しいようですね。
Linuxの環境を整えた後にまた挑戦してみます。

724:デフォルトの名無しさん
09/10/20 07:03:00
>>723
Windowsのインストーラは標準ではUTF-8の環境をインストールしてくれないので
インストール時に項目をチェックしてないのではないかな?

725:デフォルトの名無しさん
09/10/20 20:23:07
commonlispのオープンソースで金融関連のものってありませんか?
QuantLib のようなものを探しているのですが

726:722
09/10/20 20:50:16
>>723
ntemacs-23, sbcl1.0.29で、win xp, vista共に
UTF-8で使えているよ。
何が違うのでしょうね。

727:sage
09/10/25 13:31:35
Gauche-rfbのようなライブラリってCommon lispにありますか?

728:デフォルトの名無しさん
09/10/25 20:28:59
作ればあるよ。

729:デフォルトの名無しさん
09/10/25 22:45:38
Common lisp を勉強しようと思うんですが、「ANSI Common Lisp」か「実践CommonLisp」
どちらが初心者におすすめですか?

730:デフォルトの名無しさん
09/10/25 23:12:49
ANSI Common Lisp

731:デフォルトの名無しさん
09/10/25 23:57:06
実践CommonLisp

732:デフォルトの名無しさん
09/10/26 00:35:32
少ないんだから両方読め

733:デフォルトの名無しさん
09/10/26 08:28:26
ネットの入門サイト+On Lispで学んだ俺はそれを勧めてみる

734:デフォルトの名無しさん
09/10/26 15:37:10
>>729
ANSI Common Lisp の方がいいんじゃね。
古本屋にウインストンの本があったら、それもいいかもね。

735:729
09/10/26 16:28:55
皆さん、ありがとうございます。
両方買いますが、まずは「ANSI Common Lisp」の方で
勉強することにしました。

736:デフォルトの名無しさん
09/10/26 19:09:06
Practical Common Lisp をちょっとだけ読んでみた。
Lisper には当たり前の話なんだろうけど、テスト用の
データも S 式で用意するのね。これは簡単で良いね。

737:デフォルトの名無しさん
09/10/27 01:26:17
ウインストンは。。。 公共図書館で頼んでおけばそこになくても
他の図書館から借りてくれたものを貸してくれるよ。
みれば分かると思うけど、car/cdrを使わずにfirst/restでやってるから
当時のご時世がよくわかると思うよ。グレアムのANSI Common Lispのほうが
いいんじゃないの?

738:デフォルトの名無しさん
09/10/28 22:15:02
ウインストンの本は題材が今のと違って人工知能っぽいものや
数学っぽいものがあるんで、また違う角度からLispが楽しめるんじゃない?

739:デフォルトの名無しさん
09/11/05 22:51:18
う、うん……(´・ω・`)

740:デフォルトの名無しさん
09/11/16 11:58:43
grahamのOn Lispのflattenで(s式に含まれるatomを単純にリストアップする関数)
(flatten '`(,X Y))
を計算させると、
`(,X ,@QUOTE)
となるのですが、どうしてこうなるのか、どう考えればいいかよくわからないので
どなたか教えてください。

なお、flattenは
(defun flatten(x)
(labels((rec(x acc)
(cond((null x)acc)
((atom x)(cons x acc))
(t(rec(car x)(rec(cdr x)acc))))))
(rec x nil)))
です。

741:デフォルトの名無しさん
09/11/16 13:09:17
On Lispそのままのコードは、私もいくつか動かなかった
改良されたmetabangの人の関数がお勧め

742:デフォルトの名無しさん
09/11/16 17:11:31
clbuildで/usr/share/common-lisp
以下に各種アプリを入れる方法ないのでしょうか

743:デフォルトの名無しさん
09/11/16 22:18:22
URLリンク(www.u.dendai.ac.jp)

744:デフォルトの名無しさん
09/11/17 08:50:05
>>740
えーとまず、back quote 式は read 時に、指定された通りのリストを構築する式に展開される。
`(,x y)であれば、たとえば scheme 風に(qq (unquote x) y)といった感じになるかもしれない。
ただし、この展開された式がどのようなものになるかは処理系に依存する。

で、これに'をつけると、その展開された式を quote したことになる。
'`(,x y) なら(quote (qq (unquote x) y)) とかになる。

それが flatten に渡されるわけだから、上記のように展開されていた場合には結果は (qq unquote x y) となる。

と、ここで話が終われば簡単なんだけれど、
repl に表示する式が(この場合での qq のように)back quote 式の展開形であると判断する手掛かりがある場合、
処理系によっては back quote 式に戻して表示しようとする。
しかし flatten の戻り値の場合には当然 back quote 式の展開形としては不適切なものになっているはずなので、
なにやらぶっこわれた back quote 式が表示されることになる。
どうぶっこわれるかは処理系依存。

745:デフォルトの名無しさん
09/11/17 11:52:05
>>741
実はダグホイトのLOL(Let Over Lambda)という本を読んでるんですが、
そこで、flatten関数にback quoteされた式を入れていて、一体どうなってるのか
だんだん分からなくなってしまったところです。
flattenは特別に難しい関数というわけではないので、back quoteの問題なのだと思います。

>>744
詳しい解説ありがとうございます。
私が使ってるlispはsbclなんですが、traceしてみると、途中、よくわからないですが(X '(Y))とかいうのをflattenしているらしく、これだったら(X QUOTE Y)となり、
最後によくわからないSB-IMPL::BACKQ-CONSというアトムをコンスしているようです、、。

試しに
(cons 'SB-IMPL::BACKQ-CONS '(X QUOTE Y))
を計算させると、
`(,X ,@QUOTE)
となります。

LOLの本でdefmacro/g!というマクロはflattenを使っていて、
このマクロにback quoteした式を入れているのですが、
なにかよくわからなくなってしまった、、、。

746:デフォルトの名無しさん
09/11/17 16:06:57
weblocksチュートリアルみると便利ですね
でもチュートリアルのそのままの説明で作ると一部ちゃんと動かないのがありますね
demoみるとちょっと泥臭いこともしているので、
本当に綺麗には書けないってことでいいんでしょうか

747:デフォルトの名無しさん
09/11/17 18:03:16
CLISP 2.42での質問です。
Emacsなどのテキストエディタを使わずに、、saveinitmem、clisp -M を
使いながら、対話形式での開発の使い勝手を試している所です。
関数をコンパイルした後でも、定義内容を確認する方法はあるのでしょうか?

[1]> (defun double(x)(* x 2))
DOUBLE
[2]> #'double
#<FUNCTION DOUBLE (X) (DECLARE (SYSTEM::IN-DEFUN DOUBLE)) (BLOCK DOUBLE (* X 2))>
Break 1 [3]> (compile 'double )
DOUBLE ;
NIL ;
NIL
Break 1 [4]> #'double
#<COMPILED-FUNCTION DOUBLE> <-- 定義内容が判らない

748:デフォルトの名無しさん
09/11/17 22:56:21
>>747
function-lambda-expression

[1]> (defun double (x) (* x 2))
DOUBLE
[2]> #'double
#<FUNCTION DOUBLE (X) (DECLARE (SYSTEM::IN-DEFUN DOUBLE))
  (BLOCK DOUBLE (* X 2))>
[3]> (compile 'double)
DOUBLE ;
NIL ;
NIL
[4]> #'double
#<COMPILED-FUNCTION DOUBLE>
[5]> (function-lambda-expression #'double)
(LAMBDA (X) (* X 2)) ;
T ;
DOUBLE


749:デフォルトの名無しさん
09/11/17 23:38:28
>>748
有り難うございます。
まだまだ判らない事が多いので、On Lispを読了したら、一度体系的なLisp可燃本も読んでみます。

750:デフォルトの名無しさん
09/11/21 08:52:27
>>746
あれ?アパッチアップデートしたら普通に動いた

751:デフォルトの名無しさん
09/11/24 09:50:31
#+ecl
#+gcl
などの処理系ごとに違う処理をさせたい場合の書き方の解説どこかにないでしょうか

752:デフォルトの名無しさん
09/11/24 12:40:11
解説と言われても…
例えば式EをSBCLのみで使いたかったら
#+sbcl
E
と書けばいいし、SBCLでは使いたくなかったら
#-sbcl
E
と書けばいいだけでは。あとは
#+(or sbcl ccl)
とか
#+(and sbcl sb-thread)
なんてことも書ける。
ある処理系が#+の後に書いて受け付けるキーワードは、
変数 *features* をみればわかる。

そのくらいしか解説することないんだけど。

753:デフォルトの名無しさん
09/11/24 12:57:35
ありがとうございます
つまり、
#+foo
次の1つのリストだけが意味があるということなんですね



754:デフォルトの名無しさん
09/11/24 17:23:57
引数のlistの要素が同じかどうか調べる関数set-equalをsubsetpを使って書きました。
(defun set-equal (lx ly &rest lzs)
 "Test equality of list as set."
 ;; !!TODO!! need keywords :test :test-not and :key
 (let((r(and(subsetp lx ly)(subsetp ly lx))))
  (cond((null lzs)r)
   (r(set-equal lx (car lzs) (cdr lzs)))
   (t nil) )))
この関数に:test :test-not :keyといったsubsetpに渡すキーワードを引数として渡せるようにしてやりたいと思っています。
単純に引数に書いてやればよいのですが、その場合にはsubsetpのキーワードのデフォルト値を調べ、
さらにtest test-notが排他になるようなコードを書いてやらなければならず、面倒くさいです。

簡単に書く方法は無いのでしょうか。

755:デフォルトの名無しさん
09/11/24 18:17:09
>>754
&rest でキーワードを受け取って subsetp に apply すればいいんじゃね
そうすると &rest で lzs を取ることができなくなるけど、
union とかと同じインタフェースになるだけだから悪くはないと思う
(defun set-equal (xs ys &rest keys)
(and (apply #'subsetp xs ys keys)
(apply #'subsetp ys xs keys)))


756:デフォルトの名無しさん
09/11/25 00:54:50
>>751
HyperSpec最高。

URLリンク(www.lispworks.com)

757:デフォルトの名無しさん
09/11/27 19:18:43
>>1
>lispを使用してC#やJAVAの代替にするための方法(おまけ)

ってどこに解説があるんですか?

758:デフォルトの名無しさん
09/11/27 21:12:21
>>757
abcl使いがいれば そんなのがもっと増えるだろうが、国内にabcl使いはおらん。

759:デフォルトの名無しさん
09/11/28 03:25:11
;; (foo) が nil を返す場合エラーになるんだね
;; (consp nil) => nil だから
(destructuring-bind (x . y) (foo)
  (cons x y))

ごめん、それだけ

760:デフォルトの名無しさん
09/12/07 13:43:22
多重バッククオートについてなんですが、内側のバッククオートが
さきに計算されなければならないのではないのでしょうか?
例えば、
 ``(,z)
はzに値がセットされていなければunboundエラーになるはずではありませんか?
しかし、sbclでは
 `(,z)
となるのです、、。

761:デフォルトの名無しさん
09/12/07 17:06:54
>>760
quasiquote/unquoteのネストは内側から`と,の組み合わせを作っていき、できた組み合わせを
外側から展開していくことになるのだ。On Lispの16章にあるマクロを定義するマクロの例を
見るとよいだろう。

762:760
09/12/08 23:00:32
>>761
レスありがとう。
でも、理解できるまで時間がかかりそう、、。

763:デフォルトの名無しさん
09/12/09 07:43:59
sbcl, cmucl, clispで外部コマンド(ls, whichとか)を使うには、どうすればいいんでしょうか?
ググり方でも教えてください。英語資料でもいいです。よろしくお願いします。

764:デフォルトの名無しさん
09/12/09 08:22:00
ディレクトリ・ファイル操作はosicatで結構できるな。
使ったことないけどshelispというものもあるらしい。
sbclならsb-ext:run-program、cmuclならextensions:run-program で
外部コマンドが実行できる。こんな感じかな。
(with-output-to-string (so)
 (sb-ext:run-program "/bin/bash" (list "-c" "which cal") :input nil :output so)
 so)
英語で素直に common lisp external command などとググれば
色々出てくるぞ。

765:デフォルトの名無しさん
09/12/09 11:44:38
>>764
サンクス、ちょっとやってみます。

djbのpublicfile、動かなねえ。

766:デフォルトの名無しさん
09/12/10 00:29:27
複数の実装から使うものを書くなら trivial shell を試してみるといいかもしれん。
URLリンク(common-lisp.net)

767:デフォルトの名無しさん
09/12/11 23:22:10
Cuspがインストールできないんだけど
SBCLのバージョンが関係あるのか?

ってCuspって2007年で開発がとまってんだね

768:デフォルトの名無しさん
09/12/12 00:58:07
テンプレの情報が古くなってるので報告。
Clozure CLは日本語もきちんと使えるようになってる。
対応エンコードは、CP932、EUC-JP、Unicode系全般。ISO-2022-JP未対応。
内部コードはUTF-32。単純さと速度の関係で決めたそうな。

それと、対応OSも、Windows、Solaris/x86が増えた。
全部の環境で64-bit対応済。Windowsでもスレッドが使える。

WindowsやMac OSユーザは、使ってみるのもいいかも。

769:デフォルトの名無しさん
09/12/12 01:02:44
Clozure CL はフットプリントが小さいのが良いよね。

770:デフォルトの名無しさん
09/12/12 01:09:28
SBCLってそんなに重量級なの?

771:デフォルトの名無しさん
09/12/12 05:51:17
>>770
coreイメージがでかいんだよね
cclってプロセス起動でどれくらいだかしらないけどそんなに軽い?

;;;clispは軽いんだけど処理が重いorz


772:デフォルトの名無しさん
09/12/12 10:45:42
Windows版32-bitのCCLで、デフォルトのイメージが15.2MB、
カーネルが1.64MBだから、そこまで小さいわけじゃないと思う。

ECLがUnicodeをもっとちゃんとサポートしてくれれば、
SBCLとかとCLISPの中間くらいで、良い感じになると思うんだけどなー。

内部でUTF-32使ってるっぽいのに、I/Oではバイト単位でぶった切るとか、
エンディアンとかどうするんだ。external formatもサポートしてないし。
みたいなことを、ECLのマニュアル読んでて思った。

773:デフォルトの名無しさん
09/12/12 18:49:40
WindowsのCLISPでASDF-Installが動いたので報告。
port.lispで定義されているreturn-output-from-programに問題がある。

* formatの括弧が閉じてない
* 環境によるのかもしれないが、:waitがnilだと上手く機能しない

formatの括弧の閉じ忘れは、開発者が「直すぜ」と言いつつ放置中。

これで、tarの所で止まってたのが、動くようになるはず。
ちなみに、パスに空白が入ってると正常に動作しないのはお約束。
使いたいなら、cygpathとtarにパスを渡すところで「'」とかで囲んでやる。


774:デフォルトの名無しさん
09/12/15 18:37:36
Clozure CL /win で日本語は扱えますか?
エディタをUTF-8にして (setq a '日本語) にすると文字化けします。
? (setq a '日本語)
|ニ律ニ悽ネェ桍

775:デフォルトの名無しさん
09/12/15 19:57:43
>>773
サンクス。windowsでsbclだと上手くいくのにclispだと上手くいかなくて
困ってたんだ。試してみる。

776:デフォルトの名無しさん
09/12/15 23:38:45
>>774
扱えるよー。というか、扱ってるよー。
ただ、-Kオプションを指定しないと、標準のISO-8859-1で出力されるよ。

URLリンク(ccl.clozure.com)
URLリンク(ccl.clozure.com)

を参照のこと。EmacsでSLIME使うと設定が減って楽だよ。
良く分からないなら、

(setf ccl:*default-external-format* :utf-8)
(setf ccl:*default-file-character-encoding* :utf-8)
(setf ccl:*default-socket-character-encoding* :utf-8)

を、ccl-init.lispに書くて、いつも-K utf-8すると、デフォルトがUTF-8になるよ。
他のエンコードのファイル使いたいときは、:external-format使ってね。

URLリンク(www.lispworks.com)

777:デフォルトの名無しさん
09/12/15 23:44:51
>>775
何かの役に立てば幸い。

ついでに言うと、Drakmaを使いたい場合、
TCP_NODELAYを切り替える機能がCLISPにないので、
usocketがエラーを出す。CMUCLもお仲間のようで、

URLリンク(article.gmane.org)

という報告があるので、:nodelay tのところを削るか、#-:clispすると吉。

778:デフォルトの名無しさん
09/12/16 01:10:40
ついでに、WindowsでClozure CLを使う場合、
1.4の現時点で付属のASDF-Installにはバグがあって、そのままだと上手く動かない。
ccl\tools\asdf-install\*.wx32fslを削除してから、

(push :win32 *features*)
(asdf:operate 'asdf:compile-op :asdf-install)

をして、ASDF-Installを再コンパイルしてから、.asdf-installに

#+(and :ccl :windows)
(in-package :asdf-install)
#+(and :ccl :windows)
(progn
;; 自分の環境に合わせて設定する
(setf *cygwin-bash-program* "c:/Cygwin/bin/bash.exe")
(export '*cygwin-bash-program*)
(in-package :asdf-install-customize))

とすれば、正常に動作するようになる。

779:デフォルトの名無しさん
09/12/16 18:40:00
>>776

-K オプションを追加したらutf-8で漢字も処理できました。

ありがとう。

780:デフォルトの名無しさん
09/12/19 03:24:27
サンデープログラマです。現在のLinux環境はUbuntuでsbcl+slimeを使っています。
珠玉のプログラミングを読んでいて、いろいろと考えさせられることが多かったです。
日本語を扱う際、UTF8はEUCの1.5倍のデータ量を使うようですが、大量の文字データ処理を扱うことも視野に入れているのであれば、
文字コードはEUCとUTF8をどちらを使ったほうがいいのでしょうか?

781:デフォルトの名無しさん
09/12/19 08:12:08
好きにすれば?
あと内部と外部で同じものを使うのか?

782:デフォルトの名無しさん
09/12/19 08:46:38
emacs23の内部コードがutfらしいけど
他もそれにあわせるといいことあるのかな

783:デフォルトの名無しさん
09/12/19 09:18:32
内部コードを気にする必要があるプログラミングって、
プラグインとかぐらいと思うが。

784:デフォルトの名無しさん
09/12/19 10:04:04
>>780 本当に大量データの場合はCと同じくバイト列として扱うよ。

785:デフォルトの名無しさん
09/12/19 10:14:14
>>783
処理系の内部コードのこと言ってるの?
それ以外にもプログラム上の内部コードってあるよね?

HTTPサーバ/クライアントみたいに、
受けてからデータの文字コードが分かるケースあるから、
byte arrayで受けて~ってことは日常茶飯事かと。

786:デフォルトの名無しさん
09/12/19 13:48:49
日曜プログラマなら富豪的プログラミングしても誰も文句いわないよ。

787:デフォルトの名無しさん
09/12/19 23:05:00
正直、もうUTF-8以外の世話をしたくない。

788:デフォルトの名無しさん
09/12/19 23:17:50
激しく同意。
いろいろ問題はあってもみんなでUTF-8使ってれば解決策は出てくるよ。
場当たり的に符号を変えるよりはUTF-8で統一するのが一番マシ。

789:デフォルトの名無しさん
09/12/19 23:20:29
じゃぁ俺はまだまだ EUC-JP で行くから、頑張って沢山解決策を出しておいてね。

790:デフォルトの名無しさん
09/12/19 23:22:37
えっ・・・・

791:デフォルトの名無しさん
09/12/20 00:29:19
>>788
何文字目ってのがUTF8だとアタマから数えないといけないのでそういう状況が多いときは困る
なので内部UCS4とかがわりと好きかな。


792:デフォルトの名無しさん
09/12/20 01:27:20
UCS4 を使うという事は Unicode の正規化とか合字は考えないという事だよね。
俺もそっちの方が好き。

793:デフォルトの名無しさん
09/12/20 02:31:18
いろいろ諦めたら楽なのは当たり前のこと

794:デフォルトの名無しさん
09/12/20 02:42:08
諦めても困らない物は捨てた方が楽だね

795:デフォルトの名無しさん
09/12/20 15:14:57
URLリンク(sbcl10.sbcl.org)

ぽーたぶるヘムロックちゃん、TTY で動く様になったのね。
知らんかった…

しかも Qt バックエンドもいつの間にか出来てる……

URLリンク(gitorious.org)

796:デフォルトの名無しさん
09/12/21 23:02:27
(lambda(x)t)とか
(handler-case
...
(:no-error(condition) ....))
といった場合に変数が使われていないというエラーを抑制したいのですが
どうしたらよいのでしょうか

797:デフォルトの名無しさん
09/12/22 00:51:34
(lambda(x) (declare (ignore x))t)
(handler-case
...
(:no-error(condition)(declare (ignore condition)) ....))

798:796
09/12/22 01:20:38
>797
ありがとうございます
うまく行きました

799:デフォルトの名無しさん
09/12/22 17:04:42
昔、2chのdatを整理するプログラムをcommon lispで書いたけど
アスキーアートの頻出するスレで止まりまくりだった
今はだいぶましになったのだろうか

800:デフォルトの名無しさん
09/12/22 17:10:09
プログラムが変わってないんなら一緒でしょ

全角スペース+半角スペース
あるいはその逆が含まれているレスはAAと見てスルー
それが楽になれる

801:デフォルトの名無しさん
09/12/24 11:56:39
文字列をシンボル(というか変数名とか関数名)として評価するにはどうすればいいのでしょう。
(setq x 10)
(setq y "x")とやって、
(うんにゃら y)
とかすると10って出てほしいのですが。



802:デフォルトの名無しさん
09/12/24 12:24:37
(symbol-value (read (make-string-input-stream "x")))
関数ならsymbol-valueをsymbol-functionにすればいい。

使い方によるけど、文字列から変数の中身を直接触れちゃうと安全じゃない気がするから、
直接symbol-valueを見ないでhash-tableなりalistなりを使った方がいい気がする。

803:801
09/12/24 12:31:34
できました。ありがとうございます。


804:デフォルトの名無しさん
09/12/29 17:29:33
intern

805:デフォルトの名無しさん
09/12/30 17:14:47
explode

806:デフォルトの名無しさん
10/01/01 17:31:29
あけましておめでとうございます。

リストではなく多値を利用した方がいいのはどんな時ですか?

807:デフォルトの名無しさん
10/01/01 19:41:46
Schemeだけど参考になると思う
URLリンク(practical-scheme.net)

808:デフォルトの名無しさん
10/01/03 01:09:35
なるほど、ありがとうございます

809:デフォルトの名無しさん
10/01/03 20:47:59
clsqlで、変数に保存されているテーブル名から、select関数でselectする方法はありますか?

たとえば変数tablenameに"menberlist"というテーブル名が保存されていても、
(select * from tablename)とするとtablenameというテーブルからselectすると解釈されますよね?
queryはインジェクションが怖いので使わない方向で…

810:質問
10/01/04 15:36:21
(lambda (x) (> 5 x))
をこれ以上簡単にする方法は無いでしょうか?

811:デフォルトの名無しさん
10/01/04 18:58:30
質問の意味がよーわからんけど
(defun pa$ (f &rest c)
#'(lambda (&rest x) (apply f (append c x))))
とか作って
(funcall (pa$ #'> 5) 10)
ってやるとか?

812:質問
10/01/04 19:14:26
>>811
余計に複雑です

813:デフォルトの名無しさん
10/01/04 19:47:21
それ以上の回答が欲しかったら、他人に十分理解可能な形に質問し直さないとな。

814:質問
10/01/04 21:15:08
解決しました

815:デフォルトの名無しさん
10/01/04 22:20:41
よく解らんけど解決方法をここに書いとくと後の人のために役に立つんじゃまいか

816:デフォルトの名無しさん
10/01/06 15:25:23
C言語のgetch()をつかった簡単なリアルタイムキースキャンを
したいのですが方法はあるのでしょうか?

817:デフォルトの名無しさん
10/01/07 05:00:46
getchをffiするくらいならcl-sdlじゃだめなん


818:質問
10/01/07 10:22:50
継続を使わずに高速なコルーチンを実装する方法ってありますかね?

819:デフォルトの名無しさん
10/01/07 13:30:26
ubuntuでaptでcl-fooインストールすると
/usr/share/common-lisp
にインストールされるけど

asdf

clbuid

それぞれ違う方法でインストールするファイルを
別な場所に置くならどこが推奨ですか?

820:デフォルトの名無しさん
10/01/07 13:32:13
FreeBSD-8.0-RELEASEでSLIME 2009-08-08の上でSBCL 1.0.30を使っています。
sb-ext:run-programでsbclを起動して子プロセスにlispコードを流して制御したいと考え、
まず、
(setf sbcl1 (run-program "sbcl" '() :input t :output t))
(setf sbcl1 (run-program "sbcl" '() :input :stream :output t))
(setf sbcl1 (run-program "sbcl" '("--help") :output *standard-output*))
echo '(loop(print "hello")(sleep 1)' > /tmp/hello.lisp
(setf sbcl1 (run-program "sbcl" '("--script" "/tmp/hello.lisp") :output *standard-output*))
等としてみたのですが、すぐに#<SB-IMPL::PROCESS :EXITED 1>が帰ってきてしまい、
helpメッセージやhello.lispの出力も得られません。
どうしたらsbclからsbclをインタラクティブに操作することが出来るでしょうか。

821:820
10/01/07 18:30:35
ありがとうございます
少し調べたところ、どうやらプログラムをフルパスで指定しなければならないとわかり、
(setf sbcl1 (run-program "/usr/local/bin/sbcl" '("--help") :output t))
などとするとうまく行きました。ただ、Slime上で実行したのではcoreが見つからないらしく、
(setf sbcl1 (run-program "/usr/local/bin/sbcl" '("--core" "/usr/local/lib/sbcl/sbcl.core" "--script" "/tmp/hello.lisp") :output t))
としなければなりませんでした。M-x run-lispではcoreの指定をせずともよいので、Slimeがなにかしているんでしょうか。
また、このループするプロセスを終了させようと
(process-kill sbcl1 15)
としてみたのですが、Tは帰ってくるものの"hello"は出力され続け、他のターミナルからpsでプロセスを見ても子プロセスは生きたままになっているようです。
どうしたらプロセスを殺せるのでしょうか。また、子プロセスのI/Oを操作したいと思い、
(setf sbcl (run-program "/usr/local/bin/sbcl" nil :input :stream :output :stream))
としてみたのですが、Slimeでもrun-lispでもターミナルでもプロンプトが戻ってきません。
なにが問題なんでしょうか。

822:デフォルトの名無しさん
10/01/07 22:25:42
>getchをffiするくらいならcl-sdlじゃだめなん

具体的にはどうやればいいのでしょうか。
ちなみにWin 、メモ帳、clisp、コマンドプロンプトでやってます。


823:デフォルトの名無しさん
10/01/09 06:20:39
>>822
URLリンク(lispuser.net)
これ参考にならんかな?
でもwindowsだとconsoleアプリじゃないとgetchできないかも


824:820
10/01/11 20:28:53
ありがとうございます。
どうやらプロンプトが戻ってこないのは、run-programの時に:waitがデフォルトでtになっているのが原因のようで、
(setf sbcl
(run-program "sbcl"
'("--core" "/usr/local/lib/sbcl/sbcl.core"
"--noinform" )
:search t :wait nil
:input :stream :output :stream ))
としたら上手くいきました。

ただこのままだと(read-char-no-hang (process-output sbcl))などとしたときにプロンプトも戻ってきてしまいます。
sbclの--noprintオプションを使うと出力を制御できるのですが、今度は何も出力されなくなってしまいます。
プロンプトの文字を変えるにはどうしたら良いんでしょうか。

825:デフォルトの名無しさん
10/01/11 21:16:50
>>824
何がありがとうございますなのか知らないが、
質問の仕方がどれも信じられないくらい下手だな。
メモ帳代わりに使ってるなら知らんけど。

他の人は君が知ってる前提を一切知らないんだから、
そこをはしょったら、当然だけど、話通じんぞ。
自分の文章、回答者の立場でもう一度読んでみなよ。

826:デフォルトの名無しさん
10/01/17 18:50:31
slime上で、Lispbuilder-sdlのサンプルを動かそうとしたのですが、
sdlの初期化の段階で
「Lisp connection closed unexpectedly: connection broken by remote peer」
とメッセージが返されてslimeとの接続が切れてしまいます。

Lispbuilder-sdlは、slime上では動かせないのでしょうか?

環境は、 OSX 10.6 + CarbonEmacs(2009-07-26) + slime (svn20100117)
+ sbcl(1.0.32) です。
Lispbuilder-sdlライブラリは、clbuildで今日インストールしたものです。

行おうとした操作は下記です。
--------------------------------------------
(asdf:operate 'asdf:load-op :cocoahelper) <--ここで「Lisp connection...」
が出てslimeとの接続が切れる
;; そのため↓を実行できない
(asdf:operate 'asdf:load-op :lispbuilder-sdl-examples)
(sdl-examples:BEZIER)
--------------------------------------------

上記の操作は、ターミナル上で ./clbuild lispして
実行すればきちんと動作します。

827:デフォルトの名無しさん
10/01/17 20:16:13
>>826
*inferior-lisp*バッファには何か表示されてない?

あるいは、Common Lisp側のバックエンドを手動で起動して、
Emacsからはそれに接続するようにしてみたら、
エラーメッセージとか拾えるんじゃないかと思うんだけど、どうだろう?

URLリンク(common-lisp.net)

この辺参考に。

828:デフォルトの名無しさん
10/01/17 20:22:01
追加。*slime-events*バッファも参考になるかも。
SLIMEの通信ログが出力されてるから。

829:デフォルトの名無しさん
10/01/17 21:32:46
>>827

> *inferior-lisp*バッファには何か表示されてない?

「Process inferior-lisp trace/BPT trap」
と表示されていました。

> あるいは、Common Lisp側のバックエンドを手動で起動して、
> Emacsからはそれに接続するようにしてみたら、
> エラーメッセージとか拾えるんじゃないかと思うんだけど、どうだろう?

下記のようにして
$ ./clbuild lisp
* (load "/path/to/swank-loader.lisp")
* (funcall (read-from-string "swank-loader:init"))
* (funcall (read-from-string "swank:start-server") "/var/folders/B8/B8zxQQFbGsWSqD-hxDT5pk+++TI/-Tmp-/slime.17139" :coding-system "utf-8-unix")
バックエンド起動してから、
Emacsから、slime-connectで接続して
* (asdf:operate 'asdf:load-op :cocoahelper)
を実行したところ、バックエンド側に
* ./clbuild: line 415: 17419 Trace/BPT trap ${lisp} $common_options $eval "$require_asdf" $eval "$set_central_registry" $eval "$EXTRA_CLIM_FEATURES" "$@"
と表示がされていました。

これどんなエラーなのでしょうか?

830:デフォルトの名無しさん
10/01/17 22:13:18
>>829
SLIMEでのasdf:*central-registry*の値と、
clbuildでインストールされているライブラリの場所は?

どんなエラーなのかは、Mac OS X持ってないから分からない。
でも、全く同じ症状訴えてる人いるみたいだね。

831:デフォルトの名無しさん
10/01/17 22:33:53
あー、もしかしてこれ?

URLリンク(code.google.com)

832:デフォルトの名無しさん
10/01/17 22:38:07
>>830

> SLIMEでのasdf:*central-registry*の値と、

CL-USER> asdf:*central-registry*
((MERGE-PATHNAMES "links/docs/0114/clbuild/systems/" (USER-HOMEDIR-PATHNAME))
(MERGE-PATHNAMES ".sbcl/systems/" (USER-HOMEDIR-PATHNAME))
(LET ((ASDF::HOME (POSIX-GETENV "SBCL_HOME")))
(WHEN (AND ASDF::HOME (NOT (STRING= ASDF::HOME "")))
(MERGE-PATHNAMES "site-systems/" (TRUENAME ASDF::HOME))))
*DEFAULT-PATHNAME-DEFAULTS*)

> clbuildでインストールされているライブラリの場所は?
~/links/docs/0114/clbuild/systems
にasdファイルを置いています。


833:デフォルトの名無しさん
10/01/17 22:42:35
>>831
ありがとう、でも
問題切り分けのため、lispbuilder-sdlのみ
インストールしている状態なので、
lispbuilder-sdl-gfx関連は関係ないです。

834:デフォルトの名無しさん
10/01/17 22:54:12
>>832
Terminalからだと成功するんだよね?

それぞれの環境変数LD_LIBRARY_PATHの値は?

835:デフォルトの名無しさん
10/01/18 00:20:00
>>834
> >>832
> Terminalからだと成功するんだよね?
はいそうです。

> それぞれの環境変数LD_LIBRARY_PATHの値は?
emacs上でもtermain上でも
LD_LIBRARY_PATHは定義されていません。

原因がある程度絞れました。
sdlにCFFIを使ってアクセスしているようなのですが、
emacsで
(cffi:load-foreign-library "/Library/Frameworks/SDL.framework/SDL")
を実行すると、*Messages*に「Process inferior-lisp trace/BPT trap」が
表示され接続が切断されることが分かりました。
terminal上では、きちんと
(cffi:load-foreign-library "/Library/Frameworks/SDL.framework/SDL")
#<CFFI:FOREIGN-LIBRARY {1003717241}>
となります。

おそらく、
(asdf:operate 'asdf:load-op :cocoahelper)
を実行中にcffi関連が呼ばれて、切断がされてしまうみたいです。


836:デフォルトの名無しさん
10/01/18 00:37:53
やはり、cffiが悪いみたいでした。
cocoahelperを読み込む時に、依存関係でcffiを
読み込むのですが、その際に
(cffi:use-foreign-library sdl)
が呼ばれて、slimeと切断されてしまうようです。


lispbuilder-sdl/cffi/library.lisp
-----------------------------------
(cffi:define-foreign-library sdl
(:darwin (:or (:framework "SDL")
(:default "libSDL")))
(:windows "SDL.dll")
(:unix (:or "libSDL-1.2.so.0.7.2"
"libSDL-1.2.so.0"
"libSDL-1.2.so"
"libSDL.so"
"libSDL")))

(defun load-sdl-library ()
(cffi:use-foreign-library sdl) <--ここで死ぬ

(when (handler-case (cffi:use-foreign-library sdl-glue)
(load-foreign-library-error () nil))
(progn
(setf *glue-loaded-p* t)
(pushnew :lispbuilder-sdl-audio *features*))))

(eval-when (:load-toplevel :execute)
(load-sdl-library))
-----------------------------------

837:デフォルトの名無しさん
10/01/18 02:29:30
新しいcoreつくってslime経由ではそっち使ってみるとかじゃだめなん?

838:デフォルトの名無しさん
10/01/19 13:15:27
cffiといえばmaximaからcffi呼ぼうとして苦労して結局できなかったな

839:デフォルトの名無しさん
10/02/02 00:27:18
iPhnoeとか、他のケータイでなんか遊べないんかな?
活用術みたいなのってない?

840:デフォルトの名無しさん
10/02/02 09:39:12
誤爆した

841:839
10/02/02 11:17:04
なんか活用術ないかな

842:デフォルトの名無しさん
10/02/02 18:11:30
Objective Lisp

843:デフォルトの名無しさん
10/02/03 01:26:43
Nu

URLリンク(programming.nu)

844:デフォルトの名無しさん
10/02/03 18:01:14
#+sbcl
があるなら

#+amd64

#+i386

なんてもあるのかな
動いてるシステムが64bitか判定したいんだけど

845:デフォルトの名無しさん
10/02/03 18:24:38
自己レス
+64bit
だった

846:デフォルトの名無しさん
10/02/03 18:34:02
>>844
*features*にそのキーワードが含まれているかどうかで判別するから、
見てみるといいよ。値は一部除いて実装依存だけど。
CCLなら、:x8632-targetとか:32-bit-hostとかそういうのが含まれてる。

URLリンク(www.lispworks.com)

847:デフォルトの名無しさん
10/02/03 18:53:25
64bit linuxのsbclで
(require :cffi)
としたらエラーでまくる
clispはエラーなく動く

848:デフォルトの名無しさん
10/02/03 19:08:20
>>847
その出てるエラー書かんと。

SBCLは一番メジャーな処理系なんだから、
それでエラーが出るのは考えにくい。
あるいは、そういう状況なら各所で報告が絶対ある。

849:デフォルトの名無しさん
10/02/03 19:44:30
>>848
パッケージよみこむときに
ロック解除しますか
にYesじゃなくて
Accept
押してただけでした
すみません

850:デフォルトの名無しさん
10/02/12 14:01:31
リーダーマクロについて真面目に学んでみたいのですが
なにか良いマニュアルとかありませんか?

851:デフォルトの名無しさん
10/02/12 15:31:04
>>850
CLtL2

852:デフォルトの名無しさん
10/02/13 00:15:03
>>850
CLHS

853:デフォルトの名無しさん
10/02/14 03:49:04
sbclのインタプリタで矢印キーを使いたいのですが「^[[C 」等の文字列が出てしまいます。
また、Lisp用に別のインタプリタは存在しないのでしょうか?(pythonのipythonのようなものです)
OSはubuntuを使っています。よろしくおねがいします。

854:デフォルトの名無しさん
10/02/14 04:07:17
>>853
素のターミナルから入力してんの?
どうせエディタのサポート無しでまともなものは書けないから emacs か vi 入れることをオススメする。

855:デフォルトの名無しさん
10/02/14 05:12:51
rlwrapを使え
Ubuntuならaptでおk

SLIMEもaptでいけるからEmacsわかればそっちのほうがいい

856:デフォルトの名無しさん
10/02/14 05:28:11
>>853
矢印キーを何に使うの?
履歴辿りたいだけなら、rlwrap使えばいいみたいよ。

IPythonみたいな環境が良ければ、Emacsをインストールして、
SLIMEを使えば良い。インタラクティブ開発の本家の実力を体感できる。

857:デフォルトの名無しさん
10/02/17 09:48:27
まあ、SLIMEが強力すぎて他の環境を試す気にもなれないんだけど、初めて
の人にEmacsはやっぱりきついのかもね。PLT-Scheme (Dr. Scheme)みた
いな環境がCommon-Lispにもあるととっつきやすいのかも知れないけど。
LispWorksやAllegro CLはよくできてるけどお高いし。
MacだとMCLIDEというのがあるんだけど、まだ発展途上なので今後に期待。
URLリンク(mclide.in-progress.com)


858:デフォルトの名無しさん
10/02/17 12:01:22
windows上のcclでexeを吐かせるにはどうすればいいですか?

859:デフォルトの名無しさん
10/02/17 13:31:45
自分もEmacsユーザだからSLIME使ってるけど
他に良い環境無いの?
人に勧めにくいなあ

860:デフォルトの名無しさん
10/02/17 21:28:29
>>857
Allegroは買えない値段じゃないんだけど、小売りしてないんだよ
個人購入する品物じゃ無いの承知の上で言うけどものすごく不便
なんで購入の意思をメールで送るところからせにゃならんのだ!

ちなみにLispWorksはよくできてるけどIDEから日本語入れると悲惨なので却下
emacs+slimeするって前提なら別なんだろうけど、それじゃ金出す意味がない


861:デフォルトの名無しさん
10/02/18 00:37:24
>>858
ccl:save-applicationを使う。

URLリンク(ccl.clozure.com)

save-applicationはLispシステムの状態をファイルに保存する関数。
このファイルに、Lispのコア部分を含めると、実行可能なバイナリができる。

(save-application "a.exe" :prepend-kernel t)

ただ、これだとエントリポイントがREPLで、大抵は不都合なので、

(defun main () (format t "Hello, world!"))
(save-application "a.exe" :prepend-kernel t :toplevel-function #'main)

みたいに、自分でエントリポイントを作って指定する。

862:デフォルトの名無しさん
10/02/18 00:50:40
ちなみに、一般的に、Lispシステムの状態を「イメージ」、
Lispのコア部分のことを「カーネル」というから、覚えとくといいよ。

実行可能なバイナリを作るとき以外でも、
例えば、大量のライブラリの読み込みが必要な場合、
読み込んだ状態をイメージとして保存しておけば、
起動時間を短縮できたりして、上手く使えば重宝するよ。

863:デフォルトの名無しさん
10/02/18 01:23:50
>>861
ありがとうございます

さすがLispスレの人は親切ですね

864:デフォルトの名無しさん
10/02/18 13:53:26
質問です

windows上のclispにasdf、asdf-installをインストールするまではできたのですが、
ためしに(asdf-install:install 'cffi)を実行してみたところ

WARNING: Cannot find tar command "C:\\PROGRA~1\\Cygwin\\bin\\bash.exe".

というメッセージが出て続けることができませんでした。
cygwinをインストールしてgpgとtarは用意してあり、windowsの環境変数のPATHに登録済みです。

865:デフォルトの名無しさん
10/02/18 14:10:55

質問は?

866:デフォルトの名無しさん
10/02/18 17:52:06
どうすればWindows上のClispのasdf-installでライブラリをインストールすることができますか?

867:デフォルトの名無しさん
10/02/18 19:19:29
>>864
bash が tar を見付けられんのだろ。

868:デフォルトの名無しさん
10/02/18 20:16:02
>>864
仮想マシンのubuntuでやれよ。
cygwinは相当やる気ないとできないと思うぞ。

Ubuntuの入手 | Ubuntu Japanese Team
URLリンク(www.ubuntulinux.jp)


869:デフォルトの名無しさん
10/02/18 22:50:12
set MSYS=

870:デフォルトの名無しさん
10/02/19 00:41:47
俺が>>773に、Windows上のCLISPで、
ASDF-Install使う方法書いてるのはスルーか。

871:デフォルトの名無しさん
10/02/19 00:54:12
でも、実際問題、Windowsでのこういう問題って至る所にあるから、
ある程度以上のスペックのマシン使ってるなら、>>868の言うように、
VirtualBoxとかcoLinuxとかで仮想環境用意するのは良い案だよ。
ファイルのやり取りは共有かネットワーク使えばいいわけだし。

872:デフォルトの名無しさん
10/02/19 01:48:27
windowsの問題?
違うでしょ、プログラマの問題。

873:デフォルトの名無しさん
10/02/19 06:13:36
sbcl + slime on Ubuntu なんだけど、ライブラリの(複数の)パスの通し方ってどうするんだっけ?
/usr/lib/foo/
/home/taro/usr/lib/bar/


874:デフォルトの名無しさん
10/02/19 09:08:17
>>872
「Windowsでの問題」とあるのを「Windowsの問題」とか読まれても。

>>873
ASDFならasdf:*central-registry*。

requireの場合は、SBCLだと何かあるのかな?
公式のドキュメントにはそういった記述を見付けられなかった。
CLISPならcustom:*load-paths*、CCLならccl:*module-search-path*
とかあるみたいだけど。

875:デフォルトの名無しさん
10/02/20 00:00:40
>>874
レス、ありがとうございます。

876:デフォルトの名無しさん
10/02/26 19:55:57
復刊するみたいですが、この本ってどうですか?絶版前の読んだ
ことある人いる?

「初めての人のためのLISP[増補改訂版]」
竹内 郁雄 (著)
URLリンク(bit.ly)

877:デフォルトの名無しさん
10/02/26 20:14:13
読んだよ。
Lispエッセー集だと思っていればいい。
技術書としての価値を求めるタイプの本じゃない。
昔のLispの事情はいろいろ学べるけれども。

878:デフォルトの名無しさん
10/02/26 20:15:53
ちなみに雑誌「bit」に連載していた
TAO/ELISの記事の方が、技術色は強い。

まあCommon Lispの良書は今やたくさんあるから、
そういうのを読んでから、暇な時の読書として読む本。

879:デフォルトの名無しさん
10/02/26 20:20:23
>>877>>878

あー、そういう感じなら、とりあえずはもういらないなw

THX

880:デフォルトの名無しさん
10/02/26 21:01:02
>>878
Common Lispの良書を2~3冊教えてください。


881:デフォルトの名無しさん
10/02/27 00:08:54
本自体がAmazonでもわかるぐらいしかないかもしれない

882:デフォルトの名無しさん
10/02/27 00:18:15
>880
>4-6

883:デフォルトの名無しさん
10/02/27 04:52:03
>>880
LOL,CLTL2,Practical Common Lisp
あとグレアム御大の書いたやつ


884:デフォルトの名無しさん
10/02/27 11:04:14
>>880
CLtL2とかOn LispとかPCLはオンラインで読めるから良いよ。

885:デフォルトの名無しさん
10/02/27 12:43:54
URLリンク(www.lisperati.com)


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