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


369 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 23:51:57.31 ]
>>367
gaucheの中の人もgitに移行したし、navi2chもgitだよね。slimeもgitだっけ?
まあ、せっかくだしアカウント作ってちょっと触っておいて損はないかなと思っている。
化石ツールでも全然個人レベルだと全然管理できるポテンシャルを持っているのはわかって
いるんだけど、世の中に一度流されるのもありかな。


370 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 00:10:59.88 ]
公開するものはgithub、非公開のものはbitbucketと使い分けている。

371 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 02:16:13.72 ]
>>360
勢いで言えば、GitHubが一番だと思う。次いでBitbucketかなー。
少なくともCommon Lispの世界では。CL-PPCREとかHunchentootも移ったし、
SBCLのWindows forkとかもこっちだし。

GitHubとBitbucketの二者とLaunchpadは性格違うので注意。
前者はあくまでも個人にフォーカスしてて、後者はプロジェクトにフォーカスしてる。
Launchpadはどちらかというと、Google CodeとかSFの競合。

GitHubとBitbucketなら、片方ミラーにしつつ、両方同時に使う手もある。
BitbucketはGitに対応してるし、MercurialでもHg-Git経由でGitHubを利用できるので、
リポジトリは共通のまま両方にpushするだけ。

372 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 02:28:58.29 ]
ただ、issue trackerはLaunchpadがかなり高機能なので、
人一倍きめ細かいタスク管理が好きなら合うかもしれない。
例えば、SBCLの公式はバグの管理だけLaunchpadを使ってる。

分散SCMをCLで使ってて思うのは、SLIMEとREPLどっぷりなので、
機能ブランチとかissueブランチを細かく作りまくって作業すると、
今現在どのコードを使って作業してるか本気で訳分からなくなる。
code.lisp、code.lisp<1>、code.lisp<2>、code.lisp<3>とか何がどれよ、
みたいな。結局バッファ切り替えにC-x bじゃなくてC-x C-f使ったり。
この辺はひと工夫要りそう。

373 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 02:59:43.45 ]
GitHub, Bitbucket, Launchpadで学習コストは基本的操作マスターレベルで各何時間なのか、
中級者的使い方で各何時間なのかを想像でいいので教えてください。そして、基本的操作
マスターレベル、中級者レベルで恩恵(効果)の違いを100点で評価を教えてください。
GitHub, Bitbucket, Launchpadのアカウントを作って3つとも触る予定ですが、そこまで
調査コストをかけられずにサービス比べをやめてしまうかもしれません。

Launchpadの「かなり高機能なので、人一倍きめ細かいタスク管理」できるのはうれしいん
ですが、学習コストが他のサービスよりかける必要がありそうですし、管理コストが膨れ
上がりそうで怖いです。でも、会員数が200万アカウントでしたっけ。1人平均2アカ作って
いるとしても100万人は優秀ですね。杞憂なのかな。

374 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 08:08:43.49 ]
こういうサービスで2垢作るかな?
それはともかく、どのサイトも機能の概要ページがあるんだから、一通り眺めて決めればいい

基本はGitを使ってるならGitHubかBitBucket、Mercurialを使ってるならBitBucket、Bazaarを使ってるならLaunchpadだが
上にもあるようにBTSだけ使うとか、複数サイトにミラーを置くこともできる
(ミラーは興味を持つ人がある程度存在するプロジェクトでやることが多いが、
一つのサイトがダウンしている間も大きな支障が出ないという側面もある)
確か、Bazaarにもbzr-gitとかbzr-hgがあったよな

375 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 08:16:05.70 ]
>>372
そのエディタはモードラインやステータス行にブランチ名を表示できないのか?

376 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 08:21:48.52 ]
LunchpadはUbuntuとのつながりも深いしね。

377 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 09:22:13.33 ]
>>372
独自仕様でemacs lispを組んでemacsの下の2行の所に半角20文字ぐらいコメントできるようにして文字数制限のないコメントを
コマンド打つと出てくるようにするといいかもね。toggleで表示・非表示もできるようにすれば邪魔なときは非表示にすればいい。



378 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 19:31:53.16 ]
コード例plz

379 名前:デフォルトの名無しさん mailto:sage [2011/11/22(火) 22:36:11.95 ]
なんとかmodeみればあるよ。的な?

380 名前:デフォルトの名無しさん [2011/11/23(水) 07:45:48.63 ]
再帰処理てどう考えたら理解できますか?


381 名前:デフォルトの名無しさん mailto:sage [2011/11/23(水) 08:09:41.10 ]
>>380
深く考えずに、単なる関数呼び出しだと理解すれば良い。

(defun fact (n)
(if (= n 1)
1
(* n (fact (- n 1)))))

単に呼んでる関数が自分自身だったっていうだけ。
イメージが掴みにくいなら、(trace fact)してから実行してみて。


382 名前:デフォルトの名無しさん [2011/11/23(水) 08:16:50.07 ]
>>381
ありがとございました。

383 名前:デフォルトの名無しさん mailto:sage [2011/11/23(水) 08:29:34.76 ]
そして上のfactの定義は忘れるんだ。

(defun fact (n)
(if (= n 0)
1
(* n (fact (- n 1)))))

こっちで。

0! = 1とか素で知らなかったんだよ! 中学生以来の衝撃だよ!
何でみんな0まで回してんのwwwとか思ってたよ!


384 名前:デフォルトの名無しさん mailto:sage [2011/11/23(水) 09:16:43.33 ]
>>383
www

385 名前:デフォルトの名無しさん mailto:sage [2011/11/23(水) 23:31:43.68 ]
ふとしたことで積ん読してたPAIPを読み始めたんだけど、
なかなか面白い本だね。

386 名前:sage [2011/11/24(木) 00:02:26.88 ]
再帰は自分自身を呼び出しながら、終了条件になるまで深く潜っていくイメージかな?
終了条件になったら、呼び出した方の関数に値を渡しながら浮かびあがっていく感じ。
一直線に潜っていくのはいいけど、いくつかに枝分かれして潜っていくような式は
効率が悪いような気がする。

387 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 00:04:36.21 ]
ああ、まちがった。



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で原始的にゴリゴリやるしか思いつかん。






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

前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