[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 06/03 12:44 / Filesize : 297 KB / Number-of Response : 927
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【入門】Common Lisp その8【質問よろず】



1 名前:デフォルトの名無しさん [2011/07/06(水) 17:15:15.55 ]
lispを触ってみたい入門者のQ&A
初心者のQ&A
本スレでは恥ずかしくて聞けない人のQ&A
本スレは高度すぎて割り込めない人のQ&A
linuxでなくてwindowsでやりたいんですが・・・Q&A
lispを使用してC#やJAVAの代替にするための方法(おまけ)

ま、ゆっくりたりましょう。

「いいものの本質は、いかなる時代においても変わらない」byパワーズ

(list
(url pc8.2ch.net/test/read.cgi/tech/1101386936/l50 :part 1)
(url pc11.2ch.net/test/read.so/tech/1140012484/l50 :part 2)
(url pc11.2ch.net/test/read.so/tech/1181479267/l50 :part 3)
(url pc11.2ch.net/test/read.cgi/tech/1201402366/l50 :part 4)
(url pc11.2ch.net/test/read.cgi/tech/1215834213/l50 :part 5)
(url pc12.2ch.net/test/read.cgi/tech/1234884136/l50 :part 6)
(url hibari.2ch.net/test/read.cgi/tech/1270370267/l50 :part 7)


□テンプレート置き場□
ttp://wiki.fdiary.net/lisp/ (id:guest pass:cl)


129 名前:デフォルトの名無しさん mailto:sage [2011/09/09(金) 14:27:37.34 ]
激しくどうでもいいなwww

130 名前:デフォルトの名無しさん mailto:sage [2011/09/09(金) 14:41:31.45 ]
まどマギだったら歳とらない

131 名前:デフォルトの名無しさん [2011/09/09(金) 14:47:43.34 ]
\オッカリ〜ン/でも多分としとらない。

132 名前:デフォルトの名無しさん mailto:sage [2011/09/09(金) 17:35:10.00 ]
エンドレスビリオン

133 名前:デフォルトの名無しさん mailto:sage [2011/09/10(土) 12:57:05.63 ]
あんまり面白かったのでループでまわしたのかもしれんぞ。
(dotimes (n 999998) (print "Forthを使え"))


134 名前:デフォルトの名無しさん mailto:sage [2011/09/10(土) 18:26:28.62 ]
なんか問題(良問)を出して、それを実装して、プログラミングベンチマークテストしようぜ。
環境は基本Linuxベースであること(他の環境でも可だけど、明言すること)、使っている言語のバージョンは明言必須。

良問のネタの候補がない場合は、Python, Perl, Rubyの宿題スレから探してくる。

135 名前:デフォルトの名無しさん mailto:sage [2011/09/12(月) 02:28:07.87 ]
scheme初心者スレを探しているのですが無いみたいなので
scheme初心者の質問もここで良いのでしょうか?

136 名前:デフォルトの名無しさん mailto:sage [2011/09/12(月) 02:33:27.81 ]
>>135
初心者スレはないけどこっちよりは適切なはず

Lisp Scheme Part32
hibari.2ch.net/test/read.cgi/tech/1303299696/

137 名前:デフォルトの名無しさん mailto:sage [2011/09/12(月) 06:57:07.46 ]
>>134
とりあえず問題によるんじゃね?
そういえばどう書く?org って、いつのまにかすたれたね



138 名前:デフォルトの名無しさん mailto:sage [2011/09/12(月) 14:10:11.65 ]
>>137
いいのが思いつかないので、ベタに(random 1234567890)で生成されるn個の値をソートせよ。ぐらいではダメかね?
期限は9/23(金)21:00まで。ソース晒しは9/16(金)21:00から。

単純なソートだと工夫の余地がなくて速度の違いって出ないものなのかな。

;; ### 絶賛、問題募集中 ###

139 名前:デフォルトの名無しさん mailto:sage [2011/09/12(月) 16:25:34.19 ]
これでいいんじゃね?

The Computer Language Benchmarks Game
shootout.alioth.debian.org/

既にSBCL向けのコードがあるから、
俺の書いたコードの方が速いぜとか、
この処理系の方が早いぜとか。


140 名前:デフォルトの名無しさん mailto:sage [2011/09/12(月) 19:38:24.28 ]
>>139
> 既にSBCL向けのコードがあるから、
> 俺の書いたコードの方が速いぜとか、
> この処理系の方が早いぜとか。
その心は?

個人的には入門者でもなんとか参加できるレベルの問題にしたいです。ジムカーナなどに使われるtime result形式で個々人の励みにしてほしいなあと。
もちろん、入門者が相当がんばれば参加できるレベルの問題をたまにやるのは良いと思います。

141 名前:デフォルトの名無しさん mailto:sage [2011/09/12(月) 21:52:32.59 ]
誰も参加してないのに、俺ルール炸裂かよw

142 名前:デフォルトの名無しさん [2011/09/13(火) 07:02:30.34 ]
Linux上のSBCLでLispbuilder-SDLをasdf-installから入れようとすると
まぁGPG鍵はもちろんスキップするんだが、その後すぐに
cocoahelperが有りません的なこと言われて止まります

Linuxだからいらねぇんだよおおおおおおおおおおおおおおおおおおおおおおおお

143 名前:デフォルトの名無しさん mailto:sage [2011/09/13(火) 07:12:31.29 ]
カリカリしないで一息いれなよ
っ 森永ココア

144 名前:デフォルトの名無しさん mailto:sage [2011/09/13(火) 07:35:54.70 ]
>>142
ASDF-Installとか今さら使ってんじゃNEEEEEEEEEEEEEEEEE!!1! このボケが!

私としては、ASDF-Installの代わりにQuicklispを使うことをお勧めします。
SBCLで動かないパッケージははねられているみたいですし。
それでも動かない場合、もっと詳細なエラーメッセージを頂けると、
解決に協力できるかもしれません。

145 名前:デフォルトの名無しさん [2011/09/13(火) 07:38:41.77 ]
ASDFは時代遅れだったのか……!!!!!!
cocoaは消えて、今度はcffi-examples見つからなかったとか言いやがる

ちなみに私はヴァンホーテンが好きです。

とりあえずQuickLisp使ってみます

146 名前:デフォルトの名無しさん mailto:sage [2011/09/13(火) 08:41:41.68 ]
>>145
ASDFというか、ASDF-Installが過去の遺物になりつつある、
といった感じになっています。森永も悪く無いのではないでしょうか。

ASDFという、ライブラリに対する操作を統一するAPIの上に、
QuicklispやASDF-Installなどの、ライブラリを管理する仕組みが作られています。

Quicklispは比較的最近現れたもので、まだベータ版なのですが、
抜群の使いやすさから、一気に定着してしまった感がありますね。

147 名前:デフォルトの名無しさん mailto:sage [2011/09/13(火) 14:16:59.49 ]
Rをclから使いたいからrclとかいうの入れた
それをmaximaから呼ぶとlapackが2重に呼ばれるのかおかしくなる

何か回避方法ないの?



148 名前:デフォルトの名無しさん mailto:sage [2011/09/13(火) 23:31:07.27 ]
一般論だけど、環境、エラーメッセージ、バージョン、操作、
そういった物を書いてくれないと、仮に回避方法が分かる人でも、
同じ所ではまったことがないと答えられんと思うよ。

あと、Maximaの話なら、

【数式処理システム】 Maxima 【Common Lisp】
kamome.2ch.net/test/read.cgi/math/1287274183/

の方が回答を得られるんじゃない?

149 名前:デフォルトの名無しさん [2011/09/14(水) 08:59:05.79 ]
>>138
projecteuler.net/

150 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2011/09/14(水) 23:41:49.99 ]
ブログとかで Project Euler の解き方の解説してるのみたら「XXは自明なので」とか書いてあったりするけど、全然自明じゃねーよって感じのが多くて困る。
Project Euler って数学の問題でもあるから単なるプログラミング演習の問題とはちょっと雰囲気が違うかも。
もちろん、身に付くことは多いけど。

151 名前:デフォルトの名無しさん mailto:sage [2011/09/15(木) 12:57:41.32 ]
>>150
そんなの高校数学の教科書からたくさんあるだろ

152 名前:デフォルトの名無しさん mailto:sage [2011/09/22(木) 00:30:22.73 ]
スイマセン、基本的なところなんですが

>(defun test1(x)(eq x #'+))
TEST1
>(test1 #'+)
T
なのに

>(defmacro test2(x)(eq x #'+))
TEST2
>(test2 #'+)
NIL
になるんですが、マクロと関数で引数の評価の仕方が違うんでしょうか?

153 名前:デフォルトの名無しさん mailto:sage [2011/09/22(木) 01:06:48.59 ]
>>152
そこは基本的っていうか、むしろ嵌りどころ。

#'は特殊形式functionに展開されるんだけど、functionが返す関数オブジェクトは、
必ずしも毎回同じ物とは限らない、っていう話だったはず。

ttp://www.apl.jhu.edu/~hall/Lisp-Notes/Dalton-Pitfalls-List.text

の"Function vs eq."に詳しい。

154 名前:デフォルトの名無しさん mailto:sage [2011/09/22(木) 01:12:36.50 ]
って、待った。test2ってクォートしてないの?
(defmacro test2(x)`(eq ,x #'+))でなく?

155 名前:デフォルトの名無しさん mailto:sage [2011/09/22(木) 01:22:58.45 ]
まんま>>152の通りなら、コンスの '(function +) と関数の #'+ を比較してるので、
マクロの展開結果がNILになり、評価結果もNILになる。

そういう勘違いなら、Common Lispの評価モデル自体を理解してないことになるので、
HyperSpecとか書籍とかマクロの解説とかを読んだ方が良いと思う。
マクロに渡されるのは値じゃなくて式。

156 名前:152 mailto:sage [2011/09/22(木) 01:54:26.73 ]
>(defmacro test3(x)(equal x '(function +)))
TEST3
>(test3 #'+)
T
納得。夜遅くにスイマセンでした

157 名前:デフォルトの名無しさん [2011/09/30(金) 14:34:56.92 ]
自明は相手をごまかす頻出単語



158 名前:デフォルトの名無しさん mailto:sage [2011/09/30(金) 14:56:15.85 ]
毎回公理から一つ一つ積み重ねるしかないのか

159 名前:デフォルトの名無しさん [2011/10/05(水) 22:10:00.39 ]
キーワード引数が指定されなかった場合と、
キーワードの値としてnilが渡された場合って区別できるんでしょうか?
例えば
(defun hoge (&key (foo)) foo)
として、
(hoge)
の場合と
(hoge :foo nil)
の場合を区別できるかどうか、という意味です。


160 名前:デフォルトの名無しさん mailto:sage [2011/10/05(水) 22:26:42.09 ]
&key では判断するために supplied-p-parameter があるよ。
CL-USER> (defun hoge (&key (foo nil foo-supplied-p)) (values foo foo-supplied-p))
HOGE
CL-USER> (hoge)
NIL
NIL
CL-USER> (hoge :foo nil)
NIL
T


161 名前:159 mailto:sage [2011/10/05(水) 22:46:31.24 ]
おぉー。全く知りませんでした。
ばっちりです。ありがとうございます。

162 名前:デフォルトの名無しさん [2011/10/10(月) 09:36:53.02 ]
パッケージとか、ASDFの使い方を知りたいのですが、
何を参照したらよいですか?


163 名前:デフォルトの名無しさん mailto:sage [2011/10/10(月) 11:42:24.68 ]
>>162
パッケージは知らないけど、ASDFなら
common-lisp.net/project/asdf/asdf.html
とか
common-lisp.net/~mmommer/asdf-howto.shtml
とかじゃない?

ググッたりしてるなら、もう見ただろうけど

164 名前:デフォルトの名無しさん mailto:sage [2011/10/10(月) 13:07:43.42 ]
>>162
ASDFではなく、quicklispを使うといいよ。
既知だったらすまん。

165 名前:デフォルトの名無しさん mailto:sage [2011/10/10(月) 18:25:50.48 ]
>>164
CLのパッケージシステム関連全体のことを聞いてるんじゃねぇの
quicklispもasdf使ってるし
``asdf-install使うくらいならquicklispを使うといいよ''
てな話だとわかるんだが, 若干的外れなような...


166 名前:デフォルトの名無しさん [2011/10/10(月) 21:04:40.05 ]
162の質問者です。舌足らずの質問ですいませんでした。

これまで、小さなプログラムしか作ったことがないもので、
個々のソースプログラムファイルをloadしているだけで
満足してたのです。使ってる処理系がsbclなので、多分何もしなくても
コンパイルもしてくれるようですし。(つづく)


167 名前:デフォルトの名無しさん [2011/10/10(月) 21:07:41.81 ]
(つづき)
しかし、下記の理由で、だんだんそうもいってられなくなりました。
1. 自分で書くプログラムがかなり大きくなってきた。
   (その結果 2.と3.)
  2. 名前空間(?)をcommon-lisp-userとは、分離したい.
3. ソースプログラムファイルの依存関係(どれが、どの
   ファイルで定義されている関数を使っているかなど)を
   うまく表現する方法がないか知りたい。コンパイルや
   ロードをスマートにやりたい。
    (c言語でのmakeに相当するものがないかな??)
(つづく)




168 名前:デフォルトの名無しさん [2011/10/10(月) 21:10:04.15 ]
(つづき)
4. 他人が作ったプログラムをつかうのに、requireとか
   asdfを使うこともでてきたのですが、(関連するwebサイト
   の説明を鵜呑みにしているだけで)何が起こっているのか
   よく分からない。何が起こっているのか知りたい。
(つづく)


169 名前:デフォルトの名無しさん [2011/10/10(月) 21:12:19.54 ]
(つづき)
4. 他人が作ったプログラムをつかうのに、requireとか
   asdfを使うこともでてきたのですが、(関連するwebサイト
   の説明を鵜呑みにしているだけで)何が起こっているのか
   よく分からない。何が起こっているのか知りたい。
(つづく)


170 名前:デフォルトの名無しさん [2011/10/10(月) 21:14:34.72 ]
(つづき)
ちなみに、require関数を使って他人が書いたプログラム(たとえば
clxとかMcCLIMなんか)をロードすると、
結構、複雑なことが起こっている気がするのですが、CLtL2のrequire
の説明をみても何だかよくわかりませんでした。
(多分、必要なモジュールを探してロードしているんだろうなと思う。
そういうことを自作プログラムでもやりたいのです。)


171 名前:デフォルトの名無しさん mailto:sage [2011/10/10(月) 21:24:23.45 ]
2. は CL でいうパッケージの仕事。
3. は、ASDF (C言語でいう make の Lisp 版。最近の標準) の仕事。
4. に関しては、CLHS で provide/require という仕組が定義がされているが、
こいつは実装依存でかつ依存関係を取り扱うポータブルな手段がないため、一
般的にはASDFが利用される。(でも、処理系依存のライブラリなんかでは使われてる)

前にでている Quciklisp てーのは、 ASDF の上にさらに rpm/yum みたいなパッ
ケージ管理機能を追加したもの。なので、ボトムアップが好きなら学習順序と
してはパッケージ -> ASDF -> Quicklisp がいいんじゃないかな。

172 名前:デフォルトの名無しさん mailto:sage [2011/10/11(火) 23:51:42.80 ]
ネットに繋がらない環境にquicklispkから落としたライブラリを持って行きたいんだけど、
ネットにつながるマシンでライブラリ整えて、~/quicklispを全部コピーして持ってけばおkなのかな?

173 名前:デフォルトの名無しさん mailto:sage [2011/10/12(水) 00:26:01.96 ]
>>172
そう。
持っていったやつを別な場所に置きたいなら、
www.quicklisp.org/beta/faq.html#local-project を参考に。

174 名前:デフォルトの名無しさん mailto:sage [2011/10/12(水) 14:01:09.61 ]
なんと言いますか、ミニゲームを作りながら段々とプログラミングのやり方を
覚えていくような入門サイト、書籍みたいなものはありませんか?

入門書籍を何冊か読んでみたんですが、式それぞれの使い方は飲み込めたのですが
それをプログラムでどう表現したら良いか分らないと言いますか。

出来ればLinux上のClispに対応したものがベターですが、他の環境でも構いません。

175 名前:デフォルトの名無しさん mailto:sage [2011/10/12(水) 16:47:15.57 ]
ありません

176 名前:デフォルトの名無しさん mailto:sage [2011/10/12(水) 16:53:12.06 ]
>>174
landoflisp.com/

177 名前:デフォルトの名無しさん mailto:sage [2011/10/12(水) 17:09:02.98 ]
斬新スギルwwwwww



178 名前:デフォルトの名無しさん mailto:sage [2011/10/12(水) 19:37:39.35 ]
>>176
開いた瞬間にMade by secret alien technologyだったw


179 名前:デフォルトの名無しさん mailto:sage [2011/10/12(水) 22:58:13.41 ]
>>176
類書が全く思いつかないすごい世界だ

180 名前:デフォルトの名無しさん mailto:sage [2011/10/12(水) 23:02:53.03 ]
括弧食うなw

181 名前:デフォルトの名無しさん mailto:sage [2011/10/12(水) 23:59:37.28 ]
その本は素晴らしいよ。
LISPのトンデモ歴史に始まり、簡単なAIやWEBサーバー開発なども学べる。
英語は平易。

182 名前:デフォルトの名無しさん mailto:sage [2011/10/13(木) 00:10:38.65 ]
Land of Lispって、作曲したり、色々フリーダムだよな。

youtu.be/HM1Zb3xmvMc

183 名前:デフォルトの名無しさん mailto:sage [2011/10/13(木) 01:12:43.71 ]
>>176を見てamazon kindleで衝動買いしてしまったw
kindle価格で29ドル
早速読んでみるわ

184 名前:デフォルトの名無しさん mailto:sage [2011/10/13(木) 22:45:02.02 ]
出版社はno starch press (堅苦しくない出版 という名前)で
日本語の萌系の学術書?も翻訳してるし、
You learn a haskell for great good! (最近話題のHaskell書)の
本も出版してる。You learn ~ も簡単な英語で書かれてるよ。

185 名前:デフォルトの名無しさん mailto:sage [2011/10/14(金) 07:07:25.64 ]
本当だ、オーム社のマンガでわかる〇〇の表紙が公式サイトにある
Hacking第2版のパブリッシャーでもあるのか

186 名前:デフォルトの名無しさん mailto:sage [2011/10/14(金) 07:39:00.94 ]
The Manga Guide to the Universe なんてのもその出版社のページに。
オーム社は「マンガでわかる銀河系」も出すべきだなw

187 名前:デフォルトの名無しさん mailto:sage [2011/10/14(金) 13:31:36.12 ]
>>173
サンクス!
お礼が遅れてすまんかった。



188 名前:デフォルトの名無しさん mailto:sage [2011/10/16(日) 01:26:54.32 ]
Schemeのschelogに相当するものってないの?

189 名前:デフォルトの名無しさん mailto:sage [2011/10/16(日) 02:04:44.48 ]
norvig.com/paip/prolog.lisp
www.franz.com/products/prolog/

190 名前:デフォルトの名無しさん mailto:sage [2011/10/16(日) 09:42:50.70 ]
www.lispworks.com/products/knowledgeworks.html


191 名前:デフォルトの名無しさん mailto:sage [2011/10/18(火) 23:48:13.92 ]
テスティングフレームワークって何が標準的なんでしょうか?

192 名前:デフォルトの名無しさん mailto:sage [2011/10/19(水) 00:54:57.34 ]
特に標準はないんじゃないの?
よく使われてるライブラリで共通で使われてたりするのかな?

xUnit,xSpec,quickcheck,Test::Moreみたいな言語間で広まってるテストフレームワークも
www.cliki.net/test%20framework
google.co.jp/search?q=commonlisp+test

193 名前:デフォルトの名無しさん mailto:sage [2011/10/19(水) 01:02:25.05 ]
clojure.testっぽいのとPerlのMore::Testっぽいのは、日本語の一次資料があるらしい。
最近公開されたものだし、標準ではないけどね。


194 名前:デフォルトの名無しさん mailto:sage [2011/10/19(水) 07:32:48.73 ]
>>191
比較的多く使われてるのはFiveAMとStefilかなー。
機能的にも割と似たような感じ。ただ、Stefilはドキュメントがない。
特に拘りがないならどっちか使っとけば良いと思う。

Clackの中の人が作ってるCL-TEST-MOREなんかは、TAPが好きなら良いかも。
あと、複雑なテストが必要ない場合、自分で書いてる人も割といるように見える。

上で出てない追加の情報源とか。

cl.cddddr.org/index.cgi?%a5%e9%a5%a4%a5%d6%a5%e9%a5%ea
cl.cddddr.org/index.cgi?FiveAM
aperiodic.net/phil/archives/Geekery/notes-on-lisp-testing-frameworks.html

195 名前:デフォルトの名無しさん mailto:sage [2011/10/19(水) 07:54:01.51 ]
あと、CL-TEST-MOREは公式のドキュメントは英語。
ただ、中の人が日本人なので、日本語の解説もあるけど。

https://github.com/fukamachi/cl-test-more
e-arrows.sakura.ne.jp/2010/11/cl-test-more.html
tips.lisp-users.org/common-lisp/index.cgi?CL-TEST-MORE

clojure.testっぽいのはButterだと思う。使ったことないから使い勝手は分からない。
こっちは日本語のREADME付き。

https://github.com/yuushimizu/butter
d.hatena.ne.jp/yuushimizu/20110922/1316627415

196 名前:デフォルトの名無しさん mailto:sage [2011/10/25(火) 06:28:23.81 ]
RIP

197 名前:デフォルトの名無しさん mailto:sage [2011/10/25(火) 06:43:27.22 ]
マッカーシー御大のことか



198 名前:デフォルトの名無しさん mailto:sage [2011/10/25(火) 21:23:05.33 ]
ああ、なんというか悲しいなぁ。
おれがコンパイラとか興味持ったのも、全部Lispのおかげなんだ。
Lispの父の魂よ安らかに眠れ。

199 名前:デフォルトの名無しさん [2011/10/25(火) 21:48:23.67 ]
マッカーシーって赤狩りやった人?

200 名前:デフォルトの名無しさん mailto:sage [2011/10/25(火) 22:44:12.27 ]
連載:インターネット・サイエンス の歴史人物館(12)
ジョン・マッカーシー
wbb.forum.impressrd.jp/feature/20071212/515

201 名前:デフォルトの名無しさん mailto:sage [2011/10/27(木) 16:40:48.72 ]
関数プログラミングとオブジェクト指向プログラミングが相容れないという見解を
時折聞くのですが、そうなんですか?
自分はオブジェクト指向を型と引数の型によって振る舞いを変える関数の組み合わせで理解しており、
関数プログラミングとオブジェクト指向プログラミングは直行するのではないかと思っているのですが。

202 名前:デフォルトの名無しさん mailto:sage [2011/10/27(木) 17:29:29.77 ]
確かに直交するものではあるのだけど、
どうしてもオブジェクト指向の、「物」指向、副作用による状態の変化を利用したスタイルから、
普通にはそれを使えなくなる純粋関数型に、自分の思考を持ち込むか、という技の掛け方、
というか、そのへんは実際にやってみて慣れればなんということないんだけど、説明するのは
難しいので。

203 名前:201 mailto:sage [2011/10/27(木) 17:34:38.20 ]
ははあ、結局再代入をどんどんやるスタイルから
一度しか代入しないスタイルへの切り替えの難しさから
そういう意見が出てくるって事ですね
ありがとうございます

204 名前:デフォルトの名無しさん mailto:sage [2011/10/27(木) 17:43:50.90 ]
ABCLとか、ACTOR→Schemeとか、
メッセージパッシング系は上手く混合してるでしょ。

205 名前:デフォルトの名無しさん mailto:sage [2011/10/27(木) 19:00:26.69 ]
>>201
技術書の「Concepts, Techniques, and Models of Computer Programming」
(CTMCP:コンピュータプログラミングの概念・技法・モデル)で複数の
計算モデルが解説されているが、一般にオブジェクト指向と呼ばれている言語は、”状態”
を内部に持って、書き換え(副作用を起こし)ながら処理を進めるモデル。

関数型と呼ばれる言語の多くは、数学での集合・写像がベースになったモデル。
従って、処理の大部分を副作用ではなく、集合への写像(関数適用と思っていい)で出来る。

相性というより、計算モデルが全く違うので、混在は非効率。
なお、CTMCPには他のモデルも解説されている。

206 名前:デフォルトの名無しさん mailto:sage [2011/10/27(木) 20:28:15.59 ]
質問ですが、(progn (setq x 0) (dotimon (i 10) (setq x (add x i))))
のxはこのまま活用するのですか?
 LISP触って日が浅いのでまだ分かりづらくて…

207 名前:201 mailto:sage [2011/10/27(木) 20:51:23.53 ]
>>205
ありがとうございます。
確かに狭義の定義では相容れませんね。
JavaやC++でラムダ計算は出来そうにもありませんし、
Haskellでは代入自体が不可能ですし。



208 名前:デフォルトの名無しさん mailto:sage [2011/10/27(木) 20:54:20.61 ]
>>206
「xはこのまま活用する」とはどういう意味でですか?

209 名前:デフォルトの名無しさん mailto:sage [2011/10/27(木) 21:16:05.58 ]
>>208
すみません、少し読み返してみたらsetqでxは0に定義されていました・・・orz
 少し落ち着いてから勉強しなおします。

210 名前:デフォルトの名無しさん mailto:sage [2011/10/27(木) 21:21:24.93 ]
209の者で一応206をまとめると、「xをそのまま引数としていいのか」という文意でした。
 

211 名前:デフォルトの名無しさん mailto:sage [2011/10/27(木) 23:10:17.78 ]
何にも束縛されていない変数xを引数にした式(add x i)を評価するとまずいんじゃね,
と思ったけど直前に(setq x 0)があるから束縛されてた,問題なかった,という意味?

212 名前:デフォルトの名無しさん mailto:sage [2011/10/27(木) 23:46:20.82 ]
scala 触ってみて、クラスベースOO と関数型は相性良くないなあと思った。
不必要に複雑になりがちで。

213 名前:デフォルトの名無しさん mailto:sage [2011/10/28(金) 00:49:20.17 ]
物と状態のシミュレーションじゃなくて、やり取りするインターフェース指向というか型や取り決めのためにOOは使うものなんだよっていう人もいるな。

clojureの宣伝文句は、OOの目的を別なやり方で、だとか。
thinkrelevance.com/blog/2009/08/12/rifle-oriented-programming-with-clojure-2.html
www.geidai.ac.jp/~marui/clojure/rationale/index.html
www.geidai.ac.jp/~marui/clojure/state/index.html

clとclojureちょっとかじったのけど、scheme知らないのでRacket使ってみようかな。

214 名前:デフォルトの名無しさん mailto:sage [2011/10/28(金) 06:22:21.58 ]
インターフェースって観点なら
個人的にはHaskellの型と型クラスの扱いが
一番綺麗に整理されてていいと思う

215 名前:デフォルトの名無しさん mailto:sage [2011/10/28(金) 10:53:54.69 ]
型クラス便利なんだけど、副作用とあんま相性が良くない、
みたいなことをOCamlの人が書いてた気がする。

216 名前:デフォルトの名無しさん mailto:sage [2011/10/28(金) 15:05:25.95 ]
clojureのdeftype/protocolもhaskellの型クラスに近い感じだね。
データ型と振る舞いの分離、データ型の継承なし、など。

217 名前:デフォルトの名無しさん [2011/10/29(土) 06:37:12.03 ]
(defun 5jou (x)
(let ((x2 0) (x3 0))
(setq x2 (2jou x))
(setq x3 (* x2 x))
(* x2 x3)))
5JOU
が理解できません。どなたか簡単に説明をお願いいたします。




218 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 08:28:04.20 ]
>>217
酷い関数名だなw
2乗する関数2jouってのがどこかに定義されてて、
xを5乗するってのを 2乗掛け(2乗掛け1乗)で実行してるだけだと思う。

ただ普通はそんな酷い書きかたしないよ。何の例?

219 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 08:50:47.56 ]
(defun 9jou-lover ()
(destroy 'war-freak))

(crazyp 9jou-lover)
t


220 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 08:53:13.73 ]
宿題?
(defun 5jou (x)
(let ((x2 0) (x3 0))
(setq x2 (2jou x)) ; x2 = x^2
(setq x3 (* x2 x)) ; x3 = x2*x = x^3
(* x2 x3))) ; x2 * x3 つまり x^5


221 名前:デフォルトの名無しさん [2011/10/29(土) 09:49:42.36 ]
>218
ある入門書です。

222 名前:デフォルトの名無しさん [2011/10/29(土) 09:55:29.50 ]
>>220
ありがとうございました。

223 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 10:29:38.69 ]
関数型4つの特徴とλ計算かな

224 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 10:52:42.97 ]
こんな短い関数に setq 使っているのが凄く気持ち悪いな

(defun 5jou (x)
(let ((x2 (2jou x)))
(let ((x3 (* x2 x)))
(* x2 x3))))


225 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 11:14:37.94 ]
ダメな例として挙げているのかも知れんな

226 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 12:36:07.35 ]
(defun 5jyou (x)
(* x x x x x))

227 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 14:10:16.47 ]
もしもその本の中で悪例として取り上げていないのであれば
すぐに窓から投げ捨てたほうがいいレベル

変数名にx1,x2,...とかつけちゃう本は大抵ダメ
学生が作ってくるプログラムでたまにこういうのあるよね
全ての関数名がf1,f2,...で変数名がx1,x2,...



228 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 14:12:01.20 ]






          _____
  .ni 7    /        \  ご冥福をお祈りします
l^l | | l ,/) / /・\  /・\ \    .n
', U ! レ' / |    ̄ ̄    ̄ ̄  |  l^l.| | /)
/    〈  |    (_人_)    |  | U レ'//)
     ヽっ     \   |    /   ノ    /
 /´ ̄ ̄ ノ     \_|    \rニ    |
                      `ヽ   l







229 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 14:13:31.37 ]
俺ならっ!こう書くっっ!
(defmacro gogogo (n)
 (let ((jo-name (intern (concatenate 'string (prin1-to-string n) "JOJO"))))
  `(defun ,jo-name (x)
   (let ((x-val x))
    (apply #'* (make-list ,n :initial-element x-val))))))






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

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<297KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef