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


388 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 00:08:40.59 ]
carとcdrに再帰するまではいいけど
相互再帰書ける人はエイリアンだと思う

389 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 00:20:59.31 ]
>>388
何で? ただの関数呼び出しじゃん


390 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 00:34:43.86 ]
loop表現では描けない再帰の表現ってあるのかな?
みんな、実コードだったら可読性の高いloopで書いちゃうんでしょ?

391 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 00:50:29.14 ]
再帰下降パーサーとかループでかく気は起きない


392 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 00:58:31.93 ]
グレアム教徒はloopを使わない。


393 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 01:29:37.18 ]
Common lispとC on Linuxで食っていけないかな?
断れない仕事なら便宜上多言語も読めるようにするし、他のOSにも使えるように努力する。
ttp://cruel.org/freeware/hacker.html

394 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 02:05:30.95 ]
>>388
書くことより,「それが相互再帰である」ということにどう気づくんだろう,とか思った.
ループ内で条件分岐して,分岐ごと別の関数を呼ぶ,みたいな場合は相互再帰か.

395 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 02:31:04.41 ]
>>393
仕事でLispを使うこと
blog.practical-scheme.net/shiro?20100214-when-you-should-use-lisp


396 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 09:26:38.92 ]
>>394
問題自体が相互再帰。



397 名前:デフォルトの名無しさん [2011/11/24(木) 10:40:35.04 ]
do詳しく解りやすく説明お願いいたします。

398 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 14:19:54.26 ]
なぜかLispのソースがAA扱いになってる
括弧が多すぎるからかな

399 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 18:19:47.73 ]
Allegro CLの購入を考えたいんだけど、そんなに高いものなの?高い高いって書いてあるけど、20万とかするの?
Windows向けのアプリ作ってフリーソフトとして配布したいと思ってるのだけど。

400 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 18:35:42.22 ]
>>399
Runtimeパッケージの再配布にも金銭関係するからフリーソフトで使うのはムリじゃね?


401 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 18:49:18.58 ]
エンタープライズ版だと7桁か

402 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 22:36:42.37 ]
Windows向けのアプリをcommon lispで作ろうとは私も思っていろいろ調べてみたが、
英語でも情報があまりまとめられていない気がする
ソフトのマニュアルに最低限記述してあるだけ
わかりにくいのが残念
clispでもwindowsアプリを作れると思うよ

403 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 22:56:10.19 ]
実行ファイル形式にしたいだけならSBCLだかが出来たような?


404 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 22:58:53.60 ]
(sb-ext:save-lisp-and-die "application.exe"
:toplevel 'main-entry ; entry point function
:executable t )
これでexe出来たはずだけど、SBCLからclojureに浮気中なのでダメだったらゴメン


405 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 23:36:14.06 ]
特に聞かれて無い気がするが、
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
商用はマニュアルにあるのかな。
あとは、ECLみたいにCコード吐き出すやつもあるが。

406 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 23:57:01.61 ]
>>405
このページは初見だった
いいページを教えてくれてありがとう
ってすごいurlだな



407 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 00:55:56.19 ]
強いメリットを主張できないClojureってなんなんだ。

ttp://hibari.2ch.net/test/read.cgi/tech/1318498898/175-177
From: [175] デフォルトの名無しさん <sage>
Date: 2011/11/24(木) 23:43:11.28

質問です。
LinuxerのサンデープログラマLisperなんですがJava未学習者がclojureを
覚える強いメリットっありますか?
あとOSごとにソフトを作り込んだ方がヘビーなエンドユーザーは使いやすいと
思うんですが、実際の所はどうなんでしょうか?
_______________________________________

From: [176] デフォルトの名無しさん <sage>
Date: 2011/11/25(金) 00:46:13.24

こういうメリット云々ぬかす奴は嫌い。
_______________________________________

From: [177] デフォルトの名無しさん <sage>
Date: 2011/11/25(金) 00:47:09.55

JAVA嫌いなら出来ない おわり

408 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 01:13:29.57 ]
アホか。

409 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 01:23:13.43 ]
*Java未学習者に対して*強いメリットが主張できないだけだと思うんだ。

410 名前:デフォルトの名無しさん mailto:sage [2011/11/25(金) 01:25:56.39 ]
>>407
Java見習熟者がってのを見て見ぬふりは良くないと思うぞ。
Clojureの魅力の半分はJVM資産の活用でもあると思うし、その場合Javaしらない子にはClojureをやる意味が半分は無いと言う事だもの

自分はJava見習熟でもClojureはオススメするけどさ(他のLisp族は環境依存の部分を知るために苦労するから)
RichがVM上にのせた理由を書いた文章とか一度は読むべきだとも思うし。


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のこの制約は静的展開コンパイル最適化のため?






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

前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