(make-thread :name common-lisp :part 5)
1 :
デフォルトの名無しさん :
2008/07/12(土) 12:43:33
2 :
デフォルトの名無しさん :2008/07/12(土) 12:45:26
((お勧めの Common Lisp 処理系)
(SBCL:
http://sbcl.sourceforge.net/ :プラットフォーム UNIX, Linux, Mac, Windows(移植中)
:開発 活発
:日本語 使える(UCS4, UTF8, EUC)
:特徴 一番お勧めのコンパイラ。)
(CLISP:
http://clisp.cons.org/ :プラットフォーム UNIX, Linux, Mac, Windows
:開発 そこそこ活発
:日本語 使える
:特徴 バーチャルマシン。遅いがフットプリントが小さい。)
(CMUCL:
http://www.cons.org/cmucl/ :プラットフォーム UNIX, Linux, Mac
:開発 そこそこ活発
:日本語 使えない(回避法有り)
:特徴 高速コンパイラ。SBCL の元になった。)
(Clozure CL:
http://openmcl.clozure.com/index.html :プラットフォーム PPC-Linux, Mac, x86_64-Linux と x86_64-FreeBSD に移植中
:開発 そこそこ活発
:日本語 使えない (pre ver 1.1なら多少扱える。)
:特徴 元々商用のコンパイラ。ネイティブスレッドが使える。))
3 :
デフォルトの名無しさん :2008/07/12(土) 12:46:04
4 :
デフォルトの名無しさん :2008/07/12(土) 12:47:33
5 :
デフォルトの名無しさん :2008/07/12(土) 12:57:16
6 :
デフォルトの名無しさん :2008/07/12(土) 12:59:00
http://wiki.fdiary.net/lisp/ ここはテンプレ置き場に急遽wikiを作った。
自由に編集してください。
id:guest password:cl
です。ブログを持っていないけどインストールログをメモして起きたいと
いう用途に使っていただいてもOKです。lispに関するものでしたら、ご自由に
ページを作成してください。
>>1 The variable COMMON-LISP is unbound.
>>9 失敗したが、そこはマクロを被したということでごまかしておく (^^〃)
>>11 (defmacro make-thread (&key name part)
`(make-thread# :name ',name :part ,part))
整数のリストを渡すと任意の個数で合計が任意の数になるリストを 返してくれる関数を作りたいのですが、これを作成するには OnLispの非決定性を導入するしか無いのでしょうか? そこまでの力量が有る自信が無いので他に方法が有ればご教授願います。
は?
ナップザック問題でもやりたいのだろうとエスパー
どうでもいいが実践Common Lispはまだ発売せんのか?
>>14-15 すいません。
わかりづらい書き方をしてしまいました。
(numlist '(1 2 3 4 5) 2 7)
の様にすると
(3 4)または(2 5)と返してくれるような関数が作りたいのですが
どのようにすれば良いのかと思いまして。
漏れも、実践Common Lispの発売を待ち望んでいるが クオリティを下げるくらいなら、若干の延期でも構わん。 ただ、延期のアナウンスだけはしてほしいな。
Amazonだと26日になってるね。
>>17 エスパるけど、
(namelist list size total)かな?
>>17 決して綺麗じゃないが
(defun @numlist@ (list size total return)
(if (eql size 1)
(let ((found (list (find total list))))
(and (car found) (append return found)))
(loop for ( i . j ) on list do
(let ((answer (@numlist@ j
(1- size)
(- total i)
(append return (list i)))))
(if answer (return answer))))))
(defun numlist (list size total)
(@numlist@ list size total nil))
似たようなのがいくつか本スレ辺りの過去ログにあったような気がする
>>23-24 ありがとうございます。有難いです。
OnLispを読んでいるのですが、そこの非決定性の章で
簡単に実装していたので非決定性を実装しなければ成らないかと
思っていたのですが、継続などにも自信が無いので何か方法がないかと
思っていたのです。
ありがとうございました。
精進したいと思います。
そういえば実践common lispは2冊別々のがでるの? たしか翻訳している人が二人いたよね。
共訳では?
おちつけ。まだ慌てるような時間じゃない。On Lispは一年以上待ったんだぜ。
clisp処理系でfastcgiを使いたいんだが*feature*してもfastcgiが出てこない この場合どうやってインストールすればいいのか誰か教えてください
CommonLispでその言葉に何かが設定されているかどうか を判断する関数は無いでしょうか? >x としたときに何か値が返るか(nilも含む) >x *** - EVAL: variable AOIMONO has no value と表示されてしまうかどうかを判断できるような関数は無いでしょうか? よろしくお願いします。
34 :
33 :2008/07/16(水) 20:12:41
AOIMONOは間違いです *** - EVAL: variable X has no value です よろしくお願いします。
つ boundp
>>33 > CommonLispでその言葉に何かが設定されているかどうか
言葉→シンボル、設定→束縛、ね。
この辺の用語は、検索して何かを調べるときに結構大事だから、ちゃんと覚えておいたほうがいい。
slimeをインストールしようとしたら 1]> ;; Loading file /usr/share/common-lisp/source/slime/swank-loader.lisp ... *** - READ from #<INPUT BUFFERED FILE-STREAM CHARACTER #P"/usr/share/common-lisp/source/slime/swank-loader.lisp" @134>: there is no package with name "CLC" The following restarts are available: ABORT :R1 Abort main loop となってとまってしまいました.clispのversionは2.46です. 最新バージョンを自分でコンパイルして入れたらこうなってしまいました どなたか助言を...
俺もUbuntuでSBCLの最新版を自分で入れてみたら同じエラー出たんで元に戻したよ。 素人なんで自重してパッケージになってるのを使う事にした。
39 :
37 :2008/07/16(水) 23:12:50
すみません,自己解決しました. なんかいじってたら動きましたw
40 :
38 :2008/07/16(水) 23:41:30
ちょwwなにいじったか教えて!!
format 中で ")" を表示させたい場合どうすれば良いのでしょうか よろしくお願いします
CL-USER> (format t ")") ) NIL CL-USER> (format t "\")\"") ")" NIL
>>31 あなたのブログを発見してしまった。藁
漏れもclispのffiコンパイルの不具合はあってこまっとる。
CommonLispでは真の乱数を返す事はできないでしょうか (random x)だと答えが疑似乱数なのでxの値が同じだと 同じ順番で回答がかえってきてしまいます。 これを完全にばらつきが有るようにするにはどうすれば良いのでしょうか 一つ思いついたのですが (random ((car (multiple-value-list (get-decoded-time)))) とすれば秒を基本としているのである程度ばらつきが有ると思ったのですが どうでしょうか? よろしくお願いします。
どの言語でも真の乱数は返せないよ。返せるのは疑似乱数だけ。 (loop repeat (get-internal-run-time) do (setf *random-state* (make-random-state t)))
/dev/(u)randomとかがある環境ならそれ開いて読み込めば。
ひさしぶりにLisp以外の(サンプル)プログラムを読んで、 Lispってわかりにくいな、と感じたのですが、 慣れれば他の言語と同じくらい読めますか?
>>47 僕は簡単に読めていますよ。
むしろJavaとかの方がごちゃごちゃしていて読みづらいと感じました。
ですが確かに適切なインデントのできていないソースコードは大変です。
ですが、それは他の言語も同様だと思います。
すいません
(setq x (read))
としてxにkotobaなどを代入したときに
xを使ってkotobaに値を代入する事はできないでしょうか
xに言葉を代入→代入された言葉に値を代入と言う作業をしたいのです。
(format t "言葉:")
(setq x (read)) ;;これでxに言葉が代入される。(例えばringo)
その後ringoにリストを代入したい場合
(setq x(ringoに置き換え) '(a b c))
とやってringo='(a b c)と成るようにできないでしょうか
(eval `(setq ,x '(a b c)))
(setq x 'ringo) (setf (symbol-value x) '(a b c))
(setq x 'ringo) (set x '(a b c))
52 :
48 :2008/07/17(木) 23:46:08
>>49-51 ありがとうございます
参考にして
(defun make-group (x y)
(if (boundp x)
(setq x (append x y))
(progn (setq x nil) (setq x (append x y)))))
(format t "何か知りたいな:")
(setq kotoba (read))
(format t "それは何?:")
(setq group (read))
(eval `(make-group ,group '(,kotoba)))
とやってみたのですが
*** - EVAL: variable KUDAMONO has no value (group にはkudamonoを入れました)
と成ってしまいます。
どのようにすれば良いか教えて頂けないでしょうかよろしくお願いします。
行いたい処理はgroupに何か束縛されていればkotobaをリストに追加
束縛されていなければ普通に代入としたいのでmake-groupと言う関数を作ってみました。
よろしくお願いします。
何言ってるかわかんねえ。 仕様をもっと分かりやすく書いて。
>>48 君はJavaの方が向いている。
無理しなくておけ。
(setq table (make-hash-table)) (defun make-group (&aux kotoba group) (format t "何か知りたいな:") (force-output) (setq kotoba (read)) (format t "それは何?:") (force-output) (setq group (read)) (let ((l (gethash group table))) (setf (gethash group table) (cons kotoba l)))) > (make-group) 何か知りたいな:ringo それは何?:kudamono (ringo) > (gethash 'kudamono table) (ringo) t
(defun make-group (x y) (cond ((boundp x) (set x (append (eval x) y))) (t (set x y)))) (format t "何か知りたいな:") (setq kotoba (read)) (format t "それは何?:") (setq group (read)) (make-group group (list kotoba)) (format t "group=~s~%" group) (format t "evalgroup=~s~%" (eval group)) たぶんこんな感じのことがしたいのだと予想 どうでもいいけど関数(サブルーチン)の中で破壊的に書き換えするのは趣味じゃないなぁ 関数は値だけを返してメインでその値を使って代入なりなんなりする方がいいと思う
>>56 それならハッシュテーブルを複製してから書き換えれば元のデータが残る。
関数プログラミングはアロケーションが増える覚悟でやらないと。
58 :
52 :2008/07/18(金) 17:27:56
すいません まだ慣れていないものでどのように書けば 良いのか解らないもので 言葉を入力して貰いその言葉がどのような 集合に属するのか入力してもらい 集合が出来ていなかったら新たに作り 入力してもらった言葉を入れて 集合が出来ていたらリストの先頭に追加する という処理をしたかったのです Lispに慣れていないので、手続き型言語脳で プログラムを書いてしまうのですが どのようにするのがベストでしょうか? よろしくお願いします。
何がしたいのかより、なぜやりたいのかを教えてもらった方がエスパーしやすいかもしらんね
>>52 メインでgroupdataって変数を作ってそこにgroupとkotobaの連想リストをつっこんでみた
(defun make-group1 (x y)
(setq groupdata (acons x (cons y (cdr (assoc x groupdata))) groupdata))
)
(setq groupdata nil)
(make-group1 group kotoba)
でもこれだとgroupdataを別の名前にしたらサブルーチンも書き直さなきゃならいよね
て訳で変数の書き換えはメインにまかすようにすると
(defun make-group2 (gd x y)
(acons x (cons y (cdr (assoc x gd))) gd)
)
(setq groupdata nil)
(setq groupdata (make-group2 groupdata group kotoba))
メインでいちいちsetq書くのが面倒くさいならマクロ使って
(defmacro make-group3 (gd x y)
`(setq ,gd (acons ,x (cons ,y (cdr (assoc ,x ,gd))) ,gd))
)
(setq groupdata nil)
(make-group3 groupdata group kotoba)
関数の中からめたらやったらグローバル変数をいじるのはあんまりしない方がいいと俺は思うんだ
いや別に駄目とは言わないけど、他に変な影響を与えたくないからね
>(acons x (cons y (cdr (assoc x groupdata))) groupdata) 間違いではないが、なんかすごいことになってるな
ていうかメモリリークじゃね?
63 :
52 :2008/07/18(金) 21:04:30
ありがとうございます。 Lispを始めてみたところで 人工知能のための言語と噂されたこともある 言語なのだから人工無能を作れるのではないだろうか と思って人工無能をつくろうとしてました。 そのために言葉のデータベースを作るための関数を作ろうとしてました
>>62 aconsされる側のgdにremove-ifでも使って前のデータから古いキーのやつを消せばいいけど
面倒くさいんで手抜きしてましたw
(defun removedata (key data)
(remove-if #'(lambda (x) (equal (car x) key)) data)
)
気になるならこれでもつっこんどいてw
(defun make-group2 (gd x y)
(acons x (cons y (cdr (assoc x gd))) (removedata x gd))
)
こんな感じで
>>64 手抜きは悪いことじゃないよ。ハッカーは怠惰だというしね。
でも手抜きするなら破壊的でいいじゃんって思った。好みの問題かな。
>>63 なるほどね。シンボル(あなたは「シンボル」で「言葉」を表現
する事に決めたわけだけど、他人にLISPで話すときは共通の語彙を使おう)
をデータベースがわりにするというとこんなんでだろうだろう?
(defun message-read (message)
(format t "~A" message)
(finish-output)
(read))
(defun select-item (symbol)
(let* ((lst (symbol-value symbol))
(n (random (length lst))))
(nth n lst)))
(defun input-database ()
(let* ((symbol (message-read "何か知りたいな:"))
(what (message-read "それは何?:")))
(unless (boundp symbol)
(setf (symbol-value symbol) nil))
(pushnew what (symbol-value symbol))))
(defun query-database ()
(let ((symbol (message-read "何がしりたい:")))
(if (boundp symbol)
(format t "~Aは~Aのことだよ~%" symbol (select-item symbol))
(format t "~Aは知りません~%" symbol))))
自分用のライブラリを作りたいのですが、 cc -Llibdir -llibname や emacs lisp の load-path みたいに、 他の directory に置いたライブラリをロードする、 良くやる手を教えてください。
こんなかんじ。 0) asdf.lisp をロード (SBCLみたいに標準でついてくるものもある) 1) asdf:*central-registry* に .asd を集めるディレクトリを設定する (~/lisp/asd) 2) 好みのディレクトリにライブラリ名のディレクトリをつくって溜めていく。(例えば、~/lisp/lib/ライブラリ名) 3) あとは、~/lisp/lib/ライブラリ名/ライブラリ名.asd を ~/lisp/asd/ライブラリ名.asd にシンボリックリンクする あとは (asdf:oos 'load-op ライブラリ名) でロードしてます。 頻繁につかう、かつ、更新が頻繁じゃないライブラリはイメージに取り込んでしまいます。
70 :
67 :2008/07/19(土) 12:49:13
>>68 とっても助かりました。
>>68 ログインして Edit までしたのですが、FAQ のページにどうやって追加していいのか。と言うか、書き込む勇気が、、、
71 :
67 :2008/07/19(土) 12:50:05
>>70 気楽に追加してください。
fdiaryはmatz lispで作られたサイトなんですが、時々書き込めなかったり
重くて読み込めなかったりします。matz lispにはもう少し頑張ってほしい。
(make-thread :name |Common Lisp| :part 5) の方が良かったんじゃないか? 難民が出ているみたいだが。
俺も唐突にスレッド名が変わって混乱した覚えがある
スレタイといえば入門がなくなっちゃった。初心者が気後れしないかな。 (make-thread :name "Common Lisp" :part 5 :入門 :ok)
正直気持ち悪い こんなとこでオナニーすんなよ
77 :
75 :2008/07/19(土) 18:05:24
気分を害したならすまなかった。そこまで入門を嫌う人がいるとは想像できんかったな。俺が浅はかだった。
>>77 つまんないやつは相手にする必要はないよ。
>>73 >>75 スレタイは行きすぎたかも。次スレのときにいい名前になればいいね。
検索しにくくて難民がでるってのはマズイな。スレタイは元の形式がいいのかも。 いきなりS式ってもの入門者を拒絶してる(むしろS式が気持ち悪いと言われてる?)ように見えるのかもしれん。
>>79 find.2ch.netの検索は引っかかるよ。
かちゅーしゃでlispで検索すると一瞬わからないスレタイ
俺が初心者だからフィルタかかってるのかもしれんが
>>76 は入門という語を嫌ってるんじゃなく
(make...ってスレタイのほうを嫌ってるんじゃないか?
俺みたいなのには入門ついてるスレもあったほうが嬉しいが
スレタイで不必要にわかりにくくする必要はないと思う
Lispが小文字で始まってる上にハイフンで繋がってるから検索に引っかからない。
マジで
>>75 ぐらいで留めてくれ。探せない。今回はScheme Lispスレから辿れたけど。
>>81 検索するツールをLispで書けばいいと思うよ。
OpenJaneで見てるんだが タブ表示がこんな感じになっちゃってる Debian GNU... | Lisp Schem... | (make-thre... | 以前のスレタイに戻して欲しいに一票
戻すも戻さないも スレ作りを他人任せにしたつけだよ。 これを機会に、これまでのほうがよいと思うなら積極的に スレ作りに協力して欲しい。
>>87 それは違うな。他人任せを積極的とは言わない。
いったいどういう協力をしてほしいんだ? 金か?w
スレタイ付けの自由らしいぞw
そう思うならば、950越えたあたりになったら 作って、スレにアナウンスする。 これが積極的なスレへの協力だろ?
それは協力というよりスレ立てそのものだな
しかしウンコなスレタイだよな。
例えば(setq common-lisp "Common Lisp")されてるのか、 それともmake-threadは関数でないのか? とか微妙
ていうかそういう思考をスレタイに持ち込むのがウンコだと思う。 スレタイとしての「使い勝手」の悪さと引き替えには遊ばないで欲しい。
本人は面白いと思ってやってるんですよ
CL-USER> (get '
>>1 'life)
0
>>91 が言ってるのは、スレ立てしろとかじゃないし、いくらセンスが悪くても
>>1 乙だろってことだよ。
スレタイを良くしたいならもう少しアクティブな住人が多くないと
>>1 もみんなの意向がわからないし。
>>91 をどう解釈してもスレ建てを積極的にしろになる件
んな事したら不毛なスレ建て合戦になるだろうが。
俺が初めてスレ立てた時はこんな感じだった。懐かしい スレタイ変更→次スレで元に戻らず→数ヵ月後俺が地味なスレタイに戻す→大混乱
スレタイで遊んでも構わないが、このスレのはセンスがない。 俺の使っているエディタにはインテリセンスがない。
センスでうちわ揉めすんな
どーでもいいからLispの話しようぜ。 でもおれは最近Lisp使えてないけど… 泥粘土で遊びながら考えたいよ。
>>94 あたりは(Lispの話題として)ぎりぎり合格だと思う
いま検索してて引っ掛ったんだけど 地獄Lispってサイトってなに? 地獄Schemeってサイトも有るんだけど・・ なんか恐い感じで開けていない
普通にLisp系のサイトだったんですね。 良かったです。 ありがとうございました。
テンプレWikiへの添付ファイルはできないですか? とりあえず、テンプレWikiに入門スレの自分の持っている過去ログへの リンクを貼りました。 たぶん1〜3スレは不完全なので、訂正できる方はお願いします。 Janeのログを上げてもらえれば、私が差し替えます。
115 :
デフォルトの名無しさん :2008/07/21(月) 23:14:07
>>114 できるよ。エディットの下にattemptがあるので
>>115 そこでエラーが出て添付出来なかったんです。
使い方がマズかったかな。
また試してみます。
117 :
デフォルトの名無しさん :2008/07/22(火) 00:20:32
clisp処理系ってプロファイラないのですか?
すいません。 CommonLispでプログラミングをしている中で、 作ったプログラムは関数を定義したファイルを作成しておいて 毎回それをインタプリタにロードして関数を使うのが王道なのでしょうか? 私はプログラミングのときには、 関数をファイルの先頭の方で定義しておいて 後半でUIの部分つまり (format t "x:") (setq x (read))・・・・ などとして ファイルの一行目に#!・・・(インタプリタの場所) を書き込んで使っています。(つまりユーザーはインタプリタを目にしないで良いようになっている) これは不純な方法でしょうか? すこし自分のプログラミングスタイルに疑問を感じてきたのでよろしくお願いします。
それで済めば、それでいいのと違う? ライブラリとして管理したければ、別ファイルにして読み込めばいい。 必要になってからでも遅くない。
ありがとうございます。
>>119 GNU CLISPのこと?それともCommon Lisp一般のはなし?処理系によっては標準で備えてるものもあるし、
別途もってこないとダメなものもある。単純な比較なら標準のTIMEマクロでも結構便利だよ。
CLISP なんて略語で Common LISP 一般を指すことは少ないと思う
>>120 イメージ生成後にそれを起動する手順なら処理系依存としか言えない。
ポーティング先の都合ってのもあるから。
>>126 報告どもです。
Lisp schemスレはまとめて同じフォルダに入れてるんで、
共有設定のミスではないです。
ミスなら全部見れなくなるはずです。
たぶん、時間かアクセス数でURLが変わるんだと…
ファイル置き場変えながら、直しておきます。
Common Lisp入門を参考に、プログラムを書きました。 問題点、改善案など、何かアドバイスをもらえないでしょうか? 動作確認はxyzzyとclispで行いました。 ●実現したいこと ファイルから特定の行を抽出し、その行のみ新たにファイルへ書き出す。 動作確認がしやすいように、行の位置は変えないようにする。 ●自分でおかしいと思ってる点 ・1行ずつ読み込んでる力ワザ ・progn 使いすぎ? ・引数に nil が使われないように'(10000)を lst にバインドしている所 ・行の指定が昇順でなければならない所 (progn (setq str1 (open "in.txt")) (setq str2 (open "out.txt" :direction :output)) (setq eos (cons nil nil)) (setq lst '(10 30 400)) ;取り出したい行をリストで指定、必ず昇順 (defun kakikaki (x) (setq str0 (read-line str1 nil eos)) (cond ((eq str0 eos) (princ "STOP")) ((< x (car lst)) (progn (format str2 "~%" ) (kakikaki (+ 1 x)))) ((not (eq str0 eos)) (progn (format str2 "~a~%" str0) (setq lst (cdr lst)) (and (not lst) (setq lst (list 10000))) (kakikaki (+ 1 x)))) (t "END"))) (kakikaki 1) (close str1) (close str2) ) よろしくお願いします。
>>128 行数はsort関数を使えば自由に入力できるように成ると思う。
おれがまずおかしいと思った点 ・名前が異常 str0 str1 kakikaki・・ アホか ・破綻したロジック >・引数に nil が使われないように'(10000)を lst にバインドしている 意味不明。10000行目は必ず出力するってことか?
131 :
129 :2008/07/24(木) 18:05:48
>>128 最初と最後を結んでるprognは何のため?
ファイルは基本上から処理していくと思うからいらないような気がする。
prognん中にdefun入れて良かったんだっけか
釣りなのか本気なのか判断に迷う
134 :
128 :2008/07/24(木) 21:00:52
>>129 ありがとうございます。
sort関数で昇順に並べ変えられそうです。
>>130 >名前が異常 str0 str1 kakikaki・・ アホか
これはプログラミングのマナーに反しているということでしょうか?
良かったら、マナーに則った命名を教えてください。
>>破綻したロジック
>>・引数に nil が使われないように'(10000)を lst にバインドしている
>意味不明。10000行目は必ず出力するってことか?
関数に nil を渡さないようにしたいのですが、上手いやり方が分かりませんでした。
そこでこのプログラムを使うつもりのファイルにはありえない行数を使い、
ファイルの終端まで入力を続けるようにしました。
>>131 >最初と最後を結んでるprognは何のため?
xyzzy の lisp-interaction-mode で Ctr-J 一回で動作させるには?
と、考えて書きました。どうもかなりマズイんですね。
>>132 >prognん中にdefun入れて良かったんだっけか
良いかどうか、考えずにやってしまいました。
>>133 >釣りなのか本気なのか判断に迷う
本気です。
初心者対象のスレだと
>>1 にあったので、投稿しました。
プログラム経験は fortran で数値計算の入門を経験した程度です。
他に相応しいスレがあれば誘導をお願いします。
136 :
129 :2008/07/24(木) 22:08:47
>>134 がんばれ
>>最初と最後を結んでるprognは何のため?
>xyzzy の lisp-interaction-mode で Ctr-J 一回で動作させるには?
>と、考えて書きました。どうもかなりマズイんですね。
なるほどそれならわかった。
windowsでは一行目に#!〜ってやつはできないんだっけ。
>>All
UNIXの一行目に#!〜ってやつはなんと言う名前でしたっけ。
毎回こう書くのは大変なので技術名を教えてください。
>>132 初心者では普通はしないが、マクロでまとめてマクロや関数を作るときは
ないことはない。
>>136 わすれた。それだけは検索で引っ掛けようにも簡単に引っ掛けられないね。
>>134 フォートラン的なlispはつくれるけど、(グリーンブラット的とも言う。)
lisp的に見えないのが弱点かな。もう少ししたらいい参考書が発売になるし
手に入れてみたらいいよ。
たしかシェバングだっけ?
>>134 焦らず頑張れ
140 :
129 :2008/07/24(木) 22:44:59
>>137-139 ありがとうございます。
通じるのはUNIX板だけかもしれないですね。
ググっても0件だったので検索に引っかからなかったので困ってました。
ありがとうございます。
141 :
128 :2008/07/25(金) 00:24:41
>>136 >>138 励ましが嬉しかったです。
作ってみたい気持ちが先走り過ぎてました。
sort関数は凄いです。
おかげで昇順に並べ替えられるように直せました。ありがとうございました。
sort は偶数や奇数でも並べ替えできるようで、調べるうちにどんどん使ってみたくなります。
Common Lisp入門に載ってない、この関数を知れたことが大収穫です。
>>135 > 質問したければ別に構わないが
> なんでも掲示板に聞きに来るのはかえって効率が悪い
ずっと本を読みながら試行錯誤していて、とりあえず動作したところで途方にくれてしまい、
思わず勢いで書き込んでしまいした。
動作するけど、何かが違う感がぬぐえなかったです。
ご指摘の通りまるで基本ができていません。反省します。
>>137 >lisp的に見えないのが弱点かな。もう少ししたらいい参考書が発売になるし
>手に入れてみたらいいよ。
発売する頃には、いい参考書のその良さがわかるようになっていたいです。
僕の書き込みに時間を割いてくださった方々、ありがとうございました。
>>128 Common Lisp入門って書籍?俺はこの場合だとNILは別に困らないなぁ。
一人で悩むよりはどんどん相談したほうがいいと思う派。どーせ最近はネタもないし。
こんなんなった。open は with-open つかえば安心確実。loop 使えば(ANSI CLなんできっとxyzzyでは動かないけど)
ループ毎に i を 1 ずつ増やし、line 一行呼んでソート済みの lst の先頭と行番号を比較して〜。
(defun kakikaki (lst &key (input "in.txt") (output "out.txt")
&aux (lst (sort lst #'<)))
(with-open-file (in input :direction :input)
(with-open-file (out output :direction :output :if-exists :supersede)
(loop for i from 1 by 1
for line = (read-line in nil :eof)
until (eql line :eof)
do (cond ((eql i (car lst))
(write-line line out)
(setf lst (cdr lst)))
(t
(write-line "" out)))))))
>>143 うはぁ、時々伺うサイトで速攻取り上げられているとは。
145 :
128 :2008/07/25(金) 07:05:14
>>142 >
>>128 Common Lisp入門って書籍?
はい、岩波から出ている本です。
> こんなんなった。open は with-open つかえば安心確実。
わざわざ、書いていただいてありがとうございます。
僕の知識不足に配慮してもらってるようで、助かります。
CLISP で動作できました。
キーワードの使い方など、知識と理解があると出来ることが広がるんだと思えてモチベーションが上がります。
> ループ毎に i を 1 ずつ増やし、line 一行呼んでソート済みの lst の先頭と行番号を比較して〜。
loop に関する記述が手元の本に少ないので、これから検索しながらこのプログラムを読み込んでいきます。
だんだん楽しくなってきました。
でも・・・・・・
比べて振り返ってみると、今更自分のプログラムの幼稚さがよく分かる (´・ω・`)
得るものが大きかったんで後悔はないが…… 恥ずかしぃ orz OTZ
>>128 はなかったことに…… 見た人の ( ゚д゚)ポカーン が目に浮かぶよぅ〜
専ブラ使ってる人はあぼーんしてくれーヽ(`Д´)ノ
あと3日でdat落ちしてくれないかな、このスレ(´・∀・`)
>>145 元コードの主旨に従った物を書いてみた。
xyzzy は使ったことないんで通るかどうかは不明だが…
(defun kakikaki (lines &key (in-file "in.txt") (out-file "out.txt"))
(with-open-file (is in-file)
(with-open-file (os out-file :direction :output :if-exists :supersede)
(labels ((rec (count lines)
(let ((l (read-line is nil :eos)))
(cond ((eq l :eos) "END")
((eql (car lines) count)
(write-line l os) (rec (1+ count) (cdr lines)))
(t (write-line "" os) (rec (1+ count) lines))))))
(rec 1 (sort lines #'<))))))
(kakikaki '(10 30 400) :in-file "in.txt" :out-file "out.txt")
loop 極めるのは結構大変なんで時間かけて覚えた方がいいと思う。
>>145 入門者にいきなりエレガントなコード書かれたら、
この道のプロの人たちは失業の危機じゃないか?
自分のコードの拙さを気にする奴は伸びる。
地道に頑張れ。
読む価値のあるコードを書く凄いプログラマが登場したら楽しいじゃないか。
こういう良い志を持ったプログラマ希望の人が 増えますように・・・・・ Lispプログラマに幸あれ
>>147 プロにはエレガントでないコードの需要が山のようにあるので失業しませんよw
>>150 んまぁ。。
最適化をやりだすとかなり泥臭いコードに変わるから、どろどろした速いコードは多いと思うよ。
マクロを使わなければ…
「エレガントでないコードの[後始末]という需要」だったらかなりイヤゲ
153 :
128 :2008/07/25(金) 22:24:55
>>146 >
>>145 > 元コードの主旨に従った物を書いてみた。
これはすごく参考になります。
自分で作っていて、関数定義の中で with-open 使った上で再帰すると、 close せずに再びファイルを open しようとしてエラーになるだろうし、lambda式では関数に名前を付けらず再帰できないし、と悩んでた部分が解決されてる!!
局所関数と局所変数をあわせて使うんですね。
自分の分かってなさもよく分かってくる…
それでも視界が広がった感じがあります。
> xyzzy は使ったことないんで通るかどうかは不明だが…
xyzzy では write-line が定義されてないので、そこを format で書き換えるだけで動きました。
ありがとうございました。
>>147 はい、地道にやっていきます。
ここ数時間で本に貼った付箋の数が、今までの5倍以上になって充実した時間が過ごせてます。
こんなに興味をもってプログラムを読めるとは、思わなかったです。
>>154 AMOP 誰か、訳さんかのぉ
OO 系の LL user には福音のはずなんじゃが…
発送通知まだ来ない(´・ω・`)
>>153 > 関数定義の中で with-open 使った上で再帰すると
ここがそもそも勘違いのもとだと思う. 先にファイルって言う実体があるわけだ.
stream の実体はファイルでもいいし文字列でもいし ...中略... でもいい
何かの stream から読んで、その他の stream に出力する. で, 読み書き対象は?
と, 考えた結果が
>>146 だと思う.
ちなみに
>>146 の with-open-file は, 入出力をファイルに割り当てる操作.
(with-open-file (is ... ==> (with-input-from-string (is ...
(with-open-file (os ... ==> (let ((os *standard-output*)) ...
でも動作したりしないかい?
>>158 GFDL だね。訳しても問題はおこらないかも。
まぎらわしいからその終助詞「かも」はやめなさい。
>>158 よく出来てるねえ。
ブルータス、お前かも
>>128 CommonLispをもっと勉強するとさらにいろいろ発見があるよ。
たぶんまだ普通の言語みたいに行単位で Lisp 関数を書いている頃だとおもうが、
そのうち、ふっと行じゃなくてS式としてとらえられるようになる。
それからがまた楽しいのだよ。
pythonのimportに相当するのはasdfだと思っていいのでしょうか? (require 'hoge) で呼び出すように変更する手間がめんどい
>>154 買ってきた、せっかく大型書店へ行ったので他にもかったら3万ほど消えてしまった。
>>154 嬉々として、平積みされてる実践Common Lispを撮影している、
おまいを想像してワロタ。
同士ダナ!
>>158 これは3000円以上の価値があるな。
オレにとってはだが。
めっちゃ、ありがとう!!!
で、実践Common Lispって買う価値あったの?
人による
まだ序盤の三章まできたところですがポールグレアムANSIコモンリスプより例が平易だと思いました。達人のひとには物足りないのかもしれません。
おもしろさはNorvigほどじゃないYO!
原文は読めるんだからちょっと高いかな そのぐらいの値段にならざるを得ないのは分かるが
英語すらすら読めない俺歓喜! 英語読めばいいとか言ってるムカつく野郎に追いつける。 日本語\(^o^)/ で、いつ届くんだAmazon
とっくにbk1から発送済なのにメール便でいつ届くか判らん俺、涙目
落ち着け まだ慌てるような時間じゃあない
例はともかく能書きが鬱陶しいのな wktkしてるおまいらも読み飛ばすと思うけど
柿の種のピーナツみたいでああいうの実に好きなんだが
178はピーナッツ嫌い。でピーナッツが多いからダメといっとるんだろう。 C言語撃退塾とか読ませたら許せなくてマジギレするタイプとみた。
鬱陶しいブログ書いてるのはお前らか キー!!
ごめん、ちょっとマジで意味わからん。ブログなんて持ってないけど……
184 :
175 :2008/07/27(日) 22:09:27
能書きが欝陶しいのか…。なんか萎えたのでキャンセルした。
なんかオススメある?
>>178
読み飛ばせばいいじゃん・・・
翻訳ものはたいていそんな感じでしょ 中はイイこと言ってるのに前置きに大演説が入るの
夏だなぁ。。。 おまえら、そんなことばかり言ってたら良書が出てきても日本語 を作ってくれる人がいなくなるぞ。 彼らの努力で出版までたどり着けて日本語で読めるってことのあ りがたさをなぜ理解できない?
夏だなあ 誰も日本語にケチはつけていない
>>184 そんなわがままな子には何も勧められません
190 :
175 :2008/07/27(日) 23:08:24
ちょっと勉強してみようと思ったのに週末オワタ\(^o^)/ なんなんだよー。ワクテカしてる人を見ると嫌がらせしたくなる人だったのか?
そんなにブレてどうすんの 中身が悪いとかいう話は出てないのに・・・
>>190 どんな本でもケチをつけようと思えばつけられる。それを踏まえて
匿名の所のレスを読んでたらいい。匿名は悪口を言うのが主流だか
らな。そのうちブロガーも書評を書くだろうから匿名よりそちらの
方が信頼できるだろう。どうせdanさんとか書くだろ。
>>188 わかっちゃいねーな。日本語にケチをつけなくても訳者が萎縮する
ようなことをいってれば日本語訳が公開されなくなるよということ
だ。丁寧に書かないと理解はできないかもしれないが、ここは数行
のレスにするほうが好まれるから、行数が6行以上つかうのは、控え
てるのだ。おまえら長文ウザいというだろ?
それに、日本語にケチをつけるとは書いてないんだが。
てか原文しか見てないけど悪くないよ 別の本で概略が頭に入ってた方がいいと思うけど
たった一言でキャンセルとか言う人が出たからでしょ。 潔癖症だなw
訳者が萎縮するとか心配しすぎ
だよな。いやよいやよも好きのうちっつーか、批判の多い本ほど売れてるもんだよ。
>>197 萎縮した訳者が書いたなら心配しすぎとも言えないだろw
書評なら原文があるんだから日本語版がなくてもできたはずだな やたらwktkしてたけど内容わかってなかったんかい
schemeを組みこんだemacsもどきなエディタの習作というのはたまに見ますが sbclとかを組み込んだemacsもどきの習作ってありますか?
>>201 sbclとかを組み込んだの意味がイマイチ把握できないが
common lisp で書かれたemacsもどきのエディターならある
>>201 CMLCL
> ・an Emacs-like editor implemented in Common Lisp.
sbclを組み込むってのは、そのemacsもどきを作る時sbclのソースか共有ライブラリを そのまま再利用するって意味だと思うぞ
組み込むってのは、 エディタありきで拡張言語として〜を って考え方なんだろうと思うけれど、 解答者はその言い回しにこだわることはないと思う。
変数のスコープが変な以外はemacs lispもcommon lispと大まかには一緒 とにかく長い名前変数名つければどっちでも動くと思う
それはない
>>206 lambda関数一つとっても使い方が違う
209 :
201 :2008/07/28(月) 16:00:12
ありがとうございました CMLCLというのは見付けられませんでしたがclimacsというのを見つけました 結構長続きしているプロジェクトなんですね こちらの環境はビルドできませんでしたのでコードを眺めていました emacs本家のCコードと違って吐き気がしないのがいいですね sbclとかを組み込むと云々というのは、 近代的で、マルチタスクの、高速なlispを備えたemacsクローンが欲しいってだけです sbclが例なのは、簡単なsumで比べてもelispとは段違いで、「elispもこんなのだったらいいのに」っていう願望です
Emacsのinfoでhyper specとか見れたらいいのになぁ html2texiとか作れるのかな? dpans2texiっていうのを見つけたけどftp鯖にデータが無くて使えないのに もっと早くからcommon lisp触ってればよかったよ‥ ここの人達でemacs使ってる人なら皆texi版のdpANS持ってそうだなぁ
>>211 > Emacsのinfoでhyper specとか見れたらいいのになぁ
当然だけど見れるよ
>>212 マジでやりかた教えてください
html2texiを見つけてきてhtml->texi, そこからmakeinfoでtexi->info
と変換しようとしてるんですけどもう@Iとか変なコマンドを生成しやがって
修正が大変です‥
これならperlか何かで専用の変換スクリプト書いた方がいいかってぐらいに
215 :
211 :2008/08/01(金) 22:08:59
>>214 HTMLのまま見るやつですか、w3mを入れれば使えそうですね
結局dpans3で検索したら新しい場所が見付かり
dpans2texiで難なくinfoが作れました
でもhyper specの方が新しいんですよね…
基本となるデータの構造を全てリストで保持した場合には、 そのデータへのアクセスをcar, cdr 等の組み合わせのみ記述すると 可読性が著しく落ちることが良く有ると思います。 その場合に皆さんは普通にマクロのみで対処しますか? それとも明示的に defstruct や CLOS を使いますか? カプセル化だけしたい所で CLOS を使うと なんとなく別の意味で面倒になった感じがします。 例えばリストだけなら copy-tree で済む所が copy constructor みたいなものを書くのが面倒だとか、 コード記述に関するオーバーヘッドが大きいと思うのです。 まあ MOP は知らないのがいけないのかもしれないのですが。
>>216 リストの欠点がひとつも書かれてないけど、なんで迷うの?
可読性の問題はマクロで解決したんでしょ
パフォーマンスについては何とも言えないし、とりあえずリストでいいじゃん
>>206 そうですね〜。確かに。
カプセル化のみが重要な場合に CLOS が必要になる事例があるのかな?
という別の疑問だったのかもしれません。
C++ でクラスを使う時はカプセル化の意味は大きいのですが、
Lisp ではマクロがある以上、CLOS の出番があるのだろうか?と言う事です。
まあ、CLOS を、マクロのみで記述している処理系では実は意味がない疑問で、
結局はリストとマクロのみでしょ。って言われそうですが。w
>>216 内容によるけど、defstructやCLOSを使いますよ。ランダムアクセスをさせるような
木の特定部分に直接いじるような使い方をする場合はリストは使わないですね。
CLOSと構造体のオーバーヘッドの違いは、同じプログラムを作ってtimeをとれば、
コンシングの多さも含めて分かりますから、実際にベンチをとってください。
CLOSと構造体、リストはどんな楽をしたいのか?何を重視するのか?で変わってきますね。
221 :
デフォルトの名無しさん :2008/08/02(土) 18:41:15
短いプログラムならともかく、普通アクセサを作るんじゃないの? それと、マクロマクロっていうけど、アクセサ程度はインライン関数を使う。 マクロだとfuncallが出来なくなるし、デバッグも面倒になる。 あと、処理系によっては構造体よりコンスを使ったほうが速い場合もある。 とりあえず、アクセサ作って実装を隠蔽しておく。実装はリストでやっとく。 で、あとでパフォーマンスが問題になったらプロファイリングして、インラ イン宣言いれたり、構造体等で置き換えたり、って感じ。
>>216 普通は
>>221 のいうようにリスト操作して必要な情報を取り出す小さい関数を
定義する。例が欲しければSICPでも見てみればいい。
>>216 ケイスバイケイス。そういうとこでセンスの良い選択をするのが腕の見せどころ。
つまり、一概に「こうするのが良い」という解は無い。
多くの変数に同一の値を代入したくてマクロを書きたいのですが、 どのように書けば良いのでしょうか 一つの値を返す式またはデータと変数のリストを引数にとり 実行すると式orデータの値が変数に代入される。マクロです。 (multi-setf 3 '(a b c d))とすると >>a 3 >>b 3 とできるようになるマクロです。
シンボルの値、ならリストにできるけど変数はリストにはできないです。 (defun multi-set-fn (value symbols) (dolist (sym symbols value) (setf (symbol-value sym) value))) これなら (multi-set-fn 3 '(a b c d)) とかけるけど設定できるのは 変数ではなくシンボルの symbol-value スロットの値。 (defmacro multi-set-macro (value &rest symbols) (let ((v (gensym "multi-set"))) `(let ((,v ,value)) ,@(loop for sym in symbols collect `(setf ,sym ,v))))) マクロにすると変数にも設定できるが、渡せる変数は関数のように実行時に 決定することはできない。 (let (a b c d) (multi-set-macro 3 a b c d) (list a b c d)) シンボルと変数の概念を混乱している予感がする。
>>224 (defmacro multi-setf (atom list)
(let ((foo (loop for p in list collect `(setf ,p ,atom))))
`(progn ,@foo)))
細かい問題点の検証はしてないよ。
あまりおすすめ出来ないな。
>>226 * (macroexpand-1 '(multi-setf (+ 1 1) (a b c d)))
(PROGN (SETF A (+ 1 1)) (SETF B (+ 1 1)) (SETF C (+ 1 1)) (SETF D (+ 1 1)))
T
似たような質問が前にもいくつかあったが、 普通なら関数とハッシュテーブルを使うところに なぜかマクロとsymbol-value等を使いたがるんだな。 他にも、リストを使うか構造体を使うか、とか、 やり方が2通り以上あると迷う人がいるのも気になる。
すいません 回答ありがとうございます。 じつは研究の過程で 100ぐらいの変数に同じ値を入れてある式に入れて結果の分布とかを求めなければ いけない事体に陥りまして、Lispは少年時代から触れている言語なので ぜひともLispで実装したく思いまして。 ありがとうございます。
>>229 なるほど、それなら、変数に配列を使った方が扱い易いと思うよ。
(setf arr (make-array 100 :initial-element 3)) とかすれば、いいし。
あるいは
(setf lst (make-list 100 :initial-element 3))とかね。
少なくとも、それだけ変数があるなら自動化が出来る方法を探さないと骨が折れるよ。
少年時代から…だと…。なんという期待の超新星。ついに次世代のLisper登場か。
より一般的に引数の固定を使ってやりたいな C++のbindとかschemeのcutみたいにさ (mapcan (bind #'setq _1 3) '(a b c d)) 標準でありますか? あと子供の頃からLispって羨ましすぐる…
>> 232 なんか知識と書いてるコードがちぐはぐね。
Lispでアプリケーションを作っている物としてはどんな物が有りますか。 EmacsはLispからXwindowsを呼び出しているのでしょうか? いまいちLispアプリケーションの配布方法がわからず困っています。
Lispだからどう、でなく、各処理系ごとに流儀が違うだよ。
clispです。 Ltkという物はMacOSXでも動くようなので導入したいのですが asdfやasdf-installの仕方がわからず困っています。 ネット上の情報もMacOSX10.5対応の物かどうかが定かでないのですが、 Clispでのasdf系のインストールでおすすめのサイトをよろしくお願いします。
asdfはできましたがasdf-installが難しくて挫折しました。 ありがとうございました。
もしかしてasdfさえ有ればasdファイルを手動でとる事を我慢すれば良いのでしょうか そうするとasdf-installは不要なので大丈夫そうです。 ありがとうございました。
>>224 代入される方(リスト)を第一引数にして欲しいなあ。
242 :
デフォルトの名無しさん :2008/08/04(月) 15:54:41
>>235 の言う「アプリケーション」って、
「GUIアプリケーション」に限定されてるの?
X Windowうんぬんのところは何を言おうとしているのか分からない。
エンドユーザーにも受け入れられるGUIアプリケーションを作りたかったのです。 通常のアプリケーションと同じように簡単に導入できるアプリケーションを作成したいのですが。 Lispでは方法がわからず困っていました。C言語ではGUIアプリケーションは作る事が難しい と聞いていたので、Lispでも同じなのでしょうか? Lispで作られたGUIアプリケーションはどんな物が有るか調べた所楽譜作成ソフトなどが 見つかり少し安心しているのですが、ああいった物はどのようにしているのでしょか?
ひみつです
GtkやQT辺りをCで叩けるようになってから出直してこい。 もしくはtkで我慢汁
Windowsだと洛陳だよ
LispとかUnixはWeb系ってかんじですか?
楽譜作成ソフトと言われてもなぁ。McCLIMとかのCLIMを使ったやつかLispWorksのCAPI製のやつか…。 Lisp用のGUIライブラリを備える処理系ACL,LispWorks,MCLとかならそれなりのGUIが作れる。 LispでもOpenGLやCLX、Win32 APIを直接叩くとCとそんなに手間はかわらない。 が資料はメジャーな言語にくらべると少ない。 名前を聞いても想像できないなら、いきなりLISPでGUIに挑戦するのは初心者にはお勧めできない。 資料の少ないからどーでもいいところで詰ってしまう可能性が高い。
英語ドキュメント読めないとすぐに手詰まりだろうしな。
>OpenGLやCLX これは昔使った事が有ります。(UNIXとMac意外はあまり詳しくないのでWin32 APIはわかりません) MacOSXだとAPIはCocoaになると思うのですが clispなどの処理系でもCocoaは呼び出せるのでしょうか? OpenMCLを使うしか無いのでしょうか? それと、 >LispでもOpenGLやCLX、Win32 APIを直接叩くとCとそんなに手間はかわらない。 これはどの処理系でも良いのでしょうか?
CommonLispで改ページはどのようにすれば良いのでしょうか?
253 :
デフォルトの名無しさん :2008/08/05(火) 13:06:11
Allegro common lispのフリーのダウンロードしてみたんですが使い方がさっぱりわかりません。 本はCommon lisp入門っぽい名前のやつとOn LISPしか持ってないです
そうですか。
改頁文字を出力するということだと、 (print #\Page) (format t "~|") なのかもしれない。
>>252 ,
>>256 ありがとうございます。
>>256 処理系はclispなのですが、(print #¥Page)とすると
[2]> (print #¥Page)
#¥Page
#¥Page
となっておしまいなのです。これはどうしてでしょうかよろしくお願いします。
求めているのはUNIXのclearの様な機能です。
258 :
250 :2008/08/05(火) 14:09:05
OnLisp,CommonLisp入門などの本が手元に有るのですが、 どちらもCUIアプリケーションの作製法は書いてあるのですが GUIアプリケーションの作製法などについて触れている本が有れば 紹介お願いします。
260 :
250 :2008/08/05(火) 16:10:02
>>259 それはそのサイトの内容をと言う事でしょうか?
以前からLispをもっと活発にする活動をしたいと思っていたのですが
そのようにできたらうれしい限りです。
wikiの内容じゃなくて、wikiから辿れるページを纏めることになると思う
262 :
250 :2008/08/05(火) 17:57:45
まとめるためにWikiページを作成したく思います。 何かベストな名前が有りましたらよろしくお願いします。 JCLikiだとあまりにも芸がないので
264 :
250 :2008/08/05(火) 18:36:11
そうですか・・・・
ありがとうございます。
スレ独自の物に手を加えるのは私は心配なのですが、
2年前にじぶんで作った
`(CommonLisp Wiki)という全く何もおこっていないサイトが有ったのを
思い出したのですが、そちらに情報を蓄えて行く訳にはいかないでしょうか
全く何もないですが以下URL
http://www6.atwiki.jp/commonlisp/
自分である程度まで育ててから他に人にも支援を頼むって流れは良く見るが 全部他人任せワロスww
267 :
250 :2008/08/05(火) 18:55:09
>>256 スマソ、トップページのメッセージは気にしないでください。
あれは開発当初はもっと熱心に改造して行くつもりだったので
あのような文章に成っています。
今リアルタイムでQ&Aページを作成してるので気になる点など有りましたら
よろしくお願いします。
>>264 fdiary.netに作ったものだが、どこでまとめても大丈夫だよ。lisper pagesにリンクを貼っ
ておけばいいよ。fdiaryのlisp wikiは誰がどのように使おうと構わないですから。スパム
はダメだということと、lispとちゃんとつながっていることが前提だが。
fdiary.netは昔よりサービスが悪くなってるようなので、より使い勝手のよいところを探
すのもよいかもしれない。昔はフランスに移籍した人が管理をやっていたけど、そのこ
ろは比較的速い対応をしていた。かずひこさんっていったっけな。
あそこはmatz lispの本拠が運営しとるから、もう少し頑張ってもらいたいんだけど、運営
がいまいちになってきているのをみていると大丈夫なのかな?という心配はある。
Norvig国のgoogle sitesもいいかもしれないな。
269 :
250 :2008/08/05(火) 18:59:58
わかりました。 がんばって開発してみます。
お前ら… あんまり変なことするとPythonみたいに妨害されるぞ…
>>267 目標も同じで、既に存在している、機能的にも似た物があるのに、
「スレ独自の物に手を加えるのは心配」とか、お前さんにしか理解できない理由で、
自分の方を使ってくれ、っていうのは、他の人には「(゚Д゚)?」って感じだと思うぞ。
現状だと子供のわがままにしか見えん。
他の人にも納得できるだけの相応の理由があって、
それなりの行動力があると思わせる言動をしていれば、
>>265 みたいに皮肉られんよ。
272 :
250 :2008/08/05(火) 19:21:53
わかりました、
確かにそうですな、そちらの開発に参加させて頂きたく思います。
たった今先ほどのWikiは削除させて頂きました。
ご指導ありがとうございました。
>>270 詳細は知りませんが私は全くおこらないタイプなので無害ですよ。
殴られてもおこらないぐらいです。
>>272 270は他言語圏にふれたことについて、危険だよといってるだけだから、気にしなくていい。
>>257 printじゃなくて、princでした。
clearということになると、
ncurse等を使うことになるのかも。
275 :
250 :2008/08/05(火) 19:48:04
ちょっ誰ですか? 親切にも'(CommonLisp Wiki)をLisperBlogに登録してくださっていたのは ありがとうございました。 自分で削除しておきますね。
276 :
250 :2008/08/05(火) 19:50:29
と思ったが編集できない 変更お願いしますね
>>276 login: guest pass:cl
だよ
278 :
250 :2008/08/05(火) 20:42:56
ありがとうございます。 手始めにClispのmacOSXへのインストールを書かせて頂きました ご確認よろしくお願いします。
279 :
250 :2008/08/05(火) 22:12:01
L-99の和訳をしたいと思うのですが 著作権的にどうなのでしょうか?
L-99のオリジナルは、P-99というPrologの問題集なので、 オリジナルのP-99の作者の先生に確認することになるのでは ないかという気が…。 L-99はなんとも微妙な気がするので…。
281 :
250 :2008/08/06(水) 10:39:33
>>280 ありがとうございます。
ところでasdfの使い方ですが
.clisprc にasdfのロードとasdファイルのディレクトリ設定は書いてあり
clisp内では確かにasdfは動作しています。
しかしシェバングしたファイルを作成して実行するのと
*** - READ from #<INPUT BUFFERED FILE-STREAM CHARACTER #P"./test.l" @2>: there
is no package with name "ASDF"
と出てしまいます。
ファイルの先頭に
(asdf:oos 'asdf:load-op :ltk)
(in-package :ltk)
とかいているのですが・・・・
asdfの話題が出ているようなので私も cl-whoを導入したのですが、サイトのサンプルを実行して見たいのですが *html-stream*なんて無いというエラーがかえってきてしまいます。 よろしくお願いします。 環境はMacOSX10.5です。
cl-whoは*html-stream*と関係なかったような? 他のパッケージからcl-who使っていたりしない?
ええっと・・・・
(asdf:oos 'asdf:load-op :cl-who)
(in-package :cl-who)
実行後
cl-whoの公式サイトっぽい所の
(with-html-output (*http-stream*)
(loop for (link . title) in '(("
http://zappa.com/ " . "Frank Zappa")
("
http://marcusmiller.com/ " . "Marcus Miller")
("
http://www.milesdavis.com/ " . "Miles Davis"))
do (htm (:a :href link
(:b (str title)))
:br)))
というサンプルコードを実行すると
*** - EVAL: variable *HTTP-STREAM* has no value
The following restarts are available:
USE-VALUE :R1 You may input a value to be used instead of *HTTP-STREAM*.
STORE-VALUE :R2 You may input a new value for *HTTP-STREAM*.
ABORT :R3 ABORT
というエラーが・・・これはサンプルコードはインタプリタ向けではないのでしょうか?
何となくそのような英語が上に書いてある気がします。
一番先頭に >Let's assume that *HTTP-STREAM* is the stream your web application is supposed to write to. って書いてますね。 出力したいストリームの名前の例として*http-stream*を使ってるだけではないかと。 とりあえず、*standard-output*とかにして動作確認すれば良いんじゃないしょうか。
g000001さんがアナウンスしたけど、ecl 0.9lって、maximaのビルドが できるようになったね。その他は、GCとスレッドインタプリタのパフォー マンス改善のようです。 ecl ってwindowsで動かんかったっけ?
>>285 できました。
ありがとうございます!!!
やっぱり英語はできないと苦労します・・・・0rz
288 :
287 :2008/08/06(水) 18:17:09
あっつ私にも
>>281 と同じ感じの事がおこりました。
250さんとあわせて回答お願いします。
291 :
287 :2008/08/07(木) 12:40:36
>>289 参照するのはCLISP 用コアファイルのビルドスクリプトという所でしょうか?
292 :
287 :2008/08/07(木) 13:02:23
293 :
287 :2008/08/07(木) 14:21:14
いちおうできましたが -M で指定する際に /User/hoge/clispinit.memと絶対ディレクトリで呼び出しているのですが こうするとそのようなファイルは有りませんとシステムから opt/local/lib/clisp-2.43/base/lisp.run: operating system error during load of initialization file `/User/hoge/clispinit.mem' [spvw_memfile.d:927] errno = ENOENT: No such file or directory. という怪しいエラーが出てしまいます。 よろしくお願いします
素早い返事ありがとうございます。
>>293 /User/→/Users/ってヲチじゃないでしょうね。
>>282 > 環境はMacOSX10.5です。
298 :
293 :2008/08/07(木) 16:39:08
できました。 恥ずかしい・・・・orz
CommonLispにはPerlやRubyのような www::mechanizeのようなブラウザの動作をエミュレートするような ライブラリは無いでしょうか
clnuplotの使い方がわかりません (clnuplot:write-plot (clnuplot:make-plot :lines-points '((1 2) (2 2.5) (3 3.1) (4 3.4) (5 4.2)) :pointsize 2.0 :linewidth 3.0 :filename "simple-example" :xlabel "Bin Number" :ylabel "Dance Partners" :x-coord #'first :y-coord #'second :title "Bin Number versus Dance Partners" :ymin 0.0) :pdf) を実行してみても *** - FUNCALL: undefined function PATHNAME-NAME+TYPE The following restarts are available: USE-VALUE :R1 You may input a value to be used instead of (FDEFINITION 'PATHNAME-NAME+TYPE). RETRY :R2 Retry STORE-VALUE :R3 You may input a new value for (FDEFINITION 'PATHNAME-NAME+TYPE). ABORT :R4 ABORT と言うエラーが出てしまいます。 clnuplotは参考サイトが極端に少ないのでよろしくお願いします。
>>301 clnuplotダウンロードしてみたけど、その関数は別のライブラリで定義されてるみたいだよ。
cl-containers,cl-mathstats,metabang-bind,trivial-shell が全部いると思う(clnuplot.asdより)。
ちゃんと入れてるなら他が原因かも。
わざわざダウンロードして頂いたなんてありがとうございます。 入っていますね・・・・・・ ロードするときは(asdf:oos 'asdf:load-op :clnuplot) だけで良いのでしょうか
304 :
デフォルトの名無しさん :2008/08/07(木) 23:36:59
305 :
303 :2008/08/08(金) 12:44:35
いやあまりにも教えてちゃんだからw
307 :
303 :2008/08/08(金) 13:23:39
すいませんでした。 他の方の環境の方では無事に動作しているようなので私の システムに何か問題が有るかもしれないのであきらめます。 ありがとうございました。
漏れも追試してみたけど、 (asdf-install :clnuplot) だけでインストールできたよ。 ただ、自分が使ってる環境を調べて、きちんと設定しないと、上手く動かないっぽい。
asdf-install:installだった
310 :
303 :2008/08/08(金) 16:19:01
>>308-309 有用な情報ありがとうございます。
>自分が使ってる環境を調べて、きちんと設定しないと
これはclnuplotを設定するという事ですか?
それともasdf-installについてという事でしょうか?
よろしくおねがいします。
>clnuplotを設定するという事 です。 asdf-installがちゃんと動いていれば、インストールだけは簡単。 あきらめたそうなので無駄な話だったけど。
312 :
303 :2008/08/08(金) 17:06:26
いや、あきらめる事でこのスレの皆さんのお目汚しに成らないのなら とおもったので。 clnuplotを設定するという事ですか、その情報はどこでお知りになりましたか? もしよろしければお教え願います。
次は「どうしてそれを調べようと思いましたか?」かな?
314 :
303 :2008/08/08(金) 17:54:21
>>313 いえいえ、スレ汚しに成っているようですね。
やはりあきらめるしかないですね
googleでも全く引っかからないので
ありがとうございました。
なんか難しいもののような誤解を与えてしまったようだけど、 clnuplotの設定というのは、呼び出すgnuplotの場所等を 大域変数で持っているので、それを環境に応じて変更しないとね、という くらいのものです。 その情報はソースに書いてありました。 というか、これは、ドキュメントが少ないので、導入の敷居は高いかも。
316 :
303 :2008/08/08(金) 22:11:09
>>315 よくわかりました。
おつきあいいただき本当に感謝しています。
ありがとうございました。
わからない五大理由 1 読まない 2 調べない 3 試さない 4 理解力が足りない 5 人を利用することしか頭にない
>>317 Lisp に限らず、最悪の場合ソース読めってのは今でも変わってないから、
基本的には賛成なんだが………
とことん初学者の場合、どっから調べていいかわからない場合も多々ある。
Unix で man よめって言われても, 「man って何」くらいは教えてもらわないと、
なすすべがない。 実際、俺も Unix 触り始めたときそんな状況だった。
Lisp 系言語の場合、「man 読め」以前のドキュメントが少なすぎるのも事実
打と思うんだが…
6 言われたことは試さず、質問を返す
あんまりいじめるな といいつつ 7 切羽詰まってパニックを起こしてから質問
>>317 ,319,320
,性格の悪いことばかり言わない。なんだか陰気なのよね。雰囲気悪くなるから、
スルーしてくれたら助かる。
>>318 そこでコンソールからmanと打ち込んでみるのが好奇心だと思うのよね。
>>321 > スルーしてくれたら助かる。
誰が何をスルーしたら誰が助かるんだ?
「こういうの俺が嫌だから黙れ」って方がよっぽどネチネチ感漂ってるけどな。
>>321 そんなこと書くより、雰囲気の悪いレスはスルーして、自分が雰囲気の良いレス
をするほうが効果的だと思うよ。お互い、芸風の合わない人はスルーで良かろう。w
>>316 なんだか嫌味を言う連中もいるようだが、気にせずに気楽に書き込んでください。
一部の連中を懸念してるが、
嫌味っぽくなると初心者さんたちは何も聞けなくなるのではないか?ということだ。
嫌味ったらしい事を言う背景には単なる初心者いじめではなくて、
ストレス発散に使ってる印象もある。common lispの立場をよく考えてもらいたい。
一人でもどんな初心者でも馴染めるように支援していきたいからね。甘えん坊の初心者
だろうが跳ねっ返りだろうが関係ないどちらも大切だ。
LL系のようにほっといても初心者が使いにくる言語なら嫌味を言う連中は勝手に言っとれ
だが、common lispの状況は死活問題だよ。状況を踏まえて欲しいのだ。独学でcommon
lispを学べる人ってそんなにいないでしょ?
一部の連中には自ら首を閉めるようなおろかな事をしないでくれといいたいのだ。
327 :
デフォルトの名無しさん :2008/08/09(土) 17:58:03
>>318 > Unix で man よめって言われても, 「man って何」くらいは教えてもらわないと、
> なすすべがない。 実際、俺も Unix 触り始めたときそんな状況だった。
ググりもしないのに質問とな(AAry
man 読む unix に一致する日本語のページ 約 212,000 件
man 使い方 に一致する日本語のページ 約 1,040,000 件 関連検索: linux man 使い方
>>327 SunOS-3.5 って知ってる? 当時 Sun3 にのってた OS のバージョンなんだが
ググる? UUCP でバケツリレーやってるときに google なんかねぇよw
まあ、初心者への説教は、Common Lispしらなくてもできるし、 どうしても、書き込みの量が増えるんじゃない? 自転車置場の議論とかそういうのと一緒で。 どっちかっていうとCommon Lispの情報が少しでも増えるような記述がありがたいね。
マニュアル読めよ馬鹿が
>>330 ハードとかOSのインストールマニュアルは手元にあったが、off-line の man pages は
新幹線で 3時間ほどかかる本社にしか存在していなかった。
言いたいことは分かるんだが、何でもググれじゃ話が進まない場合もあるってことで…
>>329 それって、本当に害人だ。<common lispは知らないが説教だけする。
答えが得られる保証はないが、分からないことがあれば気軽に聞いてください。<初心者
clnuplotのインストール方法を一から教えてください。
>>333 恐らく元質問の人とは別の人だと思うんだけど、
>>311 にも書いたとおり、asdf-installさえ動作していれば、
replに
(asdf-install:install :clnuplot)
とタイプするだけでおk
そして、環境によってちょっと設定する必要あり。
>>331 だからなに?
そんな時代じゃねーだろ?
>>331 こういう年だけ食ってる初心者が一番手に負えないというか害悪だな。
「そう言ってるおまえらは初心者のために何かしてるのか」って、 聞かれてるんだと思うんだが?
ここって初心者のために何かするためのスレだっけか?
>>334 それはもう読んだよ。環境によって何をすればいいの?
341 :
デフォルトの名無しさん :2008/08/10(日) 02:03:27
>>337 あのさー
どの世界でも「初心者に厳しく」は常識なんだよ
やさしくするのは入門させるための建前
初心者に優しくしても「入門した気になった(でも一人じゃ何もできない)」 って人が増えるだけかも。厳しくしたほうが良い子に育つこともある。
>>326 みたいなアホからゆとり教育が生まれるんだな。
こういうところでゆとり教育のせいにする人って必ずでてくるけど あれも仕様はそれなりに評価できるし、タコな環境にグダグダの実装でこうなっちゃったんだよなぁ
>>344 初期の環境の状況は影響でるね。ubuntuでのcommon llisp環境導入のように
クリック一発ならば大丈夫だが、windowsでのlisp環境はかなり悪いからね。
windowsメインで利用するようなlispハッカーはいないから整備は進まない罠。
macosxへのインストールも難しくはないが、windowsだけはね。だめだね。
>>342 私としては方針は決まってるが、無条件に厳しくあたるというのは教える側の思考停止状態
を表している半面、無条件に優しくするのは依存性を高める危険がある。これは極当たり前
の事。そこにはトレードオフがあるし、状況判断ができなければ育つものを枯れさせてしまう
だけだ。
匿名だから分かりにくいが、情けは人の為のあらず。
2ちゃんでこのことわざが意味するところは、違った新しいことを始めたときにアドバイスをもら
う場面に役立つことだと思う。すべての面で自分で調べて、自分で考えて、悩んだ末で教えて
もらうと言う判断を出来てるような自分への厳しい心を持ってる人間はわずかだと思う。それを
踏まえた上で、利用していればいいのではないか。ubuntuではないが助け合いの精神は持っ
ておいた方がいいと思うね。
>>340 僕はそのパッケージを利用したことがないから分からないけど、環境によって何をすればい
い?と聞くならば、あなたの利用している環境をちゃんと書いてみないとより具体的なコメント
は期待出来ない。つまり、どこまで本気に導入を試みてわからないのか聞いてるの
だ。環境が分からないままでいろんな事を想定して、そのすべてを答えるような人がでて
くることは期待できないぞ。
聞き方や聞くタイミングで少々気になったが、導入を本気で試みているより、住民を試してい
るような印象をもったことかな。evilじゃなくて純粋に聞いてるなら気にならないが。
Don't be evil.
お前2chは初めてか?力抜けよ
「情けは人の為ならず」だね。
>>346 はふつーにいい人すぐるが、煽られまくって変な反動が起きませんように。
CLtLかよ
ecl 0.9l入れてみた。 明らかにメモリ利用効率良くなってておーって思ったんだけど REPL起動したときのバージョン表示が良く見たら0.9iのままで なんというかポルナレフ状態
うちは、ちゃんと0.9lって表示になってるなあ
353 :
デフォルトの名無しさん :2008/08/11(月) 00:58:17
lispでGUI使ったりした普通のそソフトとととこにつくたことあることきょしぃこと
>>351 Windows用(MSVC用)のmakefile中のバージョンが0.9iになってた。
>>353 英語でOK
Lispで、秀丸みたいなGUIのエディタとか作れるものでしょうか? できるとしたらお勧めの処理系とかありますでしょうか?
エディタを新しく作るより前に既存のものに貢献してほしいな。 Emacsとか、Windowsならxyzzyとか。 処理系が自分で選べないならまだ自作ははやいと思う。 CLISPでWin32 APIをFFIで呼ぶか、ECLとCで作るか、どっちにしても 秀丸みたいなエディタを作ろうとすると、Cでエディタが作れるくらいの知識が居る。 LispWorksのエディタクラスなら10行くらいでEmacsライクだけど 日本語のサポートはまだ弱いし。
>>356 それに関して思い出したので、私も質問させて下さい。
>CLISPでWin32 APIをFFIで呼ぶか、
の所なのですが、私はMacOSX環境なのでWin32を使う事ができないのですが
MacOSX環境でCLISPから呼び出せるものを教えて頂けないでしょうか
は?
360 :
359 :2008/08/12(火) 21:09:47
なんか俺のレスも迷走してるな。すみません、無視してください。('A`)
361 :
357 :2008/08/12(火) 21:36:21
GUIの説明が出る際に毎回win32 APIとwinodows環境を基本と したレスばかりなのですが家にはUNIXとMacOSXとLinuxしか無いのでwinodowsは 触った事も有りません。 そのためどのような環境がUNIX系では使えるのかを教えて頂きたかったのです。
OpenMCLからCocoaを呼ぶのが良いんじゃないかな
煽りっぽいが一応マジレスしておこう。↓を調べてみたらどうだろう。 LTK(Tcl/Tk)、CLX(X)、CL-OPENGL(OpenGL)、CL-SDL(SDL) あとはGTKとソケットで通信するやつとかはタフだったな。
364 :
357 :2008/08/12(火) 22:06:02
>>362-363 ありがとうございます。
煽りでは有りません、マジレスありがとうございます。
調べてみます。その中ではどれがあなたのおすすめですかね?
ブラウザとか作りたいのですが
>>364 362-363じゃないけど
WEBブラウザ作るのならCL-OPENGLとCL-SDLは外した方がいい、あとLTKは向かなそう
X11ならCLXを選択するのが良いのかもしれないが化粧をさせたいならGTK経由が好いと思うが自分はさわったことないのでワカリマセン。
Webじゃなくグラフィックスのブラウズとかって意味だったらGLやSDLの方が扱いは簡単かも。
というか
>>363 が書いてくれたGUI関係のライブラリの元が(文中の括弧内のもの)どんなものなのか調べれば自分で選択できると思う。
>>357 とりあえず、使ってるOSのフレームワークのことも知らない位なら、
既存のブラウザコンポーネント使って、独自UIを被せる位にしといた方がいいぞ。
GeckoとかKHTMLとか。MacならWebKitとかなのかな。
あまり知識のない状態で、下手に人気のある物作っちゃうと、
特にブラウザとかはセキュリティホールとかが恐すぎる。
単に知的好奇心を満たすため、とかなら大いに応援するんだけど。
367 :
357 :2008/08/13(水) 00:42:13
>>366 一応Cocoa-Rubyなどでばりばり動くブラウザやテキストエディタ、グラフ作成ソフト
などを作った事は有ります。
ですが、Lispでやってみたかったのです。Lispは一番好きな言語ですから。
何しろ調べてやってみる事にします。ありがとうございます。
>>367 どこかわすれたけど、OpenMCL(Clozure CL)でワープロを作って公開しているところ
があるよ。MacでGUIならOpenMCLをお勧めするよ。
GUI関連のサンプルもついているし。
370 :
250 :2008/08/17(日) 16:38:13
Allegro Common LispのGUIのプログラミングがまったくわかりません みなさんはどうやって覚えましたか?
覚えてません
>>370 なんと言うか'覚えられません'だとLispと言うより
プログラミングについての話に成るような気がする。
やっぱり他の言語と同じようにサンプルコードとかを読みながら
やるのが良いんじゃないかな?
373 :
370 :2008/08/17(日) 17:31:57
言葉足らずですいません Allegro Common LispでのGUIのサンプルコード自体が見つからなくて困っています
376 :
250 :2008/08/17(日) 19:29:39
レスしてくださった方ありがとうございます。 イベント駆動型はまだ未経験ですがチュートリアルやpdfを参考にしてがんばりたいと思います
>>376 Lispあんまり詳しくないけどAllegroのアプリはそんなに面倒じゃなかったよ、例の学習者向けエディションでもちゃんとFormでポイポイつくれちゃうので拍子抜けした。(もちろんロジックは慣れないLispでちょっと苦労したけど)
自分の道具作るのに非常に慣れてきて個人で購入したいんだけど全部franz経由でしか買えないのかなぁ?
ショップ売り無いのだよね?
折角DSLが楽に作れる言語仕様なんだから GUI構築用のDSL作ればいいのに
379 :
デフォルトの名無しさん :2008/08/18(月) 20:58:22
>>377 Freeエディションのヒープ制限がきつすぎてお試しにすらならんので、
安いなら買ってみようかと思ったんだけど、値段の情報を見つけられんかった。
個人には売る気無いのかな
franz経由っていくらでした?
>>379 4年前の価格だけど、一応参考までに。
> 717 名前:デフォルトの名無しさん:04/06/29 08:23
> 先日のFranzセミナーでもらった価格表によると…
>
> Windows/Linux/FreeBSD/MacOS X版
> Professional 750,000 (395,000)
> Enterprise 1,400,000 (795,000)
> Platinum 2,000,000 (895,000)
>
> UNIX (Sun, IBM, HP, Compaq)版
> Professional 1,300,000 (520,000)
> Enterprise 2,000,000 (1,040,000)
> Platinum 2,750,000 (1,200,000)
>
> …高い… orz
> 718 名前:717:04/06/29 08:24
> あ、括弧の中はアカデミック価格ね。
381 :
デフォルトの名無しさん :2008/08/18(月) 22:39:25
>>380 ありがとう。
ド、ドル?円だよね。あはh高い...唖然
>>380 それなら、放送大学に入って、student editionのほうがいいんじゃないか?
ドル建てで5万円ほどだったから
LISPですら自作できない無能にはちょうどいい値段
委員会で設計した言語が「まともな言語」で 独自に設計した言語はダメだと思ってるらしい。 だから、自作といっても与えられた仕様を満たすことしか考えられないわけだ。
↑マジで何を言いたいのか全然解らん、頭の悪い漏れの為に誰か解説してくれ
最も致命的なバグは数学で説明できないのだー
では算数で説明してくれ
損切りか塩漬けか
sbclでいいやん
390 :
デフォルトの名無しさん :2008/08/19(火) 22:20:08
sbclはmacだとthread使えないじゃん clozure clに落ち着いたけど 比較するとallegroやっぱ爆速だな。貧乏人なのであきらめるしか
おれは社会人だから大学院に入りなおして学割でallegro買うぜ
貧乏人の味方Linux!!
そうかな。Linuxは機械を選ぶからなあ。 値段的コストから見れば貧乏人向けではあるが、 きちんと選ばないと逆に高く付いてしまう。 時給換算的に。
俺時給換算で最低時給未満の生産性しか無い人間ですから大丈夫ですよ
395 :
250 :2008/08/24(日) 08:58:37
(defparameter *fn* (let ((count 0)) #'(lambda () (setf count (1+ count))))) これはクロージャの効果で*fn*を呼び出すたびに無名関数内のcountの値が1ずつ増えていくのはわかるのですが CL-USER> (funcall *fn*) 1 CL-USER> (funcall *fn*) 2 この無名関数の部分を普通の関数に置き換えて、処理自体は外に記述した場合もその関数はクロージャとして働いてくれるのですか? 実践Common Lisp66ページでのことです。Lisp始めたばかりで自分で試してみたくてもうまくいきません
クロージャはクロージャ、 クロージャ以外のものはクロージャではない。
>>395 こういう意味ならできる、が答かな。
CL-USER> (let ((count 0))
(defun count-up ()
(setf count (1+ count)))
(defun show-count ()
count))
CL-USER> (count-up)
1
CL-USER> (count-up)
2
398 :
250 :2008/08/24(日) 12:32:30
CL-USER> (defun cplus () (setf count (1+ count))) CPLUS CL-USER> (defparameter *fn1* (let ((count 0)) #'cplus)) *FN1* CL-USER> (funcall *fn1*) ; Evaluation aborted すいませんどこがエラーになってしまったのでしょうか…
立派な仕様書があるから本なんて買わなくていいし質問に答えなくていい罠
(defmacro name (vars form &body body) ...) てな, form を作りたいんですけど form の評価結果が, vars で指定された書く変数に代入される ような, 定型マクロってどっかに転がってませんか? 気持ちとして, やりたいことは vars が '(a b c) で form が (1 2 3) を返す場合 `(let ,(mapcar #'fun ,vars ,,form) ;form の前の 「,,」 の気持を分かって ==> (let ((a 1) (b 2) (c 3)) ... と, 展開したい
destructuring-bind?
>>400 destructuring-bindかな
こんな
(destructuring-bind (a b c) (list 1 2 3)
(+ a b c))
=>6
>>398 クロージャ理解の壁だね。やりたい事はわかるが、おしい。もう一歩。
ここで変数のスコープとかの理解が加われば先に勧めるよ。
クロージャは変数をキャプチャするが、それは「クロージャが作成された」環境の変数なんだ。
cplus が作成されたときに参照している count はグローバル環境の count で、let で作った束縛じゃない。
したがって、後から関数の外側で let で束縛を作っても意図した動作にはならない。
この場合は count がスペシャル変数としてグローバル環境に定義されていた場合はまた話が違うんだけどね…。
>>402 おぉ! そう言えばそんなもんがあった!ありがと
>>398 OK、
>>403 も指摘しているが、
>>250 が何かを分かっていないことは分かった。
多分、レキシカルスコープが文字通り、「字面どおりに動作する」、ように作られている、
ってのが分かっていないんだと思う。レキシカルスコープを理解するのが先で、
それを実現するためにクロージャーがある、と思えばいいと思う。
>>399 黒田さん乙。そんなことができる立派なエンジニアが、残念ながら少ない、
ということは無視しないでくれよ。
定義された時点でのスコープの定義を取り込むなんて Cでいえば関数というより構造体みたいなイメージになってしまう Body内を走査してbody内で見付からなければ環境から参照を取り込むみたいな ますますよくわからなくなってくるわ
>>406 構造体というか、クラスとクロージャがよく似ている。
オブジェクト指向の変な例え話よりも、クロージャを理解するといいよ。
クロージャってどうやって勉強したらいいの? 掲示板やBlog以外で見たことないんだけど 情報学科だと常識?
>>408 簡単でいいんで、LispでLispを実装してみるとすぐ分かるかもね。
「環境」というとわからないけど、所詮はコンピューター上のものだから。
そもそも、ものすごく特殊な処理をしてる訳じゃないし。
LispをLispで実装とな!! そんなのloopマクロをemacs lispで実装できる程度しかlispの経験ない俺には無理だ hogehoge schemerシリーズ、HtDP、Practical Common lisp、sicp、OnLispを読み通してから頑張ります
>>409 ,410
ありがとうございます。
lispの勉強もしてみます
schemeのmatch-lambdaってCommonLispにないのかな?
CLiKiのlibrary-listを翻訳しているのですが asdf-worldのregistries ("worlds")の部分がわかりません。worldsと言うのは 何かの用語でしょうか? UNIXのmake worldの様に特殊な用法ですか? よろしくお願いします。
"version controllable registries"の名前。
使う場面が多かったので作ってみました。 roundの拡張で第二引数に四捨五入する桁を入力すると その桁で四捨五入してくれます。 修正すべき所・つけるべき機能をご指摘願います。 (defun my-round (x y) (cond ((<= y 0) (format t "*** - MY-ROUND: The second-paramerter must be more than 0 not ~A~%" y)) ((= 1 y) (float (/ (round (* x 10)) 10))) (t (float (/ (round (* x (expt 10 (1- y)))) (expt 10 (1- y))))))) エラーメッセージの表示方法がわからなかったので手動で打ち込んだため 横に長いレスに成ってしまい申し訳有りません。 よろしくお願いします。
別にyは負数でもよくね?ってことで (defun my-round2 (x y) (float (* (round x #1=(expt 10 y)) #1#))) (my-round2 95.6453 -3) 95.645 (my-round2 95.6453 -2) 95.65 あとCLに限らずroundは四捨五入とは違う(丁度真ん中は近い方の偶数になる)から 注意してね。 (round 2.5) 2 (round 2.6) 3 (round 3.5) 4
あと俺が題意を読み間違えてなければ
>>417 は*と/の位置とか
1-とか色々間違ってね? ということに今更試してみて気付いた。
あとroundは多値を返すからそれにあわせて多値を返すようにしてもいいかもね
>>419 clispでは正常に動作しているのですが・・
0.876を小数第二位で四捨五入する場合
(*0.876 10)=8.76
(round 8.76) => 9
(float (/ 9 10)) => 0.9
と言う順番という事なのですが
422 :
417 :2008/08/27(水) 23:25:56
>>421 了解
yは少数第y位だったんだな。
こっちのは正負が逆だ。たとえば100の位にまるめる場合
(my-round2 6543 2)
6500
小数第一位にまるめる場合
(my-round2 7.65 -1)
7.6
423 :
418 :2008/08/27(水) 23:27:14
418だったorz
>>422-423 roundの問題を解決するため正確な四捨五入をする関数を作っています。
初心者が自力でがんばるチャンスだと思うので、諸先輩がたしばしお待ち頂けませんか?
自力でがんばる精神を鍛えたいので・・・よろしくお願いします。
;;小さい方の10の倍数に巻く (defun role (x) (let((p 1)) (loop (if (and (<= (expt 10 (1- p)) x) (< x (expt 10 p))) (return (expt 10 (1- p))) (incf p 1))))) ;;正確な四捨五入の作成 (defun justice-round (x) (let ((i (mod (* 10 (float (/ (truncate (* x 10)) 10))) (role (* 10 x)))) (l (float (/ (truncate (* x 10)) 10))) (j (float (truncate (* x 10))))) (cond ((< x 1) (if (<= 5 j) (+ 1 (- l (/ j 10))) (- l (/ j 10)))) ((>= x 1) (if (<= 5 i) (+ 1 (- l (/ i 10))) (- l (/ i 10))))))) こんな長い時間でこんな物しかできずすいません。 デバッグに予想外に時間がかかってしまったので。 一応 >(justice-round 0.99) 1.0 >(justice-round 0.33) 0.0 >(justice-round 1.99) 2.0 >(justice-round 1.34) 1.0 と一応正確に小数第一位で四捨五入できています。
気になる事があって確認してみたら またデバッグが必要な事がわかりました。 がんばってきます。僕の事は気にせずお休みください(待ってないとは思いますが...) 夜型なので基本寝ませんので明日の朝には仕上げます。 ありがとうございました。
;;小さい方の10の倍数に巻く (defun role (x) (let((p 1)) (loop (if (and (<= (expt 10 (1- p)) x) (< x (expt 10 p))) (return (expt 10 (1- p))) (incf p 1))))) ;;一桁目を取り出す (defun get-one-figure (x) (let ((i (truncate x))) (if (> 0 i) () (loop (if (> 10 i) (return i) (setf i (rem i (role i)))))))) ;;正確な四捨五入の作成 (defun justice-round (x) (let ((i (get-one-figure (* 10 x))) (l (float (/ (truncate (* x 10)) 10))) (j (truncate (* x 10)))) (cond ((< x 1) (if (<= 5 j) (+ 1 (- l (/ j 10))) (- l (/ j 10)))) ((>= x 1) (if (<= 5 i) (+ 1 (- l (/ i 10))) (- l (/ i 10))))))) 一応正確な四捨五入ができているようです。 数字の一桁目を正確に取り出す事ができていなかったのが問題のようでした。 それでは早速先ほどの望みの桁の四捨五入の関数の実装に使ってみます。 get-one-figureには見るからにwhenを使うべき場面が有るのでそれも修正してみます。
;;小さい方の10の倍数に巻く (defun role (x) (let((p 1)) (loop (if (and (<= (expt 10 (1- p)) x) (< x (expt 10 p))) (return (expt 10 (1- p))) (incf p 1))))) ;;一桁目を取り出す (defun get-one-figure (x) (when (> x 0) (if (< x 1) (float 0) (let ((i (truncate x))) (loop (if (> 10 i) (return i) (setf i (rem i (role i))))))))) ;;正確な四捨五入の作成 (defun justice-round (x) (let ((i (get-one-figure (* 10 x))) (l (float (/ (truncate (* x 10)) 10))) (j (truncate (* x 10)))) (cond ((< x 1) (if (<= 5 j) (+ 1 (- l (/ j 10))) (- l (/ j 10)))) ((>= x 1) (if (<= 5 i) (+ 1 (- l (/ i 10))) (- l (/ i 10))))))) ;;望みの桁での四捨五入 (defun my-round (x y) (cond ((<= y 0) (format t "*** - MY-ROUND: The second-paramerter must be more than 0 not ~A~%" y)) ((= y 1) (values (justice-round x) (- x (justice-round x)))) (t (values (/ (justice-round (* x (expt 10 (1- y)))) (expt 10 (1- y))) (- x (/ (justice-round (* x (expt 10 (1- y)))) (expt 10 (1- y))))))))
これでおそらく完成です。問題点・改善点有りましたら、ご指摘願います。 作成する過程でvaluesの使い方やroundの問題点などをしれて非常に勉強に成りました。 では失礼します。
lisp以前の話だが四捨五入の基本的なアルゴリズム(0.5足してから切り捨て)は
知っておいてくれ。
(defun cut4 (v &optional (d 0))
(let* ((c (expt 10 d))
(a (float (* (floor (+ (/ v c) 0.5)) c))))
(values a (- v a))))
第2引数の意味は
>>418 と同じ。
(mapcar #'(lambda (d) (cut4 283.745 d)) '(-2 -1 0 1 2))
=> (283.75 283.7 284.0 280.0 300.0)
ついでに統計とか財務計算で四捨五入じゃなくてroundが使われるっていう理由も
知っておくと良いと思う。
431 :
429 :2008/08/28(木) 12:29:26
なるほど、簡単にできたんですね・・・ わかりました。Lisp以前の問題なようなのでLispに挑戦するのは まだ早いようですね、もう少し他の事を知ってからやってみたいと思います。 スレ汚しでした、すいません。 皆さん本当にありがとうございした。
SBCL 1.0.17.38を使っています sbcl.infoの1.2 Extensionsに *Recursive Event Loop*というノンブロッキングI/Oの機能があると書かれているので 使ってみたいと思うのですが、どうすれば使えるのか判りません。 src/code/serve-event.lispがあり、SB!IMPLというパッケージの中で serve-eventという関数が定義されているようなのですが、 起動した状態では#'serve-eventはバインドされておらず、 (require 'SB-IMPL)としたり、(require 'serve-event)としたりしても Don't know how to require ... といわれてしまいます。 どうしたらよいのでしょうか。
簡単な関数ならkmrclあたりにはいってたりしない?
435 :
429 :2008/08/28(木) 22:54:23
>>434 ありがとうございます。
いつも書くときに直感で書いてデバッグをするタイプなので
アルゴリズムを考える段階が少ないようですね。
ありがとうございます。気をつけて書いてみたいと思います。
ポータブルに持ち運べるLispインタプリタ はありませんか?仕事柄複数のパソコンを 行き来するので勝手にインストールのも マナー違反ですしUSBメモリー等に入れて 使える物が欲しいです。MacとWindowsそれぞれについて お教え下さい。 若しくはC言語等でインタプリタを書き、 その都度コンパイルするのがベストでしょうか?
勝手にインストールがマナー違反な環境なら USB メモリを挿してあれこれするのもマナー違反だな多分
>>436 Mac OS Xは/Volume/ボリューム名/にマウントされるから、
./configure --prefix==/Volume/ボリューム名
でコンパイルすればOKでしょう。(ボリューム名はNO NAMEのままでもいい)
Microsoft Windowsは、差し込むごとにドライブ名が変るから、
その方法は使えないし、処理系を選ぶんじゃないだろうか。(良く知りません> Win)
>>436 聞かないでいれようとしたりUSBメモリを使おうとするからマナー違反でしょ。
USBメモリもデータ漏洩・ウイルス混入につながるから何も聞かずにやるのは
まずいことだよ。こっそりやるんじゃなくて、単刀直入に利用するPCの管理者
に許可をもらっといたら?
わざわざ持ち運ぶんじゃなくて webから使える様にすればいいんじゃない?
441 :
429 :2008/08/29(金) 20:39:38
ポータブルfirefoxと言う物を知ったので、そのような感じで 使える物が有ればと思っていました。ありがとうございました。
CLISPのロゴをじぶんで作ってみたのですが公開してしまって良いのでしょうか? 著作権などについて詳しくないのでよろしくお願いします。
おまえが作ったものなら、何をしようとおまえの勝手
ありがとうございます。 助かりました
>>442 "CLISP" 自体が登録商標ということはないので大丈夫。
一般に、登録商標になっているものの文字列が書かれているとかで
なければ大丈夫。
登録商標になっているものの文字列が書かれていても、それを自分の作ったものの 商品名にでもしない限り全く何も問題ない。
「実践Common Lisp」が出たわりには静かだなぁ。他の流行言語なら祭りになるのに・・・
みんな英語で読んでるから
>>447 そもそも流行言語じゃないしなwでもああいう良い本が日本語になるのは良いことだ。
英語版で分かってたつもりだけど、相当読み飛ばしてたことに気付いたw
>>449 おまえは俺か。日本語だと読むコストが低くていいよな。
脳味噌を英語に使わなくていい分、一週間で全部読めた。
面白いところは英語でも読むのに困らないが、退屈になってくるときいてくる
HyperSpecって勝手に翻訳していいのでしょうか? それともどこかに許可を取るべきでしょうか?
過去ログをよく探してみた所翻訳は許可を取るべきな様ですね。 e-mailを送り質問してみたいので聞くべき事のリストなど有りましたら よろしくお願いします。
OpenMCLはじめて使ってみたんだがEmacsの括弧対応になれてると あのシンプルなIDEは使いづらいな 30行ぐらいの複雑な関数書いてるとなんだか分けわからなくなる やっぱEmacsが一番なのだろうか?
シミュレート板のmaximaスレがなくなってしまったのですが こちらに合流してもいいものなのでしょうか?
だめです
>>455 相応しい板にスレを建てるほうが良いだろう。
あくまで私見だけど、シミュレート板はあまり相応しいとは思わなかった。
>>452 さらっとすげーこと書いてるな。あれすっごく厚いけど一人で全部やる気なの?
>>459 あくまで自由時間ぐらいですが、まだ学生なので自由時間がある程度有るので。
一応許可が取れたらwikiでもつくってばりばり翻訳して行きたいのですが
最初は自分でがんばって翻訳して行き、ある程度まとまったら
お知らせしますのでチェックして頂けると有りがたいです。
Introdunctionとかは長いんですよね。
functionとかは一日4ページぐらいはできそうなのですが
それよりも英語的な礼儀に自信が無いのでどのように書けば良いのかがわかりませんね...orz
丁寧なe-mailの文面どなたかお願いできないでしょうか?(いきなりお願いになるのですが)
HyperSpecのKent Pitmanという方に送ってみるのがベストでしょうか?
書きたいことをあるていど英語で書いてきたら添削するよ。
Hello,my name is hoge(私の名前). I want to translate HyperSpec to Japanese. Because HyperSpec is very inportant to develop CommonLisp program. And Japane also has many developers of CommonLisp. So Translate HyperSpec to Japanese is very important to Japanese CommonLisp programer. ええとこの後に丁寧に HyperSpecを翻訳する許可をいただけないでしょうか? と言いたいのですが よろしくお願いします。 他の怪しい点も指摘願います。
> inportant
>丁寧に 頭にPleaseつければおk
>>463 important ですねすいませんでした。
>>464 Pleas give me permission translation HyperSpec to Japanese
で良いでしょうか?
Hello,my name is hoge(私の名前).
I want to translate HyperSpec to Japanese.
Because HyperSpec is very inportant to develop CommonLisp program.
And Japane also has many developers of CommonLisp.
So Translate HyperSpec to Japanese is very important to Japanese CommonLisp programer.
Please give me permission to translation HyperSpec to Japanese.
がまとめでよろしいですか?
466 :
465 :2008/09/03(水) 19:55:27
important ....orz
ライセンスとか条件的なもの、例えば、 ・成果はフリーで公開する ・公開するときはHyperSpecの翻訳であることを明記する ・商用利用(出版等)する場合は改めて許諾を求める ・その他に条件があったら教えてくれ くらいは、あらかじめ言っておくべきかも。
468 :
465 :2008/09/03(水) 21:08:05
If I got permission to translation HyperSpec to Japanese, I promise you to keep these rule: ・HyperSpec(written in Japanese) is open free. ・I will cleary describe that it is translation of HyperSpec, in case I open it to the public. ・When I make commercial use (publication), I demand consent some other time. Please give me a information if there are any regulations to keep over my list.
yo brother what's up? HyperSpec is f*cking awesome! gimme permission to translate HyperSpec to jap, huh?
ヨ兄どうしたのですか? hyperspecはF * cking awesome ! ただでもらえるものを翻訳する許可をhyperspecジャップ、ホですか?
必要なのは翻訳する許可じゃなくて翻訳したものを公開する許可じゃね?
473 :
465 :2008/09/03(水) 22:57:43
すいませんすいません。 なんだか白紙にしたほうが良いのでしょうか? 流れが読めません。
>>473 翻訳は自由にできる。誰からも許可なんて要らない。勝手にやればよい。
でも、公開するには原著者の許可が必要ってこと。
もちろん、翻訳する前にあらかじめ公開の許可を得ておくのは悪いことではないが、
「翻訳の許可」を貰うという表現には違和感を禁じ得ない。
475 :
465 :2008/09/03(水) 23:36:15
Hello,my name is hoge(私の名前). I want to get permission to translation HyperSpec to Japanese. Because HyperSpec is very important to develop CommonLisp program. And Japane also has many developers of CommonLisp. So Translate HyperSpec to Japanese is very important to Japanese CommonLisp programer. Please give me permission to translation HyperSpec to Japanese. If I got permission to translation HyperSpec to Japanese, I promise you to keep these rule: ・HyperSpec(written in Japanese) is open free. ・I will cleary describe that it is translation of HyperSpec, in case I open it to the public. ・When I make commercial use (publication), I demand consent some other time. Please give me a information if there are any regulations to keep over my list. 上の文を少しかえてみました。 添削よろしくお願いします。
HyperSpecってLispWorksが著作権を持ってるんだね。これ、もとになってる
American National Standard X3.226はANSIが著作権を持ってて、LispWorksが
ANSIから許可を得て公開してるわけだけど、翻訳の公開が許可されるかどうかは、
LispWorksがANSIに対してどういう条件で許可をもらってるのかにも影響されるよね。
ややこしそうだな。('A`)
>>460 ハイパーテキストのマークアップはPitmanが書いたものだけど、その作業に資金援助したのが
LispWorksで、できあがったHyperSpec自体の著作権もLispWorksが所有してるらしいから、
連絡を取るとすれば相手はLispWorksだと思います。
>>475 >Would you like to permit me to make and release HyperSpec Japanese translation?
>>474 法律上、翻訳権と公表権は別々のものだと思ってた
よかったらソース教えてちょうだい
>>478 そういう意味での「翻訳権」なんてものは存在しない
素朴な疑問だが、HyperSpecをどれくらい読んでるんだろ? Lispは入門者とかだけど英語はできるので翻訳もできます! とかなら、もうちょっと小物から手をつけたほうがいいかも。
内容の理解が怪しいと平易な英語でも手こずるよ
文章を見てて 英語に慣れてるって印象が無いんだよ。その点はちょっと心配だな。
>>478 そのへんは俺も気になってたんだけど、ググっても「翻訳権」という言葉は実質的に「翻訳出版権」と
同義で使われてるっぽくて、出版公表が前提になってるみたい。個人で訳して公表しないぶんには
権利侵害にはならないのでは。素人判断なので、もし間違ってたら申し訳ない。
>>480 465氏の書いた英文をみるかぎり、「英語はできる」とはとても思えないのは俺だけだろうか。
こんな文法的にもあやしい英文を書く人が、はたして正確に訳せるのだろうかという疑念が……。
465氏にはたいへん申し訳ないが、これまでのレスを読んだ限りでの率直な印象です。
484 :
465 :2008/09/04(木) 00:24:28
一応Lisp歴11年ぐらいなのですが・・・
むしろCommonLispでプログラミングはできるが英語のドキュメントを
わざわざ読むのはおっくうだと言うタイプの人間だと思います。
HyperSpecは結構使いますね。
でもやはり日本語かどうかでためらってる入門者もいると思いまして。
>>447 ありがとうございます。
>>446 LispWorksですか、確かにそんな気もしていたのですが。
確かにややこしそうですな たらい回しにされる予感...orz
公表しない限り、何を参考に何を書こうと自由に決まってるじゃん。
>>483 > 個人で訳して公表しないぶんには
ならないに決まってんじゃん。
著作権は財産権なんだけど、財産権侵害してないもの。
翻訳権という言葉は著作権法に出てくる。
> (翻訳権、翻案権等)
> 第二十七条 著作者は、その著作物を翻訳し、編曲し、
> 若しくは変形し、又は脚色し、映画化し、その他翻案する権利を専有する。
出版に限らず、無断で公表すれば駄目。
例えば、翻訳した戯曲の上演、映画の字幕を勝手につけるなど。
森進一のおふくろさん事件を思い出した
まあダメもとでLispWoksに連絡取ってみるのがいいんじゃないかね 許可さえ下りれば、翻訳の協力者も現れるかもしれないし
利用する側はいつだって無神経だよな。 俺は絶対に許さないぞ!
490 :
465 :2008/09/04(木) 00:59:49
Hello,my name is hoge(私の名前). I want to get permission to translation HyperSpec to Japanese. Because HyperSpec is very important to develop CommonLisp program. And Japane also has many developers of CommonLisp. So Translate HyperSpec to Japanese is very important to Japanese CommonLisp programer. Would you like to permit me to make and release HyperSpec Japanese translation? If I got permission to translation HyperSpec to Japanese, I promise you to keep these rule: ・HyperSpec(written in Japanese) is open free. ・I will cleary describe that it is translation of HyperSpec, in case I open it to the public. ・When I make commercial use (publication), I demand consent some other time. Please give me a information if there are any regulations to keep over my list. ですかね。皆さんお疲れだと思います。 おやすみなさい
確かに、この英語力では不安はあるが、応援してるよ!
important使いすぎじゃね? 訳す前に日本語をどうにかした方がいい。
俺も上手く言えるような英語力ないけど、 Japaneとか見ると、なんかもうどうしようもないな。 何がしたいのかは説明しつつ、 権利関連の事を尋ねる感じのメールにしたほうが良いかな。 クレクレメールでむこうにメリットが何ひとつねーな。w
Hello, I'm (名前), (地位とか立場とか). I would like to translate the HyperSpec into Japanese, and to make it public. I think this will be welcomed by the Japanese Lisp community. Could you give us the permission to do that ? If any terms or agreements are required, please let me know. I'm looking forward to your favorable reply. Thank you. 俺が書くならこんな感じかなあ。へたくそだけど。
私は今、HyperSpecの日本語訳を作成しています。 I am making a Japanese translation of HyperSpec now. その和訳バージョンを公開したいと考えています。 I want to open the Japanese translation version to the public. 和訳の公開を許可してくれますか? Could you permit opening the Japanese translation to the public? 背景について説明します。 It explains the background. LISPプログラマにとって、HyperSpecの内容はとても有益であると思います。 I think contents on the HyperSpec is very profitable for the LISP programmer. しかし、こういった情報が和訳されていないため、 LISPを学ぶのは日本では難しいと思われています。 But, Japanese thinks that it is difficult to learn, because such information is not translated into Japanese. そこで、HyperSpecの翻訳版の公開を行い、 日本のLispプログラマの理解度を高めたいと思います。 Then, the translation version of HyperSpec is opened to the public. I want to improve the understanding level of the Lisp programmer in Japan. もしあなたから許諾を得ることができたなら、 公開する際に以下のテキストを添える事を考えています。 If permission was able to be obtained from you, it thinks the following texts are affixed when opening it to the public. 他に付けるべき条項があったら追加してください。 Besides, please add it when there are articles that should be put. 英語板行けって感じ
497 :
465 :2008/09/04(木) 06:11:57
皆さんほんとにありがとうございます。
>>494 さんが今の所ベストでしょうか?
LispWorksユーザーを探して頼んでもらったら成功率が上がったりしないかな
499 :
465 :2008/09/04(木) 16:41:31
それは思います。 そちらの方が良いのでしょうか?
なことねーよ。 訳したいと思った人が動けばいいよ。
501 :
465 :2008/09/04(木) 17:15:32
そうですか、確かにそうするとまた権利問題でややこしそうですね。
今の所スレの皆さんは
>>494 さんのmailがベストという事でしょうか?
ベストかどうかはわからん。 それは出す人が決めること。英語は悪くない。
503 :
465 :2008/09/04(木) 18:49:22
わかりました。
では
>>494 さんお借りします。
依然のレスで学生と書いたのですが立場とかの所は特にないので省略します。
>>503 学生ならちゃんと、どこの学校で何を学ぶ学生とか書いたほうがいいと思う。
とにかく、怪しい者ではないということを示す意味なので、コンピューターに関係
なくても別に良いと思う。
最近 Common Lisp を覚えようと思っているんですが 入門者にお勧めの書籍はありますか? 英語が読めないわけではないですができれば日本語のものがいいです。
最近出た「実践Common Lisp」でいいんじゃね?
>>505 基本だったら、ansi common lisp, 湯浅氏の岩波の本
実践common lispもいいけど基本のつぎにくる本だと思う。
個人的な感覚だとANSI Common Lispって実践の次じゃね? 環境の導入とか話もないし、解説が簡潔すぎて入門には難しいような。
successful lispもいいよ
最初に読んだ本はANSI CommonLispだった。 xyzzyの*scratch*で試しながら読んだよ。 割と良かったと思うけどな。
>>508 507だけど、感覚の違いでどっちかという話をしてもあまり意味が無いと思う。
べつにその感覚を否定しようとは思ってませんから。
>>511 傍観者だが、
>>508 は2行目でちゃんと理由を挙げていると思う。
君のレスのほうがよほど意味が無いのでは?
Practical Common LispとSuccessful Lispの最大の長所は英語版で良ければタダで見れること
514 :
505 :2008/09/07(日) 12:31:09
皆さんアドバイスありがとうございます。 とりあえず今日の朝見て、挙がっていた ANSI Common Lisp と実践 CommonLisp を買ってきてみました。 Common Lisp 自体の本はあまりないようでした。質問できるほど選択肢はないのですかね。 どちらも考えていたよりは厚くないので、雰囲気を見ながらすすめてみます。 とはいえ、関数型言語ははじめてなので、今ちょっと打ったところでは思ったより時間がかかりそうですが。。
べっ、別に関数型言語じゃないんだからねっ!
>>512 うまく伝わらなかったのかも知れないが、意味が無いというのは
どっちがよいという話をしても結論がでないだろうなってことですよ。
511にかいたとおり否定しているのではないので。
喧嘩をふっかけてるのではないよ。512さんはなんか勘違いしてる
ように思うが。
自分でも書いておきながら、他人の発言には「あまり意味が無い」では喧嘩を
ふっかけていると取られても仕方ないのでは?
もし喧嘩をふっかけてるのではないのなら
>>511 を書いた目的が不明瞭。
>>518 絡んでくるね。分からないなら分からなくて結構ですよ。この手のレスを続ける
のもこれでおしまいにしておきます。
要するに「ボクの中では成り立ってるんだ」と言い残して逃げるわけね。
なんかだんだん本質よりも相手の話し方や人格を批判したりしてるな。 明らかに議論の進め方の失敗パターンだな。
チャットルームでやってくれたらいいと思うよ
軽く謝ればよかったんじゃないかな
喧嘩するような話じゃない気がするけどな。 血の気が多いのはイクナイ
>>508 bit別冊が復刊してくれたらそれが一番いいような気がするんだが、復刊.comは相変わらず賛同者でないね。
>>525 CLOSの本のことなら入門書とは言えないと思う。
CLtL のことなら CLtL2 があるのでいまさらいいでしょ。
ちなみに CLtL2 は「入門書としても」お勧め。(厚さで恐れてはいけない)
他にbit別冊で何かあったっけ?
>>526 アレすごく興味深くてそれ以後Lisp好きになったんだけど、俺が変態なんだろうか。
(まぁそれ以前のLisp本の古いの(倍風館のとか)読んでいるから読み下しのネタができてたせいかもしれない)
528 :
526 :2008/09/08(月) 02:46:15
>>527 そういう意味ではいい本だよね。いろんな言語の無理矢理なw比較があったり、
実装面にやたら突っ込んだ記事があったり。
あちこちにアカウントを増やしたくないんで、復刊.com はどうもなーって人、 結構いないかな?
とりあえず、オレはそういう人だな。 復刊してほしい本はたくさんあるけど。
共立ってそういう電子化とかに積極的だっけ? 簡単にPOD版にできる電子データがあるかどうかが最初の分岐点 という気もするが。
スキャン画像で検索不可でも、絶版よりはいいな
昔の bit の記事なんかのイメージだと, 「結構昔からTeX入校許可してたんでねぇの?」的な イメージがあるんだが、ちゃうの?
535 :
デフォルトの名無しさん :2008/09/09(火) 00:39:41
>>534 いっそ、bitの月例号と、増刊号すべてを電子化して
復刊してもらえないのかね。
物故者におなりになった、先生方もいらっしゃるので、版権とか
問題あるのかな。
最近、日本評論社の、島内先生の、ルービックキューブ
本が復刊されたけれどね。
536 :
465 :2008/09/09(火) 00:41:28
今の所まだ返信は来ていません。 脈なし(?)でしょうか?
537 :
465 :2008/09/10(水) 02:02:38
今さっき返信が来ました。
Hello hoge.
Thank you for your enquiry.
We would like to understand what demand exists, so I have some
questions for you:
Do Japanese Lispers actually ask for a translated version of the
HyperSpec?
Common Lisp was standardized 14 years ago. Why is a Japanese
translation needed now?
We would also like to understand how you would propose to make a
translation:
Would you use machine translation?
Would you aim to translate all of the document, or just some parts?
Which parts?
I look forward to hearing from you.
regards
Dave
--
Dave Fox
LispWorks Ltd
http://www.lispworks.com/
538 :
465 :2008/09/10(水) 02:08:01
いま一読したところ どのくらいの人が希望しているのかを調べてみないといけない。 なぜ、今になって翻訳するのか? 機械翻訳を使うかどうか?(私は基本的には使わないスタンスでやるつもりです。) すべてを翻訳するのかそれとも一部か?(私はがんばって全部やってみたいです。) 1,2については考えなければ成りませんね。
539 :
493 :2008/09/10(水) 03:10:53
> どのくらいの人が希望しているのかを調べてみないといけない。 どんな需要があるのか知りたいから質問するよ。 > なぜ、今になって翻訳するのか? 14年前の標準化になぜ翻訳が今になって必要なの? > We would also like to understand how you would propose to make a translation: どういう方法で翻訳を作るのかも知りたいんだけど。 HyperSpecを訳すつもりなら英日訳はがんばれ。 こんな簡単(だけど意味が変わる)語や文を落されるとすごく不安なので。
いや、意味がわかったので今後の指針を書いた つもりだったのですが・・・
541 :
493 :2008/09/10(水) 05:05:57
すまんです。良く読んでなかったのは俺ですね。
1. 2.は具体的な事はあんまり言えないと思いますね。
なので、言及できそうなのは
1.lisp本の邦訳がまぁまぁ出版されている事と、日本人の英語アレルギー
2.lisp-users.jpとか、最近活動が活発になっている印象がある?
といったことくらいでしょうか。
追加
2.5 どういう方法で翻訳を作るのかも知りたいんだけど。
これは
>>460 のままですかね。
共同作業をするつもりなら資源やら環境やらは提供するので、がんばってください。
なぜその本でなければならないのか、なぜ思い立ったのかを簡潔に書けばいいよ。
最初から確固たる信念があるもんだとばかり思ってたが・・・ でなければそんなタダ働きはとうていモチベーションが続かんし 訳す価値がある本なら翻訳する意味を問う方がどうかしているけどね
おいおい、勝手に私信を曝すなよ。 削除して貰えよ。
マナー違反だよな。知ったら気を悪くするぞ。
ま、これくらいじゃ削除基準には引っかからないだろうから削除できないだろうけどな。
>>493 は On Lisp邦訳の経緯とか知ってるのかな.
知ってて真似ようとしているのか,知らずにやってるのか.
まずは自分ひとりでこつこつ訳していって,半分とか三分の一とか
できたところで,誰かに読んでもらい,指摘された部分を直す,
みたいな感じで進めていき,とりあえず形にする.
その後で許諾をとって *公式に* 公開する.
というパターンじゃないと多分途中で投げ出すことになると思う.
マーケティング上の参考として日本の現状を知りたいんだろうな。 翻訳が必要なぐらい盛り上がっているなら、きっかけが何で、どれぐらいの人数のLisperが居るのかとか。 それと後半部分は、送られてきた英語が不自然だから、機械翻訳なのかという質問をオブラートに包んでいる。 だから、その英語力じゃ全部を訳すんじゃないんだろ?という質問になっている。 返事を送る前に書いた英語をだれかに添削してもらえないのかな?
>>543 訳す価値は理屈じゃないんだよ
理屈だけの動機では弱いから本人の気持ちを聞いてる
550 :
デフォルトの名無しさん :2008/09/10(水) 12:44:29
これからとあるPCアプリケーションをLISPで書く(お仕事)予定です。 で、処理系を何にするか検討中なんですが、商用なら サポートがしっかりしてそうなAllegro、フリーなら まだちゃんとアップデートされてるECLと考えてます。 こっちの方がいいんじゃないの、などのご意見がありましたら 是非お願いします。
>>550 仕事だからあまり晒せないのかもしれないが「とあるPCアプリケーション」では漠然としすぎる。
一品物の業務ソフトなのか、パッケージとして売るのか。
クライアントソフトか、GUIはあるのか、サーバーソフトか、Webアプリケーションか、とか、
もうちょっと具体的な情報がなければ望む答えは得られないであろう。
>>550 自分が今まで使ってた処理系が一番いいんじゃないの?
>>548 そんなところだな。
*現状は日本語の情報があまりにも少ないために普及に悪影響がでている。昨年、
on lispの和訳、今年になってpractical common lispの和訳が出版された。さらに、
日本のローカルのlispコミュニティまで設立されてきて、日本のlisp界は盛り上がり
つつあるところ。
*度々、翻訳の話題は出てきているけど、あまりにも量がおおいのとライセンスの関
係で二の足を踏んでいただけだ。
とでも書いておけばいいんじゃないか。あえて英訳はしない。
bit別冊から単行本化といえば、ゲームプログラミングも確かそうだったな
>>553 いや、俺は逆だと思って
>>548 を書いた。
ANSI Common Lispで商売をしているLispWorks社にとって、仕様書であるHyperSpecはとても大事なものだから、
もし日本のlisp界は盛り上がりつつあり将来重要なマーケットになるのだとしたら、
あまり翻訳が上手ではなさそうな人に独占翻訳権を与えることは出来ないと考えるだろう。それが将来のビジネスへの保険だよね。
もし一部を訳してブログに発表するだけであれば、将来ビジネスチャンスが訪れた時に彼らが主導であらためて全訳を出せる。
だから、訳はあまり上手でなくても許可できるんじゃないかな。
これはオレの考えで、彼らが実際に懸念していることが何かは分からない。
だから、むしろ彼らの意向を聞くような感じで返答してみる方がいいと思う。
例えば、「自分としてはがんばって全部訳したいと考えているが、LispWorks社が独占翻訳権や著作権のことで考えがあるのなら教えて欲しい。
その考えを尊重して、一部を訳すだけにしてもいい。また、権利関係についてはそちらの意向に従うつもりである。」ということを表明するべきだと思う。
もちろん最初から完全に譲歩せず徐々に譲歩して、翻訳を公開し易い落し所を見つけてもいいと思う。
最後に「自分はビジネスとしての利益は求めていないし、Lispコミュニティーに対する奉仕活動としてこの翻訳を行いたいと考えており、
良い翻訳になるよう最大限の努力をするつもりだ。」と付け加えればいいでしょう。
557 :
465 :2008/09/10(水) 22:46:38
558 :
465 :2008/09/10(水) 22:50:07
確かに一切ビジネスとしてという事は有りません。 むしろUNIXのコマンド集のページが沢山有るように CommonLispの関数の情報をもっと自由に共有できるようになるのが理想なんですけどね。 権利がいろいろと立て込んでいるので簡単にはHyperSpecを参照に 自作マニュアルを作成する訳にもいけないですしね。
翻訳支援ツール持ってるんでハイパースペックが どのくらいの規模か解析してみた(htmlのみ、コード含む) Hyper Spec ファイル数:2318 同じ文の繰り返し:175595 words 不一致(1回しか出現しない文):578203 合計:753798 比較用に CLtL ファイル数:330 繰り返し:26872 不一致:279956 合計:306828 CLtL の約2.5倍ですね。すごい。
>>556 553だけど、
ふむふむ。
向こうが聞いていることに対して日本の最近の動向はちゃんと伝えた方がいいんじゃないかな。
小手先のテクニックで(独占)翻訳権を得たところで、後問題が山積みになるよね。
だから、独占翻訳権にこだわる必要もないのですよ。
common lispの動向を考えるとオープンソースの流れは十分理解されているだろうから、それで
お金をとるとなればおっしゃるような状況になるが、現実はオリジナルのhyperspecそのものが
オープンな形で公開されているということから、日本語だけはお金をとるということはしないだろ
うししたところで利益にならないだろう。日本では閉鎖的な動向にもっていこうとしがちだけど、
見てる限り世界の動向ソースはオープン化に向かい言語はlispに向かう。(笑)ということで日本
とは逆だよ。その点は踏まえて考えた方がいいと思うね。オープンなところで盛り上がったもの
を独占的に扱って、有料にしたり排除するってのは結果として盛り下がることは当然予測でき
るよ。(この辺はのまネコと同じだよ。)
むしろ、動向を正確に伝えた上でLispworksの日本語環境(utf8環境かな)の整備に本腰を入れ
てくれるならばよいと思うんだがね。おまけに、正確な翻訳をするようになればその人はlispworks
に雇われるかもしれませんよ。
また、あのメールでの返事は提案者の英語力のテストも兼ねてると思ったんだけどね。その点
で同意してたかな。
>小手先のテクニックで(独占)翻訳権を得たところで、後問題が山積みになるよね。 >だから、独占翻訳権にこだわる必要もないのですよ。 翻訳権を取得しないと著作権法違反になるから、ちゃんと交渉しないと駄目だろ常考。
「独占」に拘る必要は無いということでは?
564 :
465 :2008/09/11(木) 16:56:29
外出先から書いているのでなおさら怪しい文ですが書いてみました。 *Japan commonLisp community has become very prosperous recently. For example: ・Last year OnLisp was translate into Japanese. ・In this year "Practical CommonLisp (translated into Japanese)" was published in Japan. ・Japanese local Lisp community was organize recently. *Many times a topic of translate HyperSpec into Japanese,but We hesitate to translate HyperSpec into Japanese cause HyperSpec is a very large quantity and license. 添削よろしくお願いします。
>>564 "Many times ..." の文は文法がおかしい。元の日本語はどんなの?
566 :
465 :2008/09/11(木) 18:04:00
そうですよね、何となくしっくりこないというか
再読するとなんだか変なのですが。
>>553 の文がとても良いと感じたのでちょっと訳してみたのですが
Last year, Mr. Paul Graham's "On Lisp" was translated by Mr. Noda, and published from Ohmsha publishing co ltd. And last month, Peter Seinel's "Practical Common Lisp"was translated and published from Ohmsha, too. These books are aquiring a lot of new programmers to Lisp community. But, because of long time no publishment about common lisp, especially in Japan, there are no good reference, except above two books. Now People are demanding Japanese translation of Hyperspec, for learning. These demands push me to decide translation of it for this community.
568 :
465 :2008/09/11(木) 18:15:33
In this community, I have speaked about my plan about translation of HyperSpec, some people had suggested me that HyperSpec is copyrighted by you, Lispworks. So I mailed you about possibility about your autorization of translation it.
I am willing to accept your suggestion about copyrights, because of my small knowledge about it, especially in USA.
I hope your acception of my plan.
yours sincerely,
>>465 の名前
>>567 × Peter Seinel's
○ Peter Seibel's
>>465 の名前と住所
>>Lispaworksの社名と住所
Dear Mr. Dave Fox
Thank you for your answers and questions.
Let me introduce current situation in Japan.
>>567 >>571 の修正
>>569 >>570 こんな感じでどうかな?
× Let me introduce current situation in Japan. ○ Let me introduce you current situation about Lisp community in Japan.
完成版
-------------------------------------------------
>>465 の名前と住所
>>Lispaworksの社名と住所
Dear Mr. Dave Fox
Thank you for your answers and questions.
Let me introduce you current situation about Lisp community in Japan.
Last year, Mr. Paul Graham's "On Lisp" was translated by Mr. Noda, and published from Ohmsha publishing co ltd.
And last month, Mr. Peter Seibel's "Practical Common Lisp"was translated and published from Ohmsha, too.
These books are aquiring a lot of new programmers to Lisp community.
But, because of long time no publishment about common lisp, especially in Japan, there are no good reference, except above two books.
Now People are demanding Japanese translation of Hyperspec, for learning.
These demands push me to decide translation of it for this community.
In this community, I have speaked about my plan about translation of HyperSpec,
some people had suggested me that HyperSpec is copyrighted by you, Lispworks.
So I mailed you about possibility about your autorization of translation it.
I am willing to accept your suggestion about copyrights, because of my small knowledge about it, especially in USA.
I hope your acception of my plan.
yours sincerely,
>>465 の名前
-------------------------------------------------
"I hope your acception of my plan."の前に全部訳すのか部分的に訳して公開していくのか、
>>465 のプランを書かないといけないね。
577 :
465 :2008/09/11(木) 19:04:03
全訳したいですね。 はじめは主に関数だと思いますが
【送り先の名前を指定しない場合】 ・Dear Sir/Madam → yours faithfully. ・To whom it may concern → yours faithfully. 【送り先の名前を指定する場合】 ・Dear 会ったこと無い人やボスや目上の人の名前 → yours sincerely. ・Dear 友達や近しい人の名前 → best wishes, best regards, warm regards, kind regards, warm wishesなど。
(1) ひとりで全訳が出来るまで公開しないのか? (2) wikiとかで協力者を募って全訳を目指すのか?⇒その場合、部分的に出来たものから公開するんだよね? (1)の場合はあなたの翻訳能力や投入できる時間と完成予定日が質問されると思う。 (2)の場合、協力者の翻訳能力や語調の統一は誰が管理するのか?何人ぐらいで行う予定で完成予定日はいつ頃かを質問されると思う。
>>578 どれを書いたらわからないって言う時は最上敬語のyours faithfullyを使えば間違いない。
ビジネスレターの場合は相手を知っている場合でも年上だったらfaithfullyを使った方が良い。
この場合、相手がregardsを使ってくれているのでyours sincerelyかbest wishesあたりでいい。
581 :
465 :2008/09/11(木) 19:23:34
>>579 wikiは管理しやすいですし、
XHTMLはかけますがそういった部分にとらわれる事無く体系的な
webページを作成できる点でwikiが最適と思います。
全部できるまで公開しないと言うより
wikiの編集権は私が管理してできた物から公開したいですね。
>>581 wikiは新たに作られてもいいだろうし、このスレのwikiを使ってもらってもいいし、
あるいはshibuyaでつくってもらったらいいかも
>>579 (2)の疑問について 査読制度をやってみるしかないな。訳者みんなで回し読みだ。
あるいはon lisp式だ。
583 :
465 :2008/09/11(木) 19:46:49
一応wikiは新たに作るつもりです。 相当ページ数が多くなりますからJ-HyperSpecのような わかりよい名称で作ってみたいと思います。
584 :
465 :2008/09/11(木) 19:52:04
誤解させるような書き方をしたかも知れませんが 一応編集は私が一人でやりたいと思います。 ココから先はあくまで仮定ですが指摘してもらうのに専用の スレをたてるなどして気になる所が有ったら適時指摘してもらうと言う形に したいですね。
>>584 > 一応編集は私が一人でやりたいと思います。
翻訳も基本的に一人でやるのね?
586 :
465 :2008/09/11(木) 19:59:10
ご気分を害されたとしたら誠にすいません。 統一の方法や権利問題などでややこしくなりそうですし そのようにしたいと思ったのです。 ですが、うまい方法が有れば当然それを盛り込みたいと思うので なにかお教え願います。
wikiの編集権を一人が握ったら、 権利問題解決なんてもんではないだろ。 例えば口述筆記の場合、筆記したものでなく、 口述したものに著作権がある。 あんまり安易に考えないほうがいい。
「なんでここの訳勝手に変えたんだよ?」 「なんで変えたか?あえて言おう『カス』であると!・・・(中略)・・・ジークジオン!ジークジオン!ジークジオン!」 「こ、これが独裁?これが編集権?」 「ジークジオン!ジークジオン!ジークジオン!」
589 :
465 :2008/09/11(木) 20:16:37
>>587-588 すいませんでした。わかりました。
するとe-mailにはどのように書けば良いでしょうか?
不特定多数が編集するとなると受け入れて頂けないでしょうし
>>589 > 不特定多数が編集するとなると受け入れて頂けないでしょうし
その根拠は?
591 :
465 :2008/09/11(木) 20:26:08
すいませんでした。 なんと言うか権利問題は皆さんの方が詳しいようなので わたしの事は気にしないでください。.....orz
とりあえず「2ちゃんねる書込規約」でググれ。
著作権者達本人全員の許諾を受けないで出版・契約等は、 著作権侵害となる。 これは「相互に交換価値のやや等しい給付をすることから著しくかけ離れた取引」であるから、 民法90条 公序良俗 「公の秩序又は善良の風俗に反する事項を目的とする法律行為は、無効とする。」 に触れるので編集権を主張しても無効になってしまう。
いきなり民法90条とか持ち出してくるのは勘弁してくれ それは他に使えそうな法律がないときに使うリーサルウェポン
595 :
465 :2008/09/11(木) 20:45:47
>>592 あと wikipedia の著作権に関するところとかね。
>>584 > スレをたてるなどして気になる所が有ったら
> 適時指摘してもらうと言う形にしたいですね。
専ブラの navi2ch は、著作権をしっかり管理したいから、
スレに書き込まれたコードを取り込むのは止めたぞ。
メールや2ちゃんより、wiki に直接書き込んで貰う方が、
ずっと著作権を管理しやすい。
書き込むたびに譲渡承諾を読ませて、
OKボタンを押させることができるから。
2ちゃんねるのように。
訳語、訳調の統一のための改変承諾もそこですればいい。
著作権放棄した時点で、別途許諾を得る必要はないが、
>>588 のような荒れ方を防げるし、マナーとしても正しいだろう。
597 :
465 :2008/09/11(木) 20:52:46
わかりました。 では 1,wikiを作成し不特定多数で管理する。 2,公開する権利・責任は私がもつ 3,内容は確認し適時修正、編集する。 ということで良いでしょうか? あと上のmailの内容に追加すべき事は有るでしょうか? P,S 週末に行事が有り準備のために返信が途切れるときが有ります 申し訳有りません
訳者の著作権をしっかり管理するなら、全改訂差分を保存できる MediaWikiかDokuWikiあたりを使わないとだめだろうね。
600 :
493 :2008/09/11(木) 22:54:46
原稿の変換も一苦労だと思うので、 subversionで原稿管理して更新された部分ごと普通に htmlのままサーバに置いて見て貰えば良いんじゃないですかね。
ウォーターフローモデル
>>600 Wikipediaみたいな削除合戦とかは想定しないのか?
のんきだな。
一人でHyperSpecを片づけられるかがちょっと心配だな。 ユーザーグループが始動しはじめたみたいだから、そっちで翻訳プロジェクトとかで立ちあげたら? 一人だと気力の他に仕事の都合とか、飽きたりとかで中途半端に終ると後が続けなくなっちゃわないかなぁ。 HyperSpecの量って日本語で書くだけでも通常の人なら力尽きそな分量だよ。 もう少し小さな文献から翻訳やってみて実績と経験を積むとか。
604 :
465 :2008/09/11(木) 23:58:11
>>600 なるほど、
ちなみに以前のjapaneは失礼しました勢いでjapaneseとうった後
消したつもりだったのですがeが残ってしまったようで
605 :
465 :2008/09/11(木) 23:59:50
>>603 暇人なので大丈夫ですよ。
本読んでるかプログラミングしてるか勉強してるか
だけの人間なので仕事もとくに無いですし(学生ですから)
ごめん、584までか読んでなかった。 しかし、CLtLの2.5倍というと1800ページ?手持ちで一番ブ厚いCJKV本でも1000ページだから、 これの1.8倍…。開いたら真っ二つになりそうだな。
今立ち上がったユーザグループには近づかないほうがいい。 ただの馴れ合い集団になるかどうか観察してからでも遅くないと思う。
608 :
465 :2008/09/12(金) 00:50:47
なるほど、ではそろそろe-mailの文をまとめなくては
完成版
-------------------------------------------------
>>465 の名前と住所
>>Lispaworksの社名と住所
Dear Mr. Dave Fox
Thank you for your answers and questions.
Let me introduce you current situation about Lisp community in Japan.
Last year, Mr. Paul Graham's "On Lisp" was translated by Mr. Noda, and published from Ohmsha publishing co ltd.
And last month, Mr. Peter Seibel's "Practical Common Lisp"was translated and published from Ohmsha, too.
These books are aquiring a lot of new programmers to Lisp community.
But, because of long time no publishment about common lisp, especially in Japan, there are no good reference, except above two books.
Now People are demanding Japanese translation of Hyperspec, for learning.
These demands push me to decide translation of it for this community.
In this community, I have speaked about my plan about translation of HyperSpec,
some people had suggested me that HyperSpec is copyrighted by you, Lispworks.
So I mailed you about possibility about your autorization of translation it.
I am willing to accept your suggestion about copyrights, because of my small knowledge about it, especially in USA.
I hope your acception of my plan.
yours sincerely,
>>465 の名前
-------------------------------------------------
I don't use machine translation.
I want to translate all of the document.
>>608 が勝手に著作権契約を結んで、後で協力者に糾弾される可能性大。
相手は契約のプロ。利用されないように「せいぜい」気をつけるんだね。
せいぜい、フフフ
610 :
465 :2008/09/12(金) 01:11:39
611 :
465 :2008/09/12(金) 01:12:34
たぶんこの内容だと相手方に勝手に出版のネタにつかわれるな。 表に出さずに自分用に翻訳続けたほうがいいと思うよ
613 :
465 :2008/09/12(金) 01:13:41
白紙に戻せという事でしょうか?
むしろ出版されるといいなと思う
615 :
465 :2008/09/12(金) 01:20:06
>>614 一応わたしは出版は目標では有りません。
むしろもっとCommonLispが充実するようにしたいだけです。
将来、出版など商業的に利用される場合、自分の権利をどう持つのか(または一切放棄するのか) はきちんとしておいたほうが良いと思う。Wikiで共同作業になる場合、他の協力者にも同じ条件を お願いするとかの問題もあるので。
ボウヤだからさ
618 :
465 :2008/09/12(金) 01:28:42
>>616 なるほど、名前ぐらいは出したいですね。
利益は目的ではないので利権のみを放棄できないでしょうか?
(知識不足でわかりませんのですいません)
他の方の意見を聞いてみたいと思います。
こればっかりは私の主観で決められませんので。
他の方が利益希望のときは私の分はLispWorksに寄付したいと思います。
訴訟になってよく分かっていませんでしたでは済ましてくれないんだぞ。 不明点を洗い出しもしないで返事をして契約に望むのか? もう少し具体的にどう運営するつもりか明確にしとかないと後でしらねーぞ。 契約社会の世の中で、訴訟なんて当たり前だぞ。 起業家になったつもりでもう少し真剣に検討しろYO!
あくまでも相手は、権利関係に詳しい人間を通して対処すると思うぞ。 その場合気をつけないと訴訟沙汰になる可能性もあるので 未直にいる英語に堪能な人などに何度も文を書いて慎重にやっとけ。 表からみるぶんにはヤンヤヤンヤやってるの見てるのが面白いが まずいことになったら気の毒に感じるからな。
621 :
465 :2008/09/12(金) 01:33:10
>>619 なるほど、気持ちが少し引き締まりました(なんとなくそのYO!というフレーズが良いですね。)
私の気持ちは出版の際は:
訳者として私と協力者の名前を出してほしい。
利益は希望しない(あくまで私個人の気持ちです)
他に明確にすべき点をよろしくお願いします。
s/未直/身近 じとぢを間違えた
On Lisp の場合は、相手が理解のあるPaul Grahamだったけど、 HyperSpecは企業相手だから、担当者が善意の人でも経営者が代わったら別会社みたいな対応をする場合も考慮しとけ。
著作権侵害者に対しては、刑事罰が科せられます。 著作権、著作者人格権、出版権、実演家人格権又は著作隣接権を侵害した者は、5年以下の懲役又は500万円以下の罰金、又はこれらの併科に処せられます。(著119条) また、以下のような行為についても罰則が規定されています。 1. 著作者、実演家が存しなくなった後における人格的利益を侵害する行為(著120条) 2. 著作者でない者の実名又は周知の変名を著作者名として表示したものを頒布する行為(著121条) 3. 特定の外国レコード原盤から製作された商業用レコードを複製する行為、又はその複製物を頒布若しくは頒布の目的をもって所持する行為(著121条の2) 4. 出所明示義務に違反する行為(著122条) 5. 業として客の求めに応じて技術的保護手段を回避する行為、並びに技術的保護手段回避のための装置やプログラムについて、公衆への頒布、頒布目的の製造・輸入・所持や公衆の使用に供する行為及び当該プログラムを公衆送信(送信可能化)する行為(著121条の2) なお、法人の従業者等が、その業務に関し違反行為を行った場合は、行為者のほか、法人に対しても罰金刑が科せられます。(著124条) 平成16年の著作権法改正で、法人の罰金の上限額が、1億円から1億5000万円に引き上げられました。(著作者人格権あるいは実演家人格権の侵害の場合を除く)(著124条1項1号) 例えば、一緒に訳していた人が勝手に違反しても、法人として貴方が全責任(1億5000万円)を背負うことになります。
そもそも、何故HyperSpecを起点にしなきゃ駄目なんだ
626 :
465 :2008/09/12(金) 01:59:50
>>624 それはなんと言うか困りますな。
UNIXのコマンドマニュアルと違って権利問題が込み合い過ぎですよ。
経済学や法律を熟知していないと厳しいですな。
627 :
465 :2008/09/12(金) 02:00:15
いろんなこという人がいるけど、自己責任が関連しているからな。 toyamaからのコメントは大切に聞いておいた方が良いよ。 たぶん、多くの人が世話になってるよ。 権利関連で分からないことは素直にlispworksに聞いてみることだよ。 hyperspecは無料公開されているものだから、それが非公開有料になって 和訳も権利が〜みたいなことは起こりにくいけどね。 ややこしいことばかり聞いてたらやる気が削がれるだけだろうから、 走りながら考えていけばいい。無理ならプロジェクトチームを作るように するとか考えたらいいし、独占契約をしなければなんとでもなるでしょ。
629 :
465 :2008/09/12(金) 02:04:26
>>628 >toyamaとは?Lisp界で常識ならばすいません。
翻訳は意外とめちゃくちゃ危険な事なんだと実感しました
あともう一つ。訳の訂正の指摘をしてくれた人は謝辞に入れておくことだよ。 それで権利云々を言い出すやツガでてくる状況を作っちゃだめだよ。 精神的にへとへとになるだけ。 そのためには匿名という曖昧な状態でやると帰って泥沼化するから、 toyama が言ってるように最近できたコミュのプロジェクトチームのリーダー として465さんが取りまとめやくとしてやってみた方がいいと思うな。あそこ には訳経験が豊富?な人が何人もいるし強力だと思うよ。 訳になれていないものが挑戦するにはあまりにも無謀な量だし、さらに、 訳の質も率直に言ってそのままでは期待でき無いから。
>>629 toyamaってocnのtoyamaの人がきみに暖かいアドバイスを出しているでしょ。
常識ではないよ。匿名掲示板では推測でしか個人の特定は出来ないから。
632 :
465 :2008/09/12(金) 02:10:43
>>630 わかりました。
権利問題に疎いとこのような苦労が有るのですね......
権利問題の交渉を代行して頂けると非常に助かるのですが
現実はそんなに甘くないですよね。
>>607 馴れ合いって何をさしているのかは分からないけど、
出来たばかりだから、バイタリティがあふれている人がどんどん引っ張って言ったら良いよ。
ただ、外から見てて心配事はあるけど、それは匿名掲示板で書きたくないので
自分の心の中に閉まっておくよ。
634 :
465 :2008/09/12(金) 02:15:31
>>633 最近できたコミュニティのURLを失念してしまったので
張って頂けないでしょうか?
あと、私のような新参者が突然きて引っ張るのは無理では?
>>632 利害が関連してくるとエゴイストだらけになるから、そんな連中をまともに
相手にしていたら、寿命を縮めるだけです。だからこそ、そんな連中とは
関わらないようにやってったほうがいいよ。
637 :
465 :2008/09/12(金) 02:19:25
ですが、このままではどうして良いか、、 なんだか脳がこんがらがってきましたよ....orz 正直、訳者として名前をのせてくれれば権利は放棄するし利益はそちらに寄付するから やらしてくれ、と言うので精一杯ですよ
>>637 利益のことはここで騒いでいるようなことは起きないと思うけど、心細く混乱するのも
よくわかるよ。一人じゃ大変だろうなというのもそこなのだ。
数日間、間を置いてその間にちょっと考えてみたらどうか? 即決即断がよいのでは無いから。
落ち着いて熟考していくうえでみえてくるものもあるからね。
>走りながら考えていけばいい。無理ならプロジェクトチームを作るように >するとか考えたらいいし、独占契約をしなければなんとでもなるでしょ。 一度契約を結んだ後で共同作業者が契約内容と異なった行動をしてたら目も当てられないだろ。 共同作業は怖いんだよ。女はそうやってソープに沈められたりするんだよ。あまいあまい。
640 :
465 :2008/09/12(金) 02:25:50
>>638-639 それは常々感じています。
ですから理想は翻訳は私がひとりでコツコツやって
確認を皆さんにしてもらうのが理想なんですよね
641 :
465 :2008/09/12(金) 02:27:06
理想が二回も...orz 疲れてきたかもしれません。ココ三日不眠ですし。 少し休みます。
642 :
465 :2008/09/12(金) 02:30:02
なんと言うか権利問題が解決すればあとはがんばれるような気がします。(死亡フラグ?) ここが疲労グラフの頂点なのかも知れませんね
>>639 そんな実例をようけ見てるのネ。 <ソープ
無料公開を前提にしているうえで異なった行動って何をさしている?
これがね。本を出すとか、お金の成る木ならおっしゃるとおりだが。
>>643 自信があるなら>465の代わりに責任者になってやれよ。
実務は
>>465 がやるんだから。
責任問題は走りながら考えていけばいいwww
「考えながら走るサッカー」 イビチャ・オシム
>>599 に書いたが、
翻訳についてはOpenなライセンスにすればいいんじゃないの?
具体的にライセンスを選んでから、Lispaworksと交渉すれば、
細かい議論を自分の力でする手間を省けるだろう。
日本語版もあるから読んでくれ。
http://ja.wikipedia.org/wiki/オープンコンテント > 訳者として私と協力者の名前を出してほしい。
Copyright noticesに入れてしまえばいい。
むしろ、アメリカ?%A
>>646 元がOpenなライセンスじゃないのが問題を複雑にしてるかも。
ANSIとかも絡んでそう。
俺だったら翻訳でなく、自分リファレンスを作るかなあ。(言うだけ只モードw)
>>646 U*IXと同じでたぶんそうはいかないだろう。まあ、聞いてみれば?
北京五輪の柔道男子100キロ超級で金メダルを獲得した石井慧(21=国士舘大)が11日、母校・清風高校(大阪市)を訪問し、優勝報告を行った。 朝礼で壇上に上がった石井は「皆さんに、人生を生きていくにあたってのアドバイスをしたいです」と切り出すと、 (1)保証人(= 翻訳権や著作権)にならないこと (2)たばこを吸わないこと (3)ネクタイは上まで締めること ――と唐突な発言。「自分から言えるのはそれだけです」と締めくくると爆笑に包まれた。
:::::::::::::::::...... ....:::::::゜::::::::::.. ∩___∩ ::::。::::::::::::::::: ゜.:::::::::::: :::::::: ゜.:::::::::::::::::::: ゜.::::::::::::
:. .:::::。:::........ . .::::::::::::::::: / ヽ:::::::::::::。::::::::::: . . . ..:::: ::::::: . . . ..::::::::::: . . . ..::::::::::: . . . ..::::
:::: :::::::::.....:☆彡:::: /⌒) ● ● | :::::
>>465 :::::::::: ::::::::::::。 ::::: ::::::::::::。::::: ::::::::::::。::::: ::::::::::::。
:::::::::::::::::: . . . ..: :::: / / (_●_ ) ミ :::::::::::「HyperSpecを翻訳して有名になるんだ」.... .... .. .::::::::::::::
::::::...゜ . .::::::::: ( ヽ |∪| .ヽ ....... . .::::::::::::........ ..:::: ::::::::::::........ ..::::::::::::::::........ ..::::::::::::::::........ ..::::
:.... .... .. . \ ヽノ | 〉:.... .... .. .:.... .... .. .... .. .:.... .... ..... .. .:.... .... ..... .. .:.... .... ..... .. .:.... .... .
:.... .... ..:.... .... ..... .... .. .:.... .... .. .... . .... . ..... .... .. ..... ............. .. ..... ............. ...... ............. ...... ............. ...... ............. .
:.... . ∧∧ ∧∧ . ∧∧ ∧∧ .... .... .. .:.... .... ..... .... .. . .:.... .... ..... .... .. ..:.... .... ..... .... .. ..:.... .... ..... .... .. .
... ..:( )ゝ ( )ゝ( )ゝ( )ゝ ムチャシヤガッテ・・・...... :::::::::...... ....:::::::゜:::::::::::::...... ....:::::::゜:::::::::::::...... ....:::::::゜::::
.... i⌒ / i⌒ / i⌒ / i⌒ / .. ..... ................... .. . ... ::::::::::::: . . . ..: ::::::::::::::: . . . ..: ::::::::::::::: . . . ..: ::
:.. 三 | 三 | 三 | 三 |
:.... ∪ ∪ ∪ ∪ .∪ ∪ ∪ ∪
651 :
465 :2008/09/12(金) 18:05:29
別に有名には成りたくないですよ 権利を一切放棄する名前も出さなくていいとすれば 早く進むでしょうか
マグロウヒルが著作権を持ってた本が軒並み絶版になってるのを考えると、 著作権は数年経って改訂する頃から効果が出てきて、著作権が切れるまで影響するんだよな。 むしろ、英語版のHyperSpecの著作権が切れるまで待って、著作権が切れてからコピーフリーでやった方が束縛を受けない気がする。
>>652 > 英語版のHyperSpecの著作権が切れる
いつだよw
>>644 下らん奴だな。正面から答えればいいのに。
匿名掲示板でこの手のことを展開すると足を引っ張られて動脈硬化を起こしてしまうけど 今回もその傾向がでてるね。
658 :
465 :2008/09/12(金) 19:05:32
なんというか私が有名になるよりもLispが発展する事の方が 大切な事のような気がするんですよね。Lispのためならがんばれる気がします。 ===================================== なんと言うか以前まとめてくださった方の内容で向こうの質問の返信には 成ると思うのですが、どんな感じなのでしょうか?
うん。コルステロールみたいな連中がおおすぎるよね。
なんか人任せのニオイが最初からぷんぷんしてるから これだけ船頭が集まってくるんだ 熱意があるなら訳が出来てから出版社に持ち込めばいいんだよ
661 :
465 :2008/09/12(金) 19:07:44
またなんと言うかが二回も、疲れてます。(不眠4日目) ときどき乱文に成るかもしれませんがご容赦ください
>>657 >動脈硬化を起こしてしまうけど
動脈硬化を起こすのはベンチャー精神に欠けるからだろ。
人が何を言おうと自分が正しければリスクをも厭わずにやり遂げるぐらいじゃないと。
匿名掲示板だから議論が進まないで実現できませんでしたなんてのは言い訳にすぎない。
まず締め切りを決めること 守らせることが共同作業の基本 両方とも出来そうにないだろ
664 :
465 :2008/09/12(金) 19:10:43
>>664 質問
メールを書いた以外で既に何か進めていることあるの?
666 :
465 :2008/09/12(金) 19:17:23
進めたいのですが権利問題が解決するまでと思っていたのですが 少し関数などのページを訳して個人用に保存し始めました
667 :
465 :2008/09/12(金) 19:53:53
>>665 なんというか意味を取り違えていた回答をしていたらすいません。
「おまえ何もしてねーじゃん」
という意味だったのでしょうか?
>>667 別に深い意味はないが、まあ、何もしてないっぽく見えるな
ブログとかやってないの?
匿名掲示板だから議論が動脈硬化と言ってる奴、社会が悪いから何も出来ないと逝ってるニートと同じ論法だな。
悲観的なことを言われても、ちゃんと反論すればそれでいいんだけど 相手の意見を尊重しすぎると自信なくなるわな
>>669 Nos vives limitrophes
Nos desirs de paix
Quelques zones franches
Bien delimitees
>>670 動脈硬化になるのはしっかりした意見を持たないリーダーの下でデスマーチするプロジェクトに似ている。
きっと軸がブレないで運営できるかどうかの試金石なんだよ。
>>465 がプロジェクトをスタートする前にこういう経験をしているのは在る意味ではラッキーかも。
>>672 リーダーは別にいなくても進むものもある
インティファーダとかそうだな
今北
どうでもいいとこで
>>569 以下のspeakedが気になるんだけど、
spokenとは違うの? ググっても良く分からん。英語詳しい人kwsk
相手にお伺いを尋ねるだけの文章でこんだけ紛糾するのにちゃんと翻訳できるのか不安になるじゃないか。
>>465 は思った通りに書いて、相手の返事を待つだけでいいのじゃないのか?
事が巧くいってがんばった結果がでてから、ここまでやったので誰か手伝ってくれないかと言う方がよっぽどよいだろう?
On Lisp, PCLのときは権利関係どうやったのかとか聞いてみたら? 翻訳した連中多分ここチェックしてるっしょ。
権利関係は、まだ何の問題も起きていない。 今は、本来の目的に集中できるかどうかが問題。 コレステロールが悪いとか権利関係が悪いとか 責任の擦り合いが目的になるとやばい。
>英語詳しい人kwsk すべからく人任せwww
もしかして? 悉く
683 :
465 :2008/09/13(土) 12:49:35
一応ホームページが3個ブログが1つ有ります。
684 :
465 :2008/09/13(土) 12:54:49
後BBSが2つ有りました。
処理系別に処理を分けるのってどうやって書けばいいんだろうか? 誰か教えてください
>>685 シャープマクロの一種 #+ を使う。
あるいは、変数*features*の中身をみて振り分ける、とかかな。
;; #+ の例
#+clisp
(princ "Hello")
翻訳は止めといた方がいいと思うよ。 これは忠告だよ。会社を通して邦訳本出す、 という形の方がよほど現実的。 何かあったときここのスレッドの住民に けしられたから〜とか言いそうだなあ。
688 :
465 :2008/09/13(土) 17:58:37
>>687 それはいいませんが....
どのような点でやめた方がいいのか
お教え願います。
一 自力での訳の目途すらついてない 二 他人に頼むにしても自前の人脈がない・そうした作業の経験がない これでどこへ行こうというのだね 私とその大砲で勝負するか 小僧から石を取り戻せ
690 :
465 :2008/09/13(土) 19:22:50
むしろ私と同じ年齢でそういった作業の経験が有る方の方が 珍しいと思うのですが。
やりたければやれば。 権利絡みで色々うるさくなったら面倒な事に まきこまれるのはあなただけで、 ここの住民はいつもと変わらずここで レス付け続ける、ってだけだから。
まあ、とりあえず、翻訳をどんどん進めて継続することだね。 自分の気になっているところからやれば、公開はダメでも身に付くし。 まともな訳を書こうと思うと、生半可な理解では到底無理だから。
693 :
465 :2008/09/13(土) 19:30:35
経験を積んでからの方がいいということがよくわかりました。 ですが、今更急に断るわけにもいきませんし、
694 :
465 :2008/09/13(土) 19:35:35
とりあえず自分の勉強のためにも公開如何に関わらず翻訳してみることにしました 今のところ30ページほど翻訳してみました。
HyperSpecってchmファイルないのかな? 日本語訳はどうでもいいから,chmファイルがほしい
進捗状況
>>560 >Hyper Spec
>ファイル数:2318
>>694 >今のところ30ページほど翻訳してみました。
暇だっていってるんだし、一年ありゃいけるんじゃないか
そろそろウザくなってきた。
699 :
465 :2008/09/13(土) 20:28:06
まずは安全に翻訳できる環境を作らなければ
MLでも作って、まずは閉じた環境でやってみたらどうかな? 勉強会的な小コミュニティなら、翻訳しても文句は言われんでしょ。 ある程度やってみて、いけそうな雰囲気なら再交渉してオープンにすればいいんだし。
>>686 ありがとうございます.
この方法だとSLIMEを使ってC-c C-kでコンパイルしたとき
たとえば
#+clispと#+sbcl
の2つで振り分けていたとして,#+clispはclisp依存のコード,#+sbclのほうは
sbcl依存のコードが書かれていたとき,両方ともコンパイルしようとしてエラーがでて
しまいます.
なんとか,これも分けることはできないのでしょうか?
>>701 こちらで試したところ、エラーなくコンパイル出来ました。
#+を使うときは、
#+clisp フォーム(S式やアトム)
のように使いますが、#+が有効なのは、直後の一つだけの
フォームですが、そのへんはお分かりになっていますか?
;; 例
#+clisp
(defun foo () ...) ; #+clispが有効
(defun bar () ...) ; #+clispとは無関係
また、以下のようにも書けたりします。
(setq hoge #+clisp 1 #+sbcl 2) ; clispなら1、sbclなら2がhogeに代入される。
そうでなければ、あとはslimeの設定の問題とか…。
>>702 すみません,うまくいきました.
>#+が有効なのは、直後の一つだけの
>フォームですが、そのへんはお分かりになっていますか?
これをわかってなかったようです.
dpans2textもよろしくお願いします
以前に非常にわかりやすいcommon lisp のchear sheetが紹介されてましたが どなたかサイトをおおしえいただけないでしょうか?
chear sheet -> cheat sheet でした
>>709 これいいね。製本したの売って欲しい。1000円までなら出す。w
defmacroの中の`を,式の中で一時的に無効化したい場合ってどうすればいいんだろ?
>>711 どういう時にそんなことがしたくなるの?
>>712 :keyのオプションがあるときとないときで,生成される式を変えたい.
「何を知りたいか」よりも「(最終的に)何をやりたいか」を書いたほうが適切なアドバイスが 受けられることが多い。自分の考えたアプローチが適切でない場合があるからだ。
(defmacro foo (&key (key 'default sup?)) (if sup? `(progn '(key => ,key)) `(progn ',key))) (foo :key foo) (KEY => FOO) (foo) DEFAULT こういうことかな?
>>714 , 713
ありがとうございます.
私が欲しているのは,closeを書かなくても最終的に勝手にcloseしてくれる
with-open-stream見たいなマクロです.
今通信のプログラムを書いおり.ClientとServerに分かれた
プログラムなのですが,ClientからServerにコマンドを発行します.
このときClientがServerに向けて発行したコマンドが適切でなかった場合や,
コマンドの実行が失敗したとき,ServerはFAILED的なメッセージを返したいの
ですが,多数あるコマンドを処理するハンドラがnilを返したら,FAILEDを返信する
コードを自分で書くのは面倒なので,マクロで何とかできないかなと思ったわけです.
いろいろ書きましたが,最終的にはこれがやりたいことです.
unwind-protectはどうかな
719 :
o :2008/09/16(火) 20:17:08
なんか
>>716 さんの挙げてくれたコードを参考にしたら
すんなり望みのものが得られました.
もうひとつ質問なのですが,
format関数で新しい行を追記するのではなく,ある場所に上書するのは
どうすればよいのでしょうか?
何をしたいのかというと,Linuxのtopコマンドみたいな出力を行いたいです.
curses について学んでみましょう
>>721 cl-ncursesをSBCL 1.0.11.debianにasdfで自動インストールしようと思ったら
; loading system definition from /usr/lib/sbcl/site-systems/cl-ncurses.asd into
; #<PACKAGE "ASDF0">
; registering #<SYSTEM :CL-NCURSES {AC27721}> as CL-NCURSES
; loading system definition from /usr/lib/sbcl/site-systems/uffi.asd into
; #<PACKAGE "ASDF0">
; registering #<SYSTEM UFFI {ADD6159}> as UFFI
STYLE-WARNING: defining *NULLPTR* as a constant, even though the name follows
the usual naming convention (names like *FOO*) for special variables
;;; Loading #P"/usr/lib/libncurses.so"
NIL
*
debugger invoked on a SB-INT:SIMPLE-READER-ERROR in thread #<THREAD "initial thread" {A84D681}>:
SB-INT:SIMPLE-READER-ERROR on #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDIN* {9115901}>:
unmatched close parenthesis
Type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL.
restarts (invokable by number or by possibly-abbreviated name):
0: [ABORT] Exit debugger, returning to top level.
(SB-INT:SIMPLE-READER-ERROR
#<SYNONYM-STREAM :SYMBOL SB-SYS:*STDIN* {9115901}>
"unmatched close parenthesis")
0] :0
こんなメッセージが出てとまってしまいます...どうすればよいのでしょう?
デバッグすればいいんじゃね? | unmatched close parenthesis とかいわれてるから括弧の対応がおかしいところがあるんではないかと。
カーソル位置移動したいだけならエスケープシーケンス直接出力すればいいんじゃね?
それが端末によって統一されていないからcursesのようなものがあるのでは?
termcap/terminfoで済むことも多い。
((1 2 3) (4 5 6)) 見たいなリストが与えられて (要素の数は不定,だから((1 2 3) (4 5 6) (7 8 9)...)かもしれないし((1 2 3))かもしれない) それを(mapcar #'+ '(1 2 3) '(4 5 6) '(7 8 9)) 見たいな感じでばらしてmapcarに渡したいんだけど,こういう場合どういう風に すればエレガントですかね?
>>727 (apply #'mapcar (cons #'+ '((1 2 3) (4 5 6))))
>>728 これは面白い!
こういうのをさっと思いつけるようになりたいなぁ
(apply #'+ (flatten '(1 2 3) '(4 5 6) '(7 8 9)))
(apply #'+ (flatten '((1 2 3) (4 5 6) (7 8 9)))) こっちだった。
flattenって標準じゃないべ。それに期待してる結果と違う希ガス。
(apply #'mapcar #'+ '((1 2 3) (4 5 6) (7 8 9))) (loop for i in '((1 2 3) (4 5 6) (7 8 9)) sum (apply #'+ i))
Lisp初心者です。
SBCL 1.0.20 + clsql + mysqlで日本語(UTF-8)が通らなくて困っています。
LinuxUbuntu6にsshでつないでEmacs22.2.1上のslimeです。
クライアントは、windowsXP poderosa4.10 のUTF-8です。
slimeでは日本語は通ります。
ttp://faroffsea.blogspot.com/2007/09/mysqlclsql.html 上のサイトを参考に、
[mysqld]
skip-character-set-client-handshake
default-character-set = utf8
としてみましたがうまくいきません。
どなたかわかる方いらっしゃいましたら教えてください。
よろしくお願いします。
>>734 続き
動かしてみた状態です。何か問題があるのでしょうか?
; SLIME 2008-07-29
CL-USER> (setf sb-impl::*default-external-format* :utf-8)
CL-USER> (setf sb-alien::*default-c-string-external-format* :utf-8)
CL-USER>"あいうえお" => "あいうえお"
CL-USER> (clsql:connect '("localhost" "name" "name" "p") :database-type :mysql)
CL-USER> (clsql:def-view-class tes () ((body :type string)) (:base-table tes))
CL-USER> (clsql:create-view-from-class 'tes)
CL-USER> (clsql:insert-records :into "TES"
:attributes '(body)
:values '("aiueo"))
CL-USER> (clsql:insert-records :into "TES"
:attributes '(body)
:values '("あいうえお"))
CL-USER> (clsql:query "select * from TES")
(("aiueo") ("?????")) ;;?????になってしまっている。
("BODY")
M-: slime-net-coding-system M-: default-process-coding-system これらの結果は?
>>736 ありがとうございます。結果は以下です。
M-: slime-net-coding-system => utf-8-unix
M-: default-process-coding-system => (mule-utf-8 . mule-utf-8)
使ったこと無いけど、db-mysql/ の下に ;; if we have :sb-unicode, UFFI will treat :cstring as a UTF-8 string と書いてあったから、普通にビルドしてれば通るんじゃ。 つーか問題の切り分けは出来てるん? mysql直接叩いても化けるのか、sbcl+clsql+mysqlでも化けるのか、 slimeを通したときだけ化けるのか判断できないんだが。
>>738 すべての形でだめです。
sbclのreplから
* "あいうえお" => "あいうえお"
* (clsql:create-view-from-class 'tes)
* (clsql:insert-records :into "TES" :attributes '(body) :values '("あいうえお"))
* (clsql:query "select * from TES")
(("?????"))
("BODY")
mysqlから
mysql> show variables like 'char%';
character_set_database,character_set_filesystem,以外全部utf8
mysql> insert into TES values("あいうえお");
mysql> select * from TES;
+-------+
| BODY |
+-------+
| ????? |
| ????? |
+-------+
>>739 mysqlで日本語が通らないならmysqlのスレで質問すべきだろう、と思うが
>>741 あとアドバイスだけど、長い日本語を入れて出力を nkf -g すれば
壊れてるのか、他のエンコードで出力されちゃってるのかは判断できるよ。
参考までに。
>>740 ,742
すみません。すれ違いなのにアドバイスありがとうございました。
mysqlについて調べてみて、character_set_server=utf8
を追加して、DBを構築しなおしてみたらうまくいきました。
おさわがせしました・・・。
744 :
デフォルトの名無しさん :2008/09/25(木) 00:47:14
745 :
465 :2008/09/26(金) 19:03:14
お久しぶりです。 Lispworksから返信が返ってきたのですがその一部で確認頂きたい事が 有りましたので一部引用いたします。 We would like to invite Kent Pitman (who originally built the HyperSpec) to join this email thread. Is that OK with you? Please let me know. この部分なのですがこの場合はどのようにするべきでしょうか? やはりshibuyalispなどにプロジェクトを立ち上げてそちらをご連絡するのが ベストでしょうか
746 :
465 :2008/09/26(金) 19:04:06
お久しぶりです。 Lispworksから返信が返ってきたのですがその一部で確認頂きたい事が 有りましたので一部引用いたします。 We would like to invite Kent Pitman (who originally built the HyperSpec) to join this email thread. Is that OK with you? Please let me know. この部分なのですがこの場合はどのようにするべきでしょうか? やはりshibuyalispなどにプロジェクトを立ち上げてそちらをご連絡するのが ベストでしょうか
すいません、サーバーエラーで二回書き込んでしまいました。
は? HyperSpec創始者にもこの電子メールの議論に参加してもらいたいっていう だけだろ? yesかnoで答えるだけじゃん。 その引用からなぜ「やはり〜」になるのか意味不明なんだが。
おお、何か(当然の流れとはいえ)話がおおきくなってきたな。ドキドキするぜ。 礼儀で聞いてきてるだけなんだから、どうどうとYESと答えりゃいいんじゃね?
750 :
465 :2008/09/27(土) 12:44:46
わかりました。少し緊張してきました。 YESでいきたいと思います。
>>751 オクだからLispMachineでも出てるのかと思ったら
噴いたじゃねぇかゴルァ
上品な大人っぽい雰囲気の『CLISP』。 大人っぽい括弧が括弧良くコードに落ち着きを与えてくれます。 お洒落な関数型や手続き型のような雰囲気があります。CLOS、 MOP、FFIなどお仕事を選ばないデザインも長く飽きずに お使いいただける要素かと思います。
大量のハッシュの設定が面倒だったので一気に指定できるマクロを作成しました 修正できる所をご教授願います。 (defmacro sethash (table key word) `(setf (gethash ',key ,table) ,word)) (defmacro multiple-sethash (table &rest key-word-lst) `(progn ,@(mapcar #'(lambda (pair) `(sethash ,table ,@pair)) (group key-word-lst 2)))) (defun group (source n) (if (zerop n) (error "zero length")) (labels ((rec (source acc) (let ((rest (nthcdr n source))) (if (consp rest) (rec rest (cons (subseq source 0 n) acc)) (nreverse (cons source acc)))))) (if source (rec source nil) nil)))
>>755 こうすると hello! が2回表示されるよ?
On Lisp の「マクロのその他の落し穴 」参照。
(defparameter *hash* (make-hash-table))
(defun my-hash ()
(format t "hello! ")
*hash*)
(multiple-sethash
(my-hash)
:foo 1 :bar 2)
やることの割に長いのがいかんよ。これでよくない? (defmacro puthashmany (table &rest key-and-value-list) `(let ((tbl ,table) (lst ',key-and-value-list)) (loop for (k v . r) on lst by #'cddr do (setf (gethash k tbl) v))))
ボケてた。setfを並べるのが目的か。 (defmacro puthashmany (table &rest key-and-value-list) (let ((tbl (gensym "TBL"))) `(let ((,tbl ,table)) ,@(loop for (k v . r) on key-and-value-list by #'cddr collect `(setf (gethash ,k ,tbl) ,v)))))
こんな処理が遅いのですが、なぜなんでしょう? (defun speed-test (times) (do ((i 0 (1+ i)) (sum 0 (+ sum i))) ((= i times) sum))) 実行してみると・・・ CL-USER> (time (speed-test 10000000)) Real time: 5.828125 sec. Run time: 5.578125 sec. Space: 159668340 Bytes GC: 250, GC time: 1.265625 sec. 49999995000000 5秒以上かかります。Javaだとだいたい100msで終わるのですけど。 Spaceをいっぱい食っているのもよく分かりません。環境はCLISPです。
>>759 うちのチープマシンじゃ
clispの場合コンパイルしても1秒かかる orz
sbclだと0.12秒
762 :
579 :2008/10/03(金) 12:25:44
はい、(compile 'speed-test)はしました。 さらに、ちょっと合っているか分からないですけど、 更にこんな感じでチューニングしてみました。 (defun speed-test (times) (declare (optimize (speed 3) (safety 0))) (declare (fixnum times i sum)) (do ((i 0 (1+ i)) (sum 0 (+ sum i))) ((= i times) sum))) でも、何にも効いてないような・・・。 CL-USER> (compile 'speed-test) WARNING: SPEED-TEST is already compiled. SPEED-TEST NIL NIL 実行。 CL-USER> (time (speed-test 10000000)) Real time: 6.28125 sec. Run time: 5.90625 sec. Space: 159668340 Bytes GC: 249, GC time: 1.578125 sec. 49999995000000 逆に遅くなってますね・・・。
763 :
579 :2008/10/03(金) 12:49:48
あれ?
>>761 さんの環境だと結構速いんですね。
とりあえず、私の書き方が悪いわけじゃなさそうだということが分かって良かったです。
ちなみに末尾再帰で書いてもあんまり改善しませんでした。というか、遅くなりました。
(defun speed-test (times sum)
(if (zerop times)
sum
(speed-test (- times 1) (+ sum times))))
CL-USER> (compile 'speed-test)
WARNING: SPEED-TEST is already compiled.
SPEED-TEST
NIL
NIL
CL-USER> (time (speed-test 10000000 0))
Real time: 6.84375 sec.
Run time: 6.328125 sec.
Space: 159999132 Bytes
GC: 250, GC time: 2.25 sec.
50000005000000
CL-USER>
>>763 clispは末尾再帰を最適化しない(ことが多い? 全然しないのか少しはするのか知らない)。
末尾再帰の最適化をしない処理系で期待しても無駄というもの。
disassembleしてみりゃすぐわかるから確認すれ。
>>763 761だけどclispでコンパイルしないと12秒位かかるんよ,(compile 'speed-test)して1秒
x86_64 clisp 2.42でだけど ちなみに763のコードはコンパイルしないとスタック足りなかった。 [1]> (defun speed-test (times) (do ((i 0 (1+ i)) (sum 0 (+ sum i))) ((= i times) sum))) SPEED-TEST [2]> (time (speed-test 10000000)) Real time: 10.158625 sec. Run time: 10.16 sec. Space: 0 Bytes 49999995000000 [3]> (compile 'speed-test) SPEED-TEST ; NIL ; NIL [4]> (time (speed-test 10000000)) Real time: 0.780928 sec. Run time: 0.78 sec. Space: 0 Bytes 49999995000000 [5]>
>>794 clispはコンパイルしたら末尾再起はループに展開されるぞ
794です。数日先のみ来から来ました。 767 さん。コメントありがとうございます。知らなかったので大変助かりました。 794で悩んだことはおかげさまで解決しました。
メモリ使用量が多いのは most-positive-fixnum より多きい数字の計算にはメモリを消費するから。 ループを減らして結果が most-positive-fixnum 以下になるようにすると消費メモリが 0 になるのが確認できると思う。 性能は現在のバイトコードインタプリタならこんなもんだろう。タイトループの実行速度でJIT装備のJavaより速いなんてのはムリ。 性能が必要ならトレースキャッシュなJITが実装されるまで待つか、自分で実装するか、別の実装を使うかどちらか。
>>767 えー
おれが前にやったらだめでガックリした覚えが
771 :
579 :2008/10/04(土) 07:57:42
>>769 おお!明確な答え、ありがとうございました。
確かに小さな値に対しては速かったんです。
ちょっと処理系を変えながらいろいろ試してみたいと
思います。ありがとうございました。
772 :
759 :2008/10/04(土) 07:59:21
sbclを使ってスレッドプログラミングをしています スレッド間通信をさせたいんですが なんかそういう目的のためのキューとかメールボックスとか それ系のデファクトスタンダードなライブラリってないんでしょうか asdf-installからacl-compat入れてみたんですが acl-compat.mp:queueはないみたいなんです
いつのまにかeclでmaxima動くようになってたんですね
sbclのarm portって進行中なの? それとも予定は無い? 教えて詳しい人。
少なくともここ二年くらいはだれも手をつけていないと思う。それ以前は知らね。
(let ((hoge #'(lambda ~~))))と (let ((hoge (lambda ~~)))) どっちのlambdaが正しいの? 前者だと思ってるけど、GNU CLISP 2.45だとどっちでも同じ意味で通る。
どっちも正しいよ。HyperSpecで Macro: LAMBDA のページを読むといい。 (macroexpand '(lambda () ())) => #'(lambda () ()) みたいな関数に展開されるマクロとなってる。 どっちを好むかはlisperの中でも好みはわかれるところ。このマクロ導入の経緯はPCLに書いてあるよ。
ありがとう!どっちも正しいのか。 On Lispでは#'だったから疑問に思ってた。 仕様書よんでみます〜 ^o^
(test '(1 2 3 4) '(1 2 3 4 5)) とかやると (append '(1 2 3 4) '(1 2 3 4 5)) 見たいなリストが得られるマクロ(?)がほしいんだけど そのままevalに渡したら,そのまま実行できるやつ形式に出力してくれるやつ. (defmacro test (a b) `(list 'append ,a ,b)) こういう風に書いたんだけど,どうしても (APPEND (1 2 3) (1 2 3)) クオーティングされちゃうんだよな... a, bに渡されたものがそっくりそのままa, bに入るようにはかけないものか?
つ (defmacro test (a b) `'(append ,a ,b))
783 :
782 :2008/10/29(水) 23:54:28
名前からしてテスト系のマクロを作りたいのかな? とりあえず実践Common Lispの9章まで読んでみるといいと思うよ。 英語OKならPractical Common Lispでもいい。
>>781 aまたはbがコンスで、かつそのcarが'QUOTEの場合だけ、事前にもういっちょquoteしてやったらどうよ
>>783 逆だろ。
「英語がダメなら実践Common Lispでもいい」じゃないのか普通は。
原書である上にタダで読める方を後にもってくる理由がわからん。
そんな怒らなくても…日本語版しか読んでないです。やっぱり原著よまないと駄目なんですか?
>>785 言いたいことはわかる。でもその「理由がわからん」ってのは嘘だねw
「レスって何ですか?」とかの親戚。「あるべき道しか理解できないキャラ」作るの好きだよな、マって。
>>787 天然だろ。
キャラ作るという発想は陰謀論の親戚。
言葉だけでは人は分かり合えないのさ!
オッカムの剃刀みたいなものだ
荒れてしまってごめんなさい。英語勉強してから出直します…
2chで下らない煽り合いを気にしてたら禿げるぞ (defmacro test (fun &rest lists) (let ((form `(,fun ,@lists))) `(format t "~S => ~A" ',form ,form))) (test mapcar #'+ '(1 2 3) '(4 5 6) '(7 8 9)) ↓ (mapcar #'+ '(1 2 3) '(4 5 6) '(7 8 9)) => (12 15 18) こーゆーのはちょこちょこ使う。
>>793 なんでわざわざ引数わけてるの?
(defmacro test (&rest form)
`(format t "~S => ~A" ',form ,form))
じゃダメなん?
795 :
793 :2008/10/31(金) 01:04:40
うわ。2行目とか全然無駄だね、なんで分けたんだろ
(test) を引数が足りないエラーにするためじゃない?
799 :
797 :2008/11/03(月) 01:23:54
>>798 ありがとうございます。
さっそく動かしてみます!
3D系のものも、何かないでしょうか・・・。
3D CADのブール演算のようなものを作りたいんですが、
そのプリ・ポストに使う予定です。
slimeでステップ実行デバックはできないのでしょうか?
slime上で (require :hunchentoot) すると落ちる コンソール上だと落ちない
SLIME+CLISP REPLバッファで式を評価すると --- error in process filter: slime-dispatch-event: Elisp destructure-case failed: (:presentation-start 1 :repl-result) error in process filter: Elisp destructure-case failed: (:presentation-start 1 :repl-result) error in process filter: slime-dispatch-event: Elisp destructure-case failed: (:presentation-end 1 :repl-result) error in process filter: Elisp destructure-case failed: (:presentation-end 1 :repl-result) --- みたいなエラーがミニバッファに表示されて、それから結果が返ってきます 何が悪さをしているんでしょう? Emacs側なのかそれともLisp側なのか
>>801 実行環境を書かないと同じ経験した人ですら書き込み不能と思われ
804 :
801 :2008/11/05(水) 14:16:58
>>803 ubuntu8.04
でapt-getでinstallされるsbclとslime
emacs22
を使いました
hunchentootはasdfでinstallしました
clispでLtkを使っています。 saveinitmem関数で実行形式のGUIアプリケーションを作ったのですが これはポータブルなのでしょうか?それともダウンロードしたユーザーのマシン内にclispや tcl/tk,ltkがインストールされていないと配布しても実行できないのでしょうか? もし実行できないのならLispからGUIを呼び出したアプリケーションの 配布方法を御享受願います。ほかにもCUIのツールがあるのですが どのように配布すればいいのかわからないのでよろしくお願いします。
common lispで数値計算簡単にできるようにしようと maximaの関数をsbclから直接利用しようとしたら lapack呼ぶ関数がgclでしか動かないみたいなのだけど 数値計算したかったらgclを使えってことなんでしょうか
clispを使っているのですが ext:run-program をネストするには どのようにすればいいのでしょうか? 開発環境がdebianなので他のOSに有るのかはわかりませんが su-to-rootとという内部コマンドがあり-XオプションをつけるとX上のダイアログで rootになれさらに-c cmdオプションでcmdをroot権限で実行する事ができます。 これとLtkを利用してボタンを押すとsu-to-rootでroot権限を手に入れて cmdを実行するという事をしたいのですがその実行したいcmdにも引数が必要だと (ext:run-program "su-to-root" :arguments '("-X" "-c" "cmd" "cmd-option")) と言う風にするとcmd-optionがsu-to-rootの引数と認識されてしまいます。 そこで (ext:run-program "su-to-root" :arguments '("-X" "-c" "cmd cmd-option")) としてみても動作は同じでした。 これを解決するにはどのようにすればいいのでしょうか? よろしくおねがいします。
>>807 CLの質問じゃない気がするが。俺の環境じゃ "cmd cmd-option" で動く。
そうですか... このような微妙な質問は何処ですればいいのか....
cmuclのrequireがアプリによって動いたり動かなかったりするのはバグですか?
やっぱスレタイがよくないと思うんだ 頭のmake-thread nameが余計だ 一瞬何のスレだかわからん これにせいで明らかに失速してる
そのせいで失速したかは知らないが 前の【入門】Common Lisp そのn【質問よろず】 ってスレタイは 初心者にも優しい感じがして好きだったなあ
俺も前のスレタイの方がいいと思うな 次にスレ建てするときは戻すのを希望
(make-thread :name common-lisp :part 5) した結果が common-lisp :part 5 というスレだよな〜とは思っていた。
○ Common Lisp × common-lisp
>>812 最初にlispの情報を集める時は
入門 tourotial lisp
で検索する
今のスレタイだと検索にひっかからない
tourotial は必須だよな
ポーランド語?
どうでもいい事に時間を使わない それが神のlisper
どうでもいいレスありがとう。
適当にスペル間違ってもgoogleが自動補正してくれるからな
(unsigned-byte 8)のarrayのポインタを指定バイト数だけ進めるのはどうしたらよいのだろうか? サイズを制限(?)するのであればfill-pointerが使えるようだが,書込み開始のオフセット アドレスを指定する方法がわからん 誰か教えてください
GUIに関して質問です。 LTK、SDL、CLIMなどがあるということはわかったのですが、それぞれの特徴なんかを教えていただけたらと思います。
あLispスレ1000いったか
826 :
デフォルトの名無しさん :2009/01/19(月) 12:00:40
ポールグレアムの ANSI Common Lisp で自習しています。 練習問題を解いているのですが、誰か採点してくれませぬか。 もうちょっと短く書けるぞボケ! とか指摘してもらえるとうれしいです。 問題: リストの要素数ほどドット '.' を表示する関数をループ、再帰で書け ; ループ版 (defun display-dots (lst) (do ((x lst (cdr x))) ((null x) 'done) (format t "."))) ; ループ版 (length を使う) (defun display-dots (lst) (do ((i 0 (+ i 1))) ((= i (length lst)) 'done) (format t "."))) ; 再帰版 (defun display-dots (lst) (if (null lst) 'done (progn (format t ".") (display-dots (cdr lst)))))
漢なら自分の信じた道を突き進め!たとえその結果が問題の主旨と外れていたとしてもだ!なぜなら・・・もっとも美しいコード以外に存在価値など無いからだ! おれだったらこう (defun display-dots (lst) (progn (mapcar #'(lambda (x) (format t ".")) lst) 'done))
>>826 doの終了条件からlength呼出をくくりだしたほうがいいんじゃないか
再帰版はこっちの方がらしい気がする。doneが必要か知らないけど。 (defun display-dots (lst &optional dots) (if lst (display-dots (cdr lst) (concat "." dots)) (progn (format t dots) 'done))) 趣旨を無視すれば、わたしならこうかな。 (defun display-dots (lst) (format t "~{~*.~}" lst) 'done)
解釈が間違ってたらすまんけど、 progn内で呼び出してたら末尾再帰にならないんじゃないかな?
あいやつまり、
>>829 を
(if (not lst)
(progn (format t dots) 'done)
(display-dots (cdr lst) (concat "." dots)))
とした方がより
>>826 の意図を(たぶん)すくいあげてるし、お行儀がいいかなと。
833 :
pl602.nas954.p-kanagawa.nttpc.ne.jp 826 :2009/01/19(月) 21:53:22
みなさんありがとうございます。826 です。 まだ本で mapcar と &optional のところまで進んでいないので、参考になります。ありがとうございます。 mapcar を使うとイテレータができて、&optional を使うと末尾再帰が書きやすくなるんですね (たぶん)。 とりあえず、まだ本に出てきていない mapcar と &optional を使わないという前提で、 みなさんのコードを参考に次のようにしてみました。 ; 末尾再帰版 (defun display-dots (lst) (if lst (progn (format t ".") (display-dots (cdr lst))) 'done))
834 :
pl602.nas954.p-kanagawa.nttpc.ne.jp 826 :2009/01/19(月) 21:59:01
たてつづけになりますが、もういっちょ問題を解いてみました。 こんな問題でした。 問題: リストを引数とし、a というシンボルがいくつあるか返す関数をループ と再帰で書け ; ループ版 (defun na (lst) (let ((n 0)) (do ((x lst (cdr x))) ((null x) n) (if (eql 'a (car x)) (setf n (+ n 1)))))) ; 再帰版 (defun na (lst) (if (null lst) 0 (if (eql 'a (car lst)) (+ 1 (na (cdr lst))) (na (cdr lst))))) Common Lisp は細かい関数がたくさん用意されているようなので、 もう少し勉強を進めて短く書けるようになりたいです。
836 :
826 :2009/01/19(月) 23:34:19
>>835 おわー、いつの間にか fusianasan になっていました。
navi2ch が古かったんですね。ありがとうございます。
>>827 > (mapcar #'(lambda (x) (format t ".")) lst)
ここは mapc 使おうぜ
834の再帰版は、末尾再帰で書きたいな
839 :
827 :2009/01/20(火) 00:05:27
>>837 そね。あとprognもいらなかったし。
840 :
827 :2009/01/20(火) 00:31:32
あまり手取り足取りになるのもどうかと思うが、
>>834 を末尾回帰にするなら
(defun na (list &optional (count 0))
(if (not list)
count
(na (cdr list) (if (eql 'a (car list)) (+ count 1) count))))
ってとこか。&optionalなしの末尾回帰はキビシイ
(defun na (lst) (labels ((na (lst n) (if lst (na (cdr lst) (if (eql 'a (car lst)) (1+ n) n)) n))) (na lst 0))) みたいなところだろうけど、これは&optionalより先の話題か…
(defun na (lst) (let ((n 0)) (dolist (x lst n) (when (eql 'a x) (incf n))))) か (defun na (lst) (loop for x in lst count (eql 'a x))) かな。 Paul Grahamの本だとloopマクロはあんまし出て来ないよね。 しかしこーゆーチュートリアル的なコードを頻繁に見てると count関数の存在を忘れそうになるw
do 使うなら let は要らんな (defun na (lst) (do ((x lst (cdr x)) (n 0 (+ n (if (eql 'a (car x)) 1 0)))) ((null x) n)))
844 :
デフォルトの名無しさん :2009/01/21(水) 00:56:33
すみません、質問があります。m(_ _)m こういうリストがあって、 (* x (* 2 y)) これのyに値を代入した関数を作るマクロを書いたんですが、 上手く動作しなくて・・・ (defmacro chg (symb val lst) `#'(lambda (x) ,(subst val symb lst))) 使用例: (funcall (chg y 3 (* x (* 2 y))) 4 ) 意図したとおりに動作する 結果:24 (setf f '(* x (* 2 y))) (funcall (chg y 3 f) 4) 結果が以下のようになってしまう・・・。 (* x (* 2 y)) どうか、ヒントをください・・・。
>>844 > (funcall (chg y 3 f) 4)
この書き方だと、subst 実行時に (subst 3 'y 'f) になっちゃって、
substが、fが指し示すリストに対して適用されない。
って書き方で良い?
たぶん、もっと正しい用語があるんだろうけど…。
いまのぼくにはむりっす。
1つ目の例では (subst y 3 '(* x (* 2 y))) と評価されて #'(lambda (x) (* x (* 2 3)))が返されるけど、 2つ目は (subst y 3 'f) → f だから #'(lambda (x) f) となってしまうよ。
yの前のクォートが抜けてた。
>>844 クォートされて単なるシンボルのリストになっているlstの値をevalで評価して、変数を含んだ式を取り出す必要がある。だからこう:
(defmacro chg (symb val lst)
`#'(lambda (x)
,(subst val symb (eval lst))))
>>844 お前がやろうとしているのは
(setf lst1 '((= n 0) 1))
(setf lst2 '(t (* n (factorial (- n 1)))))
(defun factorial (n) (cond lst1 lst2))
これと同じことだな。
>848
そうすると
(funcall (chg y 3 (* x (* 2 y))) 4 )
が使えなくなるから、
(if (symbolp lst) (eval lst) lst)
と分岐するのが良い。
本当に
>>844 の意図してる挙動なのか知らないけど・・・。
>>845-850 みなさん、いろいろとアドバイスありがとうございます・・・m(_ _)m
∫∫f(x,y)dxdy の数値積分をしたかったんです。
具体的には、2次元のガウス積分です。
∫f(x)dx を計算する関数を作ったので、2次元でも利用しようと・・・
f(x,y) のyに定数を入れて f(x) にしてから1次元のガウス積分
関数に渡すつもりだったんです。
C++でつくるなら、何も考えずに∫∫f(x,y)dxdy専用関数を作るんですが、
強力なマクロが使えるLispなら・・・と勉強を兼ねて冒険した次第です。
みなさんのアドバイスをもとに、もう一度考えてみます。
(たぶん、
>>848 ,850さんの関数を使わせてもらうことになりますが)
ありがとうございまいた。
>>851 「強力な○○が使える××なら・・・」
いかにもC++脳のひとがいいそうなせりふですが
マクロは使わないのが正解のような気がします
これでいいんじゃないですか
(setf f #'(lambda (x y) (* x (* 2 y))))
(setf g #'(lambda (x) (funcall f x 3)))
853 :
デフォルトの名無しさん :2009/01/29(木) 00:19:57
Lispに興味をもち最近、
Lispbox[
http://gigamonkeys.com/lispbox/] をダウンロードしました。
WindowsXPに、CLISP版のLispboxを導入しました。
現行のLispbox-0.7では、CLISPのバージョンは2.37です。
WindowsでEXEを作成できるCLISPはバージョン2.38からと見かけました。
http://lispuser.net/commonlisp/clisp.html#sec-12 EXE作成機能を使いたいのでCLISPの現行最新安定版2.47を
Lispboxの環境に導入したいのですがうまくいきませんでした。
Emacsを21.3から22.3へ
CLISPを2.37から2.47へ
SLIMEをslime-20060110からslime-2009-01-25へ
それぞれ変えて該当するフォルダと入れ替えました。
また、Lispbox-0.7での下記に相当するファイルを
中身を書き換えて追加しましたが、REPLバッファ?が表示されませんでした。
たくさんの文字が一箇所に集まるアニメーションが出ませんでした。
%LISPBOX_HOME%lispbox.bat
%LISPBOX_HOME%emacs-21.3/site-lisp/lispbox.el
%LISPBOX_HOME%clisp-2.37/lispbox-register.el
Lispboxの環境をいかしつつ、最新のCLISP、Emacs、SLIMEを導入する方法はないものでしょうか。
あるいは、ほかにLisp処理系をアップグレードするときの良い方策がありましたらご紹介いただけないでしょうか。
Replバッファや起動時のスプラッシュについては slime-fancy でググるといいよ。
最初っからEXEにこだわらないのも一つのやり方だと思う。 大きなアプリ書けるようになってから取り掛かっても遅くない。
857 :
デフォルトの名無しさん :2009/01/29(木) 02:02:13
みなさま、ご回答ありがとうございます。 夜更かしのかいがありました。 まだ何事もよく分からぬものなので ご参考にしつつ明日以降、教えていただいたことを掘り下げていこうとおもいます。 まずはexeにこだわらず学習していこうとおもいます。 開発環境の操作方法や設定なども身につけたいです。 ひとつずつ試していこうとおもいます。 アドバイスありがとうございました。
EXEにこだわらないなら、cygwinも導入しとくと、 いろいろな処理系、ライブラリ、環境試せるよ。
860 :
デフォルトの名無しさん :2009/01/30(金) 22:10:11
>>854 のやつはSLIME,LTKが付いてるよ。yahooによると環境によっては動かないみたいだが。
当方のFreeBSD環境でLispで作ったプログラムをWindowsユーザーの人に 配布したいのですが相手方はエンドユーザーなので処理系の話などは理解してくれないと思います。 そこでWindows向けのexeファイルを作ろうと思うのですが あいにく私の手元にはWin機が一台も無く出先のPCにclispを一時的に インストールしexeを作成次第アンインストールして置こうと思っています。 clispのext:saveinitmemでwindowsのexeファイルを作成しようと思っているのですが、 ここでできるファイルはあいてPCのアーキテクチャが同じであれば無事動作する物と考えてよいのでしょうか? おそらく友人のPCも出先のPCも"インテルはいってる"の環境だと思うので 無事動作するのならばそのためにやっかいなWindowsマシンを購入する必要は無いと 思っているのですがよろしくおねがいします。
>>862 能書きはいいからさっさとWindws Server 2008をダウンロードして使え
clispくらいならwineで動くんじゃね?
>>862 やはりWindows向けにはそのようにするしか無いのでしょうか?
>>864 Windows用のclispをダウンロードして
そこでプログラムをWindows向けに作成しろと言う事でしょうか?
いいからこんなとこ見てないでclispでイメージ作って友人のPCで動くか実験すりゃいいだろ
>>862 zipで処理系と一緒に渡すんじゃ駄目なの?
無理に話を難しくすることはないと思うが…
アホどもにも判るようにインストーラで配布したら?
昔はwindowsはアーカイバがなかったから、(ライセンス料の関係だと思う) まず「lha/zip/lhasaをインストールして」ってのを嫌って、 exe形式のセルフ展開アーカイブってのが流行ったけど、 今はwindowsでも普通にzip形式で配布してるよ。 中にインストーラが入ってたり。圧縮もできるからね。 EXE厨って何なんだ一体。
>>866-869 ありがとうございました。
Windows環境ではアプリケーションはインストールが基本でした。
それを失念してしまっていて展開してスタンドアロン実行できないと困ると思っていました。
インストーラーとスクリプトファイルを同梱して渡す事にしました。
学習のためにLispの処理系を自作しようと思っているのですが なにか参考になる書籍・Webページなどがありましたらご紹介願います。 C言語などで実装できればと思っています。
Gaucheのソースコード
>>873-874 あるていどほとんどの言語は使いこなせるのですがLispは仕組みについても知りたいですし
ガベージコレクションやビックナムやマクロなど素晴らしい機能の実装について見てみたいので
自作してみたかったのですまず
>>874 さんのご紹介してくださった1000行lispをじっくり学んでみようと思います。
そういう半端なものよりは minischeme(tinyscheme)のがいいと思う。 3000行ぐらいだったかと。末尾再帰や継続も使える。 minischeme-0.85でググれば出てくる。
手続き型言語をやっていたのですがこのたびLispに入門しようとしてsbclを インストールしました。toplevelで変数をsetqで束縛しようとすると スペシャル変数になってしまう事はわかったのですが、 どうも手続き型言語の癖が抜けないようで数値入力を受けるプログラムで (let ((x (gensym)) (format t "Num:") (setq x (read))) と書いてしまうのですがこのとき(setq x (read))の部分で毎回 undefined variable: X と警告が帰ってきてしまいます、当然と言えば当然なのでどうすればいいのか迷っています。 このように手続き型の様に入力プロンプトから入力を受ける時のLispの伝統や規則が有れば お教え願います。
(let (x) (format t "Num:") (setq x (read))) なんの問題もなく動くけど…
(gensym)してる所なんか見ても、根本的に理解できてない。
何故そこでgensymを使いたくなったのか知りたい。 gensymを何だと思ってると、ああなるのか。
>>877 > toplevelで変数をsetqで束縛しようとすると
> スペシャル変数になってしまう事はわかったのですが、
ここからして違うが…
最初から勉強し直せ。
あぁ、入門スレだった頃が懐かしいなぁ。 (defun prompt-read (prompt) (format t "~A" prompt) (read)) で、あとは (prompt-read "Num: ") とかでどうかな?
まずは括弧の数え方から
希望としてはなるべくユーザーにLispな部分を見せたくないので Num:12 とするとxに12が代入されるようにしたいのです。 gensymしてるのは他にxと言う変数を使っているので 変数名の衝突を避けようとして使ってみました。たしかにいまいち使い方がわかりません。 ちなみにsbclないで(let (x) (format t "Num:") (setq x (read)))とすると 入力を受け付ける状態になって12と例えば入れるとその後にNum:が表示されます。 友人がclispでやっていたときはたしかNum:12とできていたような気がします。 その辺についてもよろしくおねがいします。
文法と関数の仕様しか読んでないのか・・・ > ユーザーにLispな部分を見せたくないので なんじゃそりゃ で、括弧が1つ足りないのは分かったのかい
説明を試みたいと思いますが、あなたのプログラミング経験を教えてください。 どんな言語をどれくらい使っていましたか?スコープの理解が不十分なように見受けられます。 例えば、 (let (x) (setq x (read))) の後で(print x) とした場合、(read) したxの値はもう消えています。 このあたりの感覚はLISPの書籍等を読みながら、実際に動かして練習したほうがいいでしょう。 また、後者の話は続にいう入出力のバッファリング問題ですが、C言語の経験等はありますか。
>>885 何はともあれ素直にEmacs使ってSLIMEでやった方がいいと思うよ。
>希望としてはなるべく略 そういう事は一通り理解してからにしなさい
>>887 すいませんはじめの例題でなぜかletを使っていました。
コードを隣のノートマシンの画面から手打ちしたので間違えていたようです。
Lisp以外の言語はC/C++を7年,Javaを3年
Perlを3年Pythonを2年ほど学習した事が有ります。
とりあえずLispでもコードは書いた順序で動作すると思っていたのですが
(format t "Num:") (setq x (read))としても
formatが入力受付後に出ているのでよくわかりません。
Cだと
int x;
printf("x: ")
scanf("%d",&x);
とすればx:が出た後そのまま入力を受け付けてくれたように思うのですが
少し前のレスでバッファリングの問題だとズバリ指摘されてるでしょ
>>891 >バッファリングの問題
問題という事はsbclの仕様上の問題だと言う事でしょうか?
ありがとう御座いました。
結局あきらめたっぽいけど、そんだけの言語が使いこなせて Num:12 をxに代入する問題をなんでlispで?Cでいいのでは
letはローカル変数の宣言だと思いねぇ あとCにもfflushなんてのがあったなー
どうしてもLispのいろんな機能がいるんですよね... BigNumとか強力なマクロとか... 取り合えずドキュメントを読んでみます。 clispもlocaleのエラーが起動時にうるさいですし
とりあえず(finish-output)を使った所きちんとNum:を出力し終わった後入力受付になりました。 助かります!! ありがとう御座いました。やっぱLispって難しいからわくわくします。
>>892 下記のコード
(let (x) (format *standard-output* ">") (force-output *standard-output*) (setq x (read)))
でどうでしょう。これは C でいうところの
{ int x; printf(stdout, ">"); fflush(stdout); scanf("%d", &x); }
です。このコードには問題がありまして、値を設定した直後にletスコープが終了するため、
変数xがなくなってしまいます。これはお望みの動作と違うような気がしますが。
この人は質問するだけして語るだけ語って 何一つ聞いちゃいないな
lispの機能が必要なのはいいとして、 scanfで対話的に入力しなきゃならん仕事なのか? もうちょっとましなデータ入力しようよ。
return x; 相当にしたらどうだろう。 (setq x (read)) を (read) にしてしまえばいい。 xの存在理由がなくなるけど
>>894 質問者は「 は…年学習した」とはいっても「使える」とは一言も言ってないw
>>885 ユーザーに見せたくない、とおっしゃっておられますが、誰かに説明でもするのでしょうか。
断片的な単語が誤った文脈で使われているようですし、理解が不十分な状態で説明を行うのは止めたほうがいいと思います。
老婆心から忠告しますが、あなたの現在の実力では筋の通った説明にはならないでしょう。キーワードを並べただけでは説明にはなりません。
>>898 さんにインスパイヤされて、
(defun num (sym) (format *standard-output* "Num:")(force-output *standard-output*)(set sym (read)))
これでどう?
>>897 (num 'x) と実行すれば x に代入されるぞ。(num 'y)でyに代入だ。
一応求める動作はしてるんでないかい
>>all ありがとう御座いました。 自分にも反省点や学習した点が多々有りますので じっくりとマニュアルを読みながら学習したいと思います。
>>897 Lispが難しいんじゃなくて、お前さんの頭がお粗末なんだよ。
あんまり初心者をいじめないようにな
>>907 7年もC/C++をやっていると称する人間を初心者扱いとか、
逆に本人に失礼だろう。
会話になってないんだが 釣りにしては調子の外れ具合が予想の斜め上すぎる
質問です。 Common LispとSchemeの関係は VisualWorksとSqueakの関係みたいなものでしょうか?
ご利用は計画的に。
どっちかっつーと C++(実用一点張り)とPASCAL(学術重視)みたいな関係というかそういう比較って意味ないと言うか
実用一点張りはperlだ。
何かを別のものに言い換えるだけではだめだよ。 VisualWorksとSqueakの関係とか目的も状態も全然違う。 ありのままで理解する努力が必要でしょう。
で、ありのまま理解してると今度は抽象化が苦手って言われるんですね それでまた犬と猫は動物だから同じだとか言うと、いや、全然違う、と
愚痴大将ですね。
何をやっても駄目な人間が、自分は悪くないと主張しようとすると、 全世界を愚痴らなくちゃいけないから大変だ。
愚痴る権利を与えられた生物は人間だけだ とこれは俺の言葉。
権利を否定している人間はいないが?
>>917 全否定されているうちに悟りを開く講習会とか、あんたの好みに合いそうだけどなー
最近lispスレの書き込みが増えたのと卒業研究のシーズンが終わったのと 関連はありますか?
そうか? 修論は半分くらいしか書けてなくて しかもオチが未定だったぞ。 よく卒業できたもんだ。
そうです。 まあ関連はないんですけどね。
900越えたな。 ところで妙に凝ったスレタイはどうする?
そんなの気にしてるの多分お前だけだよ 凝った、というかキモイけどな 立てる奴が勝手にすればいい
>>911 Common Lisp と Scheme の関係は、
Smalltalk と SELF の関係みたいなもんかな。
文法は一緒だけど、後者はシンプリシティを追求しているとことか。
なかなかLispっぽくていいとは思うけどな>スレタイ
全部大文字にした方がいいな (MAKE-THREAD :NAME COMMON-LISP :PART 5)
普通に以前のスレタイに戻した方がいいだろ、明らかに浮いてる
俺も前のスレタイに戻すのに1票 このスレタイはちとやりすぎだろ、なんか入門者お断りって雰囲気だし
旧スレタイに一票 現スレタイはちょっと凝りすぎで痛い気がする・・・
旧スレタイに +1 ちなみに旧スレタイ 【入門】Common Lisp その6【質問よろず】
まあ、Lispはもともと他の言語とは一線を画した構文だけどな.
現スレタイはぱっと見で分かりづらい 旧スレタイに更に1票
((((((((((((((((CommonLISP Part6)))))))))))))))))))) これでいい
>>939 Part.6だから括弧の数も6で合わせないとダメ
どうせなら再帰とかを使おうぜ
旧スレタイに一票。やっぱ入門って明記しないとなぁ。 LISP勉強したいとかいってる初心者にいきなりSICP勧めるとか…
943 :
デフォルトの名無しさん :2009/02/16(月) 22:13:26
((【入門】)(Common Lisp) (その6)(【質問よろず】))
汚いS式だなあ
綺麗なS式だろ。死んでるんだぜ、それ。 大した内容もないのに、ちょっと括弧の打ち所が悪かっただけで。 もう動かないんだぜ。
だから我らはエディタの全面支援を受けるのではないか!!
948 :
デフォルトの名無しさん :2009/02/16(月) 23:19:36
((入門)) (Common Lisp) (その6) ((質問よろず)) (笑)
(reverse "]ずろよ問質[ 6のそ 門入 psiLnommoC") わかりにくさを追求するとこういうのも
【審議中】 ∧,,∧ ∧,,∧ ∧ ∧ ( ) ( ・ω・) (ω・ ) ( U) ( つ日ノ ∧,,∧ | U u-u u-u ( uω) u-u (∩∩) ∧,,∧ ∩ ∧_∧ (・ω・') ⊂⌒( ・ω・) ⊂∪∪⊃ `ヽ_∩∩
【否決】 ∧,,∧ .∧,,∧ ∧∧(´‐ω‐`)(´‐ω‐`)∧∧ (´‐ω‐).∧∧) (∧∧ (‐ω‐`) | U (´‐ω‐`)(´‐ω‐`) と ノ u-u (l ) ( ノ u-u `u-u' `u-u'
952 :
949 :2009/02/16(月) 23:42:34
しょぼーん
せめて検索にかかるやつにしてくれ
むぅ、またしても '´ ヽ
)/ ノノ~)) (ノ゙゙")〉 l!
( ヽc#・-・)0 リ゚ヮ゚*|||< 泣き虫
>>952 / y/ / | ̄~|/ レ
<_」=∞< 0─とヾノ
____ / / l ヽヽ______// l ヽヽ_________
ヽuー-ーu'' ヽuー-u''
__ γ~___〉 くじけるではないぞ 〈 〈 ・ω・) /l/l ) ̄~~ (,__、]う彡 ・・\ ""へヘノ(_ノヽ-ヽ、__メ、゚_゚) j(´ ||__し'_|| / 彡ヘ  ̄ ,ノ | | | ̄ ̄| | | |_|_| |_|_|
_ /;;;人 . /;;/ハヽヽ わしはこんなスレタイに /;;ノ´・ω・)ゞ しとうはなかった! /////yミミ し─J
CommonLisp にするか Common Lisp にするかは 悩むところだな。検索にかかるという意味では まぁ俺も旧でいいと思うが
どのみちCommonで検索するから問題ない。
あっ、じゃあCommonとかけて、 (越後の縮緬問屋の隠居じゃ :part 6) とかで、どう?
鬼才現る
【審議中】
|∧∧| (( ) ) (( ) ) ((⌒ )
__(;゚Д゚)___ (( ) ) (( ⌒ ) (( ) )
| ⊂l
>>959 l⊃| ノ火.,、 ノ人., 、 ノ人.,、
 ̄ ̄|.|. .|| ̄ ̄ γノ)::) γノ)::) γノ)::)
|.|=.=.|| ゝ人ノ ゝ火ノ ゝ人ノ
|∪∪| ||∧,,∧ ||∧,,∧ || ボォオ
| | ∧ (´・ω・) (・ω・`) ∧∧
| | ( ´・ω) U) ( つと ノ(ω・` )
~~~~~~~~ | U ( ´・) (・` ). .と ノ
u-u ( ) ( ノ u-u
`u-u'. `u-u'
【埋葬中】
∧,,∧ ∧,,∧ ∧,,∧ ∧,,∧ ∧,,∧
( ´・ω) (,, )(,, )(,, )(,, )ナムナムー
| ⊃|__,>;* ザッザッ ⊂ ヾ ⊂ ヾ ⊂ ヾ ⊂ ヾ
u-u ・;*;'∴ ( ,,) ( ,,) ( ,,) ( ,,)
~~~~´゙`゙゙´´ ~~゙`゙´\ ∧,,∧/`゙゙´´ ~~゙゙´``´`´~~~~~~~~~~~~゙゙´``´`´
>>959
「越後のちりめん問屋」の落とし穴
>>959 TVドラマ水戸黄門で、黄門様は自分の身分を偽り「越後のちりめん問屋の隠居、光右衛門」と名乗っています。
つまり
「越後のちりめん問屋の隠居」=「黄門」=「Common」
という等式が成り立ちます。これを適用すると、
(越後の縮緬問屋の隠居じゃ :part 6) => (Common :part 6)
となるため、Lispが抜けていて「Common Lisp」か「Common programming language」か
確定できないという重大なバグがあります。
従って、「(越後の縮緬問屋の隠居じゃ :part 6)が次スレのタイトルに相応しい」
という仮説は棄却されます。
formatを駆使して、すべての候補を自動生成するのにすればいいじゃん
(みなさんの意見をまとめて、 (【入門】アーッ!Lisp その6【質問よろず】) でよろしいか-p)
T
なんでもいいよ いちいち人に聞くな
あんまりふざけないようにな 変なスレタイで建てたら削除依頼しちゃうぞ
>>970 久しぶりに見たけど、しっくりくるからやはりこれしかないな
common lisp上に作られたschemeってないのでしょうか?
dreamhostでclispのmakeできた 意外と簡単なんだね
stepなどのデバック機能を解説しているところ または本はないでしょうか
埋め
>>975 きほんてきにデバッグ方法は処理系によって違うと思われ
このスレさっさと埋めようぜ
と書かれても全く埋まらないことに泣いた ここって980(とかともかくレス一定数以上)越えてしばらく書き込みなかったら 落ちたりするっけ?
どうせあと20レス どうでもいいだろう
てか建てるの早すぎたんだよな 次スレは980でいいだろ
そうだな、980で十分かもね。 まぁゆるりといこうか
>>973 英語が読めるならPAIPに小さなSchemeもどきのコンパイラの作り方が出てくるよ。
埋め埋め
>>985 sf.net
のcvsパスが変更になっただけでした
ume
定期埋め
slimeの便利機能紹介希望 C-c C-z の逆向きってないのかな
どういう風に逆向き?
埋め
埋め
埋め
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((LISPの誤解その1。このようなコードはほとんど存在しない
シンタックス・エラーだからね。
]
カッコ悪い
梅
これなら今日中に埋まるね
1000なら今年はLisp year.
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。