[表示 : 全て 最新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)


411 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 01:28:03.92 ]
>>407
もしかしてClojureスレで聞いた本人か?
もしそうなら回線切って以下略だわ


412 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 01:46:30.46 ]
RacketやClojureなら
どちらも不変データと関数型らしいが、
どちらもさらっとしかしらない立場からすると、
独学で初学のひとには日本語の資料やちょっとしたツールがすぐよよういできるClojureかなと思うよ。
例えば、compojureやnoirでWebやってみるとか、leiningen使ったりしてローカルで試したり、
VPSやクラウド環境にリリースするのも出来るし楽だし、
javaを意識しなくて出来るし、
DBも一応何とかなる。

413 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 02:28:32.13 ]
>>412
DBはClojureqlがオススメ


414 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 03:26:09.06 ]
何でLisp Schemeスレでやらないでここでやるんだよw


415 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 06:41:33.57 ]
>>410
各ディストリでそんなに環境依存ってあるもんなんですか?
>>395のリンクでもありますがCで触れるのは最後にチューニングできるのは強みのような気もするんですが。
Richちゃんのいつごろ書いた記事?
>>411
朝、起きて気づいた。こっちの方が書き込み多いのは驚いた。Clojureスレのヤツはウンコだな。
>>412
それならGaucheで良くね?
CLならsbcl, clisp。個人の日本語解説サイトもあるから日本語資料には困らんよ。
日本語資料では間に合わなくなったら辞書片手に読めば良い。以上。

416 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 07:35:47.49 ]
そもそも,何ができたらお前にとって強いメリットで,
環境に合わせたチューニングで何がしたいというのか.

417 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 07:48:40.49 ]
ディストリに依存する部分はパッケージメンテナじゃないから詳しくないが
処理系に依存する部分は少なからずある
ラッパーはあるが、学び始めた頃はどれが処理系依存かなんてすぐには分からないし

それにGauche/SBCL/CLISPって不変性(永続的なデータ構造)中心だったっけ?
「日本語資料の量」って部分だけに反応したのなら、>>412がパラダイムの近いLisp方言を比較した点を読めてないし
辞書を使えばいいというのも的を外してる。それはどの方言・処理系でも同じ

418 名前:デフォルトの名無しさん [2011/11/25(金) 07:52:40.94 ]
(let ((myData '(1 2 3))
(myResult '()))
(do ((myList (rest myData)
(rest myList))
(myI (first myData)
(first myList)))
((null myI) myResult)
(do ((myRest (rest myData)
(rest myRest))
(myJ (first myData)
(first myRest)))
((null myJ))
(setf myResult `((,myI ,myJ)
,@myResult)))))
((3 3) (3 2) (3 1) (2 3) (2 2) (2 1) (1 3) (1 2) (1 1))
が理解できません。どなたか簡単に説明をお願いいたします。


419 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 08:46:41.47 ]
>>400
配布毎に金かかるのか。それだと厳しいってか無理だなぁ。

standard runtimeが付いてくるのがエンタープライスからみたいだけど、値段7桁? 高えな。



420 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 09:02:36.95 ]
>>415
失礼なやつだな。

CL <-> Clojure : ライブラリの扱い方の違い。日本語の取り扱い。
仕様の枯れ方。 仕様に含まれてるconcurrentな部分。google app/heroku
などweb系。

schemeは学習でしか使ってないから比較してないけど、正直いって、
この3つの言語のうち1つやってれば、あとの2つはいつでも、プ
ログラミングはできると思うかな。

この辺は大きな違いがあるから。個人的には、Clojureは年1バージョン
アップで仕様がまだ微妙に変更して行ってるから、web以外で使う場合、
慎重になってるところはあるけどな。CLの仕様の枯れ方は何かと安心できる
反面、仕様を決めた当時と今の時代の違いを埋めてくれと思うところはある。

421 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 09:14:40.85 ]
410が言ってる、環境依存の問題は、Clojureは少ないというのは事実かもな。
CL/schemeに限らないけど、オープンソース系の多くの言語はWindowsで
取り扱うのは、何かと問題が出てくるし、作ってる本人達にもどうでもよい
問題だったりして、放置されがちだしな。俺だってMSを使ってるんだったら
cygwinより仮想環境そろえてそこにubuntu入れて開発環境を揃えたほうが、
楽だろうにと思うもの。

俺も含めてここの人には余りメリットは感じないけど、IDEにこだわってる
メンツでlispを触りたいという人も向いてるよ。でも、その手の連中は、
ここじゃなくて他のところに生息してそうだ。

422 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 10:09:47.13 ]
>>419
その代わり、サポートとかも提供するからその値段ってことなんだってさ。
ちなみに、毎年保守契約に25%掛かるぜ。

LispWorks辺りはまだマシだけど、それでも良い値段するよ。
64ビットならEnterprise確定だし。商用は高い。

www.lispworks.com/buy/prices-1c.html


423 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 10:30:31.56 ]
>>418
どの辺が理解できないのか教えてくれないと、
こっちもどの辺を説明すれば良いか分からなくて困るよ。

とりあえず、

1: myList = (2 3) myI = 1 myRest = (2 3) myJ = 1
2: myList = (2 3) myI = 1 myRest = (3) myJ = 2
3: myList = (2 3) myI = 1 myRest = () myJ = 3
4: myList = (3) myI = 2 myRest = (2 3) myJ = 1
...

って具合にそれぞれの変数が変わっていく中で、

(... (myI2 myI2) (myI1 myJ1))

って感じで要素が追加されてくからそうなる。


424 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 12:40:51.96 ]
数年ぶりにcommon lispを触るようになったけど、忘れてることが多い
PAIPの3章よんでると良い復習になったな。手持ちは原著なんだけど、
数年前に買ったものの割には、誤植の訂正はされていないようだ。
和書版のほうはどうなのか知らない。

高い本だけど、評判だけのものがある。大学の図書館あたりで探して
読んでみればいい。

425 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 18:56:57.16 ]

>>422
サポート込みならしょうがないか。
まぁ商用は個人には無理っぽい。

Tree-shakingがフリーの実装にあるといいんだけどね。

イメージを小さくするっていうならsbclがcompressed coreをサポートしたみたいだけど、起動に時間がかかりそうね。試してみた人いる?

426 名前:デフォルトの名無しさん [2011/11/25(金) 19:35:10.83 ]
>>423
ありがとうございました。

427 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 22:00:13.29 ]
enhancement: when built with :sb-core-compression, core files (regular or executable) can be compressed with zlib. Use the :COMPRESSION argument to SAVE-LISP-AND-DIE to specify a compression level.

gzipみたいに1-9とかなら1で良さそうだ。
lzo系統の要望は無かったのかな。
dayafterneet.blogspot.com/2011/05/google-snappy.html

428 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 23:34:27.13 ]
>>425
Tree-shaking? Clozure CL先生の次回作にご期待ください。
Android対応したし、DTraceにも対応する可能性がありそうだし、
SBCLとは違った魅力のある処理系になると良いよね。

trac.clozure.com/ccl/wiki/ToDo

圧縮コアはそこまで起動時間は変わらないとかついったーで見たような。
Zach曰く、43MBのコアが9MBまで縮むらしいから、常時圧縮してても良いんじゃないか。

>>427
そういう枠組みがソースツリーに入ったのが重要なので、
LZOとかSnappyとかに後から対応するのは楽だと思う。


429 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 00:58:48.51 ]
>>428
期待しとくわ。頑張ってね!428さん



430 名前:デフォルトの名無しさん [2011/11/26(土) 02:57:16.05 ]
>>424
ありがとうございました。

431 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 11:29:48.95 ]
>>429
今コード見たらzlib決め打ちで全然プラガブルにはなってなかったw嘘吐きでサーセンw

他のライブラリ使わせるには、コアにアルゴリズムやオプションとかの情報を埋め込んだり、
APIでそれを選ばせるためのインターフェイスが要るから、結構変更が大きくなると思う。
その辺決めるための開発者とのコミュニケーションとかマジやりたくない。他の誰か頼む。


432 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 22:35:43.12 ]
sbclをwindowsで使っています
他のプログラム(.exe)をsbclのスクリプトから起動させる、ということはできますか?
xyzzyでいうところの以下の機能のようなものを探したのですが、
自力では見つけられませんでした。

shell-execute - refwiki
xyzzy.s53.xrea.com/reference/wiki.cgi?p=shell-execute

execute-shell-command - refwiki
xyzzy.s53.xrea.com/reference/wiki.cgi?p=execute%2Dshell%2Dcommand

make-process
xyzzy.s53.xrea.com/reference/wiki.cgi?p=make%2Dprocess

sbclがだめでしたら、他のディストリビューションでは可能かどうかも伺いたいです

433 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 23:22:33.07 ]
>>432
sbcl で外部プログラムを実行するには sb-ext:run-program を使う。
ここに詳細が載っているよ。
www.sbcl.org/manual/Running-external-programs.html

例えば電卓を実行したいのであれば
(sb-ext:run-program "C:/Windows/System32/calc.exe" nil)
みたいにすればOK.

434 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 23:36:57.97 ]
>>433
ありがとうございます!
マニュアルを見落としていました。

435 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 22:01:14.10 ]
practical common lispの質問です
Programming in the Large: Packages and Symbols
www.gigamonkeys.com/book/programming-in-the-large-packages-and-symbols.html
実践common lispの

(defpackage "COM.GIGAMONKEYS.EMAIL-DB"
(:use "COMMON-LISP"))

の直前の文章の翻訳で、
「もちろん文字列そのものを使ってDEFPACKAGEすることもできる。
しかし、その場合にも文字列をすべて大文字で書かなければならない。
なぜなら大半のシンボルやパッケージの名前は読取器によってすべて大文字の真の名前に変換されるからだ」
とありますが、ここの「大文字の真の名前」というのがいまいちわかりません
どういうことなのでしょうか

436 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2011/11/27(日) 23:06:00.16 ]
>>435
例えばシンボルを 'a と書いたとしても、それはリーダーが 'A と変換する。
表記上 'a と書いても内部的には 'A と扱われる。
この内部的な名前が「真の名前」ということ。
よって、そのパッケージの名前は "COM.GIGAMONKEYS.EMAIL-DB" ということになる。

文字列については大文字に勝手に変換するということはないので、 "com.gigamonkeys.email-db" で探せば
"COM.GIGAMONKEYS.EMAIL-DB" に一致しない。

437 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 23:22:35.58 ]
正確にいえば、リーダーの設定によって大文字に変換される、だな。
リーダーの設定は READTABLE-CASE で参照、設定できる。
> (readtable-case *readtable*)
モードには :upcase, :downcase, :preserve, :invert の4つがあり、
それぞれのモードでLispScheme というシンボルを読むと、内部的には
(case mode (:upcase "LISPSCHEME")
(:downcase "lispscheme")
(:preserve "LispScheme")
(:invert "lISPsCHEME"))
となる。この結果がシステムが管理してるシンボル「真の名前」だ。
symbol-name で調べられるよ。ほとんどのCLerは :upcase を前提として会話する。
小文字好きな人は *print-case* という印字側を司る設定を :downcase にしてたりする。

438 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 23:28:43.15 ]
ありがとうございます。
リーダーのモードの説明、とくに
>ほとんどのCLerは :upcase を前提として会話する。
を見て腑に落ちました。
そう思って本文を見ると、すんなりと読めました
真の名前とはそういうことだったのですね

439 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 15:12:55.09 ]
すげー分かりやすい、横トンクス。



440 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 23:47:34.84 ]
sb-ext:run-programがらみだと思うのですが、
windowsで関連づけしているブラウザで指定したurlを開かせる方法はあるのでしょうか
sb-ext:run-program を使えば指定したブラウザでurlを開くことはできますが、
いわばブラウザを自動的に指定させたいのです


441 名前:デフォルトの名無しさん mailto:sage [2011/11/29(火) 01:20:19.28 ]
>>440
shellに紐づいているプログラムを実行させたいのであれば、Win32APIのShellExecute()をCFFIで
呼ぶしかないような気がする。

下は既定ブラウザでgoogleのURLを開く例。

(cffi:foreign-funcall ("ShellExecuteA" :library "shell32" :convention :stdcall)
:pointer (cffi:null-pointer)
:string "open"
:string "www.google.co.jp/"
:pointer (cffi:null-pointer)
:pointer (cffi:null-pointer)
:int 1 ;SW_SHOWNORMAL
:long)

442 名前:デフォルトの名無しさん mailto:sage [2011/11/29(火) 01:24:26.73 ]
ぐぐると sh -c してるのが見つかった
Windows の cmd.exe でも -c だか -k でいけるかもしれない
www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/cmd.mspx?mfr=true

443 名前:デフォルトの名無しさん mailto:sage [2011/11/29(火) 02:06:52.63 ]
>>441
cffi経由でwin32apiをたたくなら、
いろいろと操作できそうですね
これを使用させていただきます

>>442
そういう方法もあるのですか
cmd /c start www.google.co.jp/
これでページを開くことができましたので、こう書きましたら

(sb-ext:run-program "c:/Windows/System32/cmd.exe"
'("/c start www.google.co.jp/")
:wait nil)
googleのページは開けたものの、・不必要なことに、なぜかurlの最後に"がついてしまいました
The requested URL /%22 was not found on this server.

444 名前:デフォルトの名無しさん mailto:sage [2011/11/29(火) 09:12:15.20 ]
cygstartェ……。

445 名前:デフォルトの名無しさん [2011/11/29(火) 10:13:00.97 ]
実用 Common Lispて初心者でも理解できますか?

446 名前:443 mailto:sage [2011/11/29(火) 11:28:14.54 ]
>>443
(sb-ext:run-program "c:/Windows/System32/cmd.exe"
'("/c" "start" "www.google.co.jp/")
:wait nil)
と書き換えればokでした


447 名前:デフォルトの名無しさん mailto:sage [2011/11/29(火) 13:02:06.70 ]
>>445
下手なLISP本やるよりわかりやすいから、とりあえずやれ。
あと2chのリンクは参考資料な。


448 名前:デフォルトの名無しさん mailto:sage [2011/11/29(火) 13:05:36.47 ]
あと無料でhtml形式の英語版があるから辞書片手にやりなさい。
そして、その次にOn lisp.pdfかな。

449 名前:デフォルトの名無しさん mailto:sage [2011/11/29(火) 13:53:18.07 ]
>>445
いきなりあの本に手を出すのは疑問かな。447さんと意見が違って来る。
やるならば3章まではなんども復習してじっくり鍛えてからそのあと
に進めばいいよ。ネットの勉強ブログを見てると4章くらいで挫折が
多い本だから。だからあの本はある程度身につけたlisperが更に腕を
磨く本という位置づけ。最初の2章の位置づけは、他の言語やってましたよ
という人にとっては良い入門だと思う。
on lispを初心者に勧めるのもどうかと思うな。
おれはANSI common lisp(グレアム)で最初勉強したほうだけどね。
竹内さんの本は見てないから評価できない。



450 名前:デフォルトの名無しさん mailto:sage [2011/11/29(火) 13:59:11.02 ]
プログラムの洗練のさせ方やデバッグの技法などを身につけるにはうってつけなん
だけどね。
むしろ、lisp経験をある程度積んでるのにPAIPを読んでないのは不幸だと思うくらい
の本だよ。値段は高いからそれ相当の価値があるかと言われると、あるんだろうな。
買って損したって気分しないんだから。ただし和訳版は持ってないので、和訳の質
などわかりません。(洋書版で7千円ちょっと、和書で9千円ちょっと)

451 名前:デフォルトの名無しさん [2011/11/29(火) 20:49:32.97 ]
>>445
初心者でもとりあえずまずは、公式HPをみとくべき
lisp.dive2ent.com/

452 名前:デフォルトの名無しさん mailto:sage [2011/11/29(火) 23:38:38.06 ]
>>451
踏んでしまったw


453 名前:デフォルトの名無しさん mailto:sage [2011/11/29(火) 23:46:05.95 ]
>>445-448ってPractical Common Lispのことでは?
日本語では『実践Common Lisp』と翻訳されているやつ

PAIPは無料配布されていなかったかと

>>451については俺もやられたw
音楽が流れてびくっとしてしまった

454 名前:デフォルトの名無しさん mailto:sage [2011/11/29(火) 23:46:15.45 ]
むしろ赤(ry

455 名前:デフォルトの名無しさん mailto:sage [2011/11/29(火) 23:57:48.53 ]
opac.ndl.go.jp/recordid/000009415975/jpn
人工知能 第二版 1108p,17000円とこっちも分厚いんだな。

456 名前:デフォルトの名無しさん mailto:sage [2011/11/30(水) 00:57:06.16 ]
>>453
PCLのことか^^; 和書のタイトルがに過ぎてて混乱してた。
PCL萌え絵本ですね。(もええ本ですねと書いたんだが。)


457 名前:デフォルトの名無しさん mailto:sage [2011/11/30(水) 01:05:17.86 ]
>>455
原著は第三版がでて11000円相当で売ってるけど、あんなでかいの
電子ブックじゃないと持ち歩く気がせんかも。
PAIP/AIMAコンボで漬物石だよな。(+ Introduction to Algorithms)


458 名前:デフォルトの名無しさん mailto:sage [2011/11/30(水) 01:14:35.37 ]
実用(PAIP)は入門にはもったいないな。ある程度基礎を知ってからのほうが楽
しいし、役にたつよ。できれば、じっくり味わってほしい。
今なら実践(PCL)→実用(PAIP)が個人的オススメかな。Paul Graham のスタイル
はどちらかといえば Scheme 寄りだからね。ド入門よりは二冊目以降がいいような気がする。

459 名前:デフォルトの名無しさん mailto:sage [2011/11/30(水) 02:51:28.78 ]
一冊目は?



460 名前:デフォルトの名無しさん mailto:sage [2011/11/30(水) 02:55:10.84 ]
>>457
それハードカバー版じゃない?
ペーパーバックの国際版なら7kちょいだよ

461 名前:デフォルトの名無しさん mailto:sage [2011/11/30(水) 08:48:17.78 ]
>>460
ホントだ、知らなかった。

462 名前:デフォルトの名無しさん [2011/11/30(水) 13:53:30.75 ]
sbclのスクリプトを実行可能にするとき、

463 名前:デフォルトの名無しさん [2011/11/30(水) 13:59:40.00 ]
途中で切れてしまいましたので、改めて書きます
sbclのスクリプトを実行可能にするとき、アイコンを埋め込むことはできますか?
sbclが作り出す実行ファイルにはアイコンが設定されていないと思うので、
ただそれに指定したアイコンを埋め込みたいです

windowsxpで、外部ツール(ReplaceVistaIcon.exe)を使ってアイコンをコマンドで書き換えましたが
書き換え後の実行ファイルが"can't find core file"となってしまいます
外部ツールなしに実行ファイルのアイコンを書き換えられればベストですが、
それができないとき、外部ツール(できればコマンドラインから扱えるツール)を使って書き換えれるでしょうか

464 名前:デフォルトの名無しさん mailto:sage [2011/11/30(水) 14:30:39.75 ]
うーん。できるのかなー。コアファイルが見付からないってのは、
コアイメージ部分を外部ツールがパージ、あるいは変更しちゃったからだと思う。
ファイルサイズがスリムになってたりしない? stripとかしてもそうなるはず。

多分、そういうの考えた人自体があんまりいないと思う。
ウィンドウとかタスクバーに表示されるアイコンを変えたいだけなら、
Windows APIで動的に読み込めたと思うけど、そういうんでもないんだよね?
あとはショートカットに対してアイコンとかを設定しとけば、
実用上は気にならない気もするけども。

それ以外だと、手当たり次第に外部ツールを試すくらいしか思い付かない。


465 名前:デフォルトの名無しさん mailto:sage [2011/11/30(水) 20:52:14.00 ]
たしかにファイルサイズが小さくなっていました
20MB台->1MB台
エクスプローラーでアイコン付きのexeファイルを表示させたかったのですが、
API経由でタスクトレイにアイコンを表示させるのがよさそうですね
やってみます


466 名前:デフォルトの名無しさん [2011/12/01(木) 05:49:59.47 ]
ここは教えて君が許されるスレですよね?
始めてLISPでプログラムを書こうとしているのですが、うまく行きません。

'((A B C) A B C (A (B C)))

と言うリストに対して
A<=a
B<=b
C<=a b
として以下の様になるよう置換したいのです。

'((a b a b) a b a b (a (b a b)))


ところが以下の様にうまくいきません。
* (defun henkan(x)(
cond
((equal x 'A) (list 'a))
((equal x 'B) (list 'b))
((equal x 'C) (list 'a 'b))
(t nil)))
* (defun chikan(x) (if (atom x) (henkan x) (mapcar #'chikan x )))
* (chikan '((A B C) A B C (A (B C))) )
(((A) (B) (A B)) (A) (B) (A B) ((A) ((B) (A B))))

「括弧が増えないやり方」はありますか?
もしくは「一番内側の括弧を外す方法」でも構いません。
なお1つのアトムが最大2つのアトムに変換されるとは限りません。
よろしくお願いします。

ちなみにmultiple-value-bindと言うのも見つけたのですが
可変長とは相性が悪そうに思いました。違いますかね?

467 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 10:01:07.58 ]
>>466
(defun chikan (x)
   (labels ((hentai (x)
              (if (atom x)
           (case x
                    (a (list '|a|))
                    (b (list '|b|))
                    (c (list '|a| '|b|)))
                  (list (loop for y in x
                           append (hentai y))))))
     (hentai x)))

468 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 10:56:40.51 ]
>>465
Win用のexeファイルでは、コアイメージをWin32リソースに突っ込んでいて、
そのアイコン付加ツールはアイコンをリソースに突っ込んだ後、
知らないリソースを捨ててしまってるのかもね。

469 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 11:07:05.60 ]
木構造、全然わからんなあ。
car, cdrで原始的にゴリゴリやるしか思いつかん。



470 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 11:52:07.48 ]
map系を使おうとすることは筋がいいよ。

* (apply #'concatenate 'list '((a) (b c) (d)))
(A B C D)

これを応用させてみ。

471 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 11:58:04.81 ]
m-v-bは多値を返す関数の時に使うんだよ。
listをletで変数に分けるみたいなときにはdestructuring-bindを使う。
この辺はちょっと慣れてこないと感覚はつかめないかも。

472 名前:デフォルトの名無しさん [2011/12/01(木) 12:55:58.28 ]
沢山の回答ありがとうございます。

>>467
動きました。labelsや縦棒で区切るとか勉強になります。
括弧が一つ多いみたいなんで
(car (chikan '((A B C) A B C (A (B C))) ))
とすれば大丈夫ですね。
所でlabels使わなくても行けませんか?
(defun chikan(x) (if (atom x) (henkan x) (list (loop for y in x append (chikan y)))))

>>470
ヒントありがとうございます。
(defun chikan(x) (if (atom x) (henkan x) (list (apply #'concatenate 'list (mapcar #'chikan x )))))
(car (chikan '((A B C) A B C (A (B C))) ))

>>471
リストで受けてfirst,second,thirdでばらすイメージですかね。

--
carで受けるのは格好悪いですね。labelsとか使う場面でしょうか。

473 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 12:59:03.79 ]
>>467
さり気なく痴漢と変態にしてんじゃねーよw

474 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 13:47:32.64 ]
簡単に言えば?次のような感じで使ったりする。
(defun translator (tr)
  (destructuring-bind  (in . out) tr
    (lambda(c)
      (if (eql in c) out in ))))

CL-USER> (funcall (translator '(c .'(a b))) 'b)
C
CL-USER> (funcall (translator '(c .'(a b))) 'c)
'(A B)

475 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 13:54:32.26 ]
'が一つ余分だったな。^^;

476 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 14:38:19.17 ]
よろしくお願いします。
sbclでclojureと同じようにソースを出したいんですが、どうやればいいんでしょうか?
あとソースを参照しているファイルの場所を知ることはできないでしょうか?
user=> (source first)
(def
^{:arglists '([coll])
:doc "Returns the first item in the collection. Calls seq on its
argument. If coll is nil, returns nil."
:added "1.0"
:static true}
first (fn ^:static first [coll] (. clojure.lang.RT (first coll))))
nil
あとemacs23で(first 3)を評価すると*Backtrace*が出て実際のソースに飛べて便利なんですが、
こういうことはsbcl+slime+linuxでできないのでしょうか?
Debugger entered--Lisp error: (wrong-type-argument listp 3)
first(3)
eval((first 3))
eval-last-sexp-1(nil)
eval-last-sexp(nil)
call-interactively(eval-last-sexp nil nil)
あと公式リファレンスを読むのを前提ですが、clojure, sbcl, emacs lispのソースを直接読んだ方が
あるテーマの操作関数について関数の語彙が増えるんでしょうか?
"/usr/share/sbcl-source/src/code/list.lisp"を今日初めて見てソースを見ちゃった方がわかりやすい
じゃんと思ってしまった。

477 名前:デフォルトの名無しさん [2011/12/01(木) 20:11:09.54 ]
>>472は急いで書いたんでぶっきらぼうな感じになってしまいましたが
皆様のお陰で何とかなりそうです。

>>473
触れるべきか考えたまま調べたりしてたら失念しました。
私が触れとくべきでしたね。「なに!変態ですと!!!」

>>474
機会があったら使ってみます。
「こんなのもある」みたいな抽出しを増やさないとダメですよね。

478 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 23:49:07.05 ]
次に、sublisもhyperspecで調べてみ。

479 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 23:49:52.10 ]
s式のテキストを読み込み評価して他のテキストデータを書き出したいのですが、
書き出す部分の処理がうまくいきません
読み込むファイルと書き出すファイルのパスは、
外部から与えるようにしたいです

(defun from-lisp-to (input-file output-file)
(with-open-file (stream output-file
:direction :output
:if-does-not-exist :create
:if-exists :supersede)
(eval
(read-from-string
(format nil "(progn ~A)" (parse-lisp-file input-file))))))

このような形で組み立てて
最終的にはinput-file内の(format stream "hoge")をoutput-file のstreamに書き出すよう処理させたいのですが
文字列内のstreamとして(with-open-file)のstreamを使わせる方法がわかりません
どこを修正すればよいでしょうか



480 名前:デフォルトの名無しさん mailto:sage [2011/12/02(金) 00:37:24.41 ]
>>476
A1. function-lambda-expressionのこと?
A2. シンボルの上で M-. 。SBCLならdescribeでソースの位置とか表示される
A3. SLDB(SLIMEのデバッガ)については前に書いた物があるんで、下をどうぞ

cl.cddddr.org/index.cgi?SLIME%3ASLDB

A4. ソースは読むに越したことはないと思う。勉強になる

481 名前:デフォルトの名無しさん mailto:sage [2011/12/02(金) 00:59:07.46 ]
>>479
HyperSpec曰く、

www.lispworks.com/documentation/HyperSpec/Body/f_eval.htm#eval
> Evaluates form in the current dynamic environment and the null lexical environment.

なので、evalでローカル変数を参照することはできません。本当にありがとうございました。

ちなみに、それは単に

(with-open-file (*standard-output* "out.txt" ...)
(load "code.lisp"))

みたいなのじゃ駄目なんでしょうか?

482 名前:デフォルトの名無しさん mailto:sage [2011/12/02(金) 01:14:08.56 ]
>>477
(defun chikan (x)
(labels ((f (x)
(if (atom x)
(henkan x)
(list (mapcan #'f x)))))
(car (f x))))
mapcan 使うとこうなる。
labels 使うと (car (chikan hoge)) と呼ばなくてもOK.

>>479
(eval `(let ((stream ,stream))
,(with-open-file (s input-file)
(read s))))
parse-lisp-file が分からないけれど、みたいな感じで……。

483 名前:デフォルトの名無しさん mailto:sage [2011/12/02(金) 01:16:06.08 ]
>>468
そういうことでしたら、無理にいじくらないようにしなくてはなりませんね
勉強になりました

484 名前:デフォルトの名無しさん mailto:sage [2011/12/02(金) 01:36:00.09 ]
>>481
分かりました
道理でよくありそうな処理なのに
(eval (read-from-string という例がほとんど無いのですか
evalを使わずにできないものかと考えていましたが、
単に*standard-output*を利用するということを失念していました

>>482
eval外部のstreamをletを使ってeval内部に持ち込むのですか
ただ、そうなると>>481の説明に反してしまうような…

>>481が簡単というか簡潔なのでそちらを使うことにします

485 名前:デフォルトの名無しさん mailto:sage [2011/12/02(金) 02:00:11.93 ]
>>484
えーと、>>482はローカル変数を参照してません。
リストを作る際に値(ストリームオブジェクト)を展開してるので、
>>481とは矛盾しないと思います。

486 名前:466 [2011/12/02(金) 12:25:25.85 ]
>>482
ぴったりな関数があったのですね。

487 名前:デフォルトの名無しさん mailto:sage [2011/12/02(金) 23:46:00.60 ]
>>485
勘違いしていました
リスト生成後にevalで評価していますね
失礼しました

488 名前:デフォルトの名無しさん mailto:sage [2011/12/03(土) 13:10:38.61 ]
> Evaluates form in the current dynamic environment and the null lexical environment.

Evalのこの制約は静的展開コンパイル最適化のため?

489 名前:デフォルトの名無しさん mailto:sage [2011/12/03(土) 22:30:55.64 ]
evalはダイナミック変数ならその値を得られたような気がする
それを考えると、コンパイルを必要な限りにおいてコンパクトに行うようにする、というのはしっくりくるね



490 名前:デフォルトの名無しさん mailto:sage [2011/12/03(土) 23:46:10.74 ]
実用common lispのp.427の

(with-open-file (out "foo.html" :direction output)
(with-html-output (out :pretty t)
(emit-html *some-foo-expression*)))

のoutputは:outputの誤表記でしょうか?

491 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 00:19:44.66 ]
>>490
typoだねー。原書の時点で間違えてるみたい。

www.gigamonkeys.com/book/practical-an-html-generation-library-the-interpreter.html
www.lispworks.com/documentation/HyperSpec/Body/f_open.htm#open

あと、そっちは実践Common Lisp(通称PCL)。実用Common Lisp(通称PAIP)とは違うので注意。

492 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 00:21:13.21 ]
>>491
たしかに実践の間違いでした。ご指摘ありがとうございます。

493 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 01:19:20.11 ]
>>492
正誤表提案よろしく
pcl.lispuser.net/wiliki.cgi?%E6%AD%A3%E8%AA%A4%E8%A1%A8.%E6%A1%88

494 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 03:07:09.18 ]
>>493
追加しておきました

495 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 12:46:19.07 ]
>>491の1つめのサイトトップページに
that book is dead sexy ?Xach on #lisp
と書いてあるのですが、どういう意味なのでしょう
xachという英単語は存在しないようですし

496 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 12:55:21.24 ]
>>495
Quicklispとか書いたり色々やってるLisperのZach Beane(ハンドルがXach)が、
IRCの#lispでそう言ってたってこと。

497 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 13:32:00.48 ]
>>496
なにそれ。
知らんがなって感じだな。

ハンドル名じゃなくて実名で書けよ。
pgってどれだけ浸透しているのか知らないけど、pgだけだと迷惑だな。

498 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 13:59:39.95 ]
何を過剰に反応してるか知らんけど、RubyでのMatzとか、日本のSchemeでのShiroさんとか、
別に通りの良いあだ名で人を識別するのなんて普通だろ。

そもそも、事情が分かる人向けに「あの有名人もこう言ってますよ」っていう宣伝なんだから。

499 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 14:37:35.60 ]
Matzだったら認知度高いと思うけど、非日本諸国でShiroだけでどれだけの人が認知できるのかね。
竹内関数の竹内さんの通り名知らないけど、その通り名で英語圏でどれだけ認知されているの?

ちゃんとその本人のリンクが貼ってあるならわかりやすいだがな。



500 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 14:42:45.70 ]
チョン鮮人乙

501 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 14:52:50.60 ]
>>500
Es lebe die koreanische

502 名前:490 mailto:sage [2011/12/04(日) 15:15:45.19 ]
sbcl最新版をwindowsで使っています
おかげさまで実践common lispを読み終えたのですが、
実際にコードを動かそうと思って
www.gigamonkeys.com/book/のDownload source codeを取得して
Chapter31の動作を確かめようとしたのですが、chapter31/ディレクトリにあるcss.lispをloadしようとすると

The variable COM.GIGAMONKEYS.HTML::CSS-STYLE is unbound.

というエラーが出てしまいます
当初.macro-utilitiesが見つからないと言われて (ql:quickload "com.gigamonkeys.macro-utilities")によって解決はしたのですが、htmlの方は
System "com.gigamonkeys.html" not found
となってしまいました
どうすればよいのでしょうか

503 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 16:18:44.40 ]
Warum bist du so serene?

504 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 16:24:18.32 ]
>>502
先にpackages.lispとhtml.lispを手動でロードするか、ASDF経由でロードしてください。

(asdf:initialize-source-registry
'(:source-registry
(:directory ("practicals-1.0.3/Chapter31")) ; コードのあるディレクトリを指定
:inherit-configuration))

評価してから(asdf:load-system :html)すればASDF経由でロードできます。

505 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 16:35:46.21 ]
>>499
別に全世界でどうこうとか知名度とか、そういうのはまったく関係ないわけよ。
「特定のコミュニティ」の中で十分に共通の認識がある通り名なら、
「中の人同士」でのコミュニケーションに使っても何の問題もないっしょ?

「この道では知る人ぞ知るアイツもこう言ってるぜ、買えよ」って売り文句に、
「俺は知らないんだけど」って言ってる状況なんだけど、不毛だと思わんか?
その広告のターゲットじゃないんだから、無理に分かろうとしなくていいんだよ。

506 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 16:48:28.25 ]
lispbox、emacsの操作だけ覚えれば使える感じだな。
これはかなり良い入門者向き環境かもしれない。

507 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 16:53:40.02 ]
>>505
ヌーディストビーチのWeb上でのコミュニケーションなんだから
腋毛、マン毛等を手入れしたりした方が良いんじゃないの。

部外者はみるなと立看板をわかりやすいところに立てているなら
勝手にすればいいよ。

508 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 17:06:43.44 ]
>>507
裸なのは君の方なんじゃないの?

509 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 17:17:29.64 ]
気に入らなくてどうにかしたいなら直接そのコミュニティに言えよ



510 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 17:25:18.90 ]
語学力不足で読み取れなかったのに、
コミュニティの閉鎖性にして誤魔化すのはみっともないと思います。

511 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 17:25:26.19 ]
言えないからここで自分の馬鹿さをひけらかしてる訳で






[ 続きを読む ] / [ 携帯版 ]

前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