Lisp Scheme Part17
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2007/04/20(金) 19:41:39過去スレ
Part16: http://pc11.2ch.net/test/read.cgi/tech/1172404795/
Part15: http://pc10.2ch.net/test/read.cgi/tech/1151025773/
Part14: http://pc8.2ch.net/test/read.cgi/tech/1132275726/
Part13: http://pc8.2ch.net/test/read.cgi/tech/1115901841/
Part12: http://pc8.2ch.net/test/read.cgi/tech/1100229366/
Part11: http://pc5.2ch.net/test/read.cgi/tech/1091456033/
Part10: http://pc5.2ch.net/test/read.cgi/tech/1075630259/
Part9: http://pc2.2ch.net/test/read.cgi/tech/1069594582/
http://が多すぎるらしいので分割
0002デフォルトの名無しさん
2007/04/20(金) 19:42:35Part7: http://pc5.2ch.net/tech/kako/1042/10421/1042167213.html
Part6: http://pc3.2ch.net/tech/kako/1031/10315/1031560687.html
Part5: http://pc3.2ch.net/tech/kako/1023/10230/1023091882.html
Part4: http://pc.2ch.net/tech/kako/1016/10162/1016211619.html
Part3: http://pc.2ch.net/tech/kako/1008/10082/1008220265.html
Part2: http://pc.2ch.net/tech/kako/1002/10025/1002584344.html
Part1: http://piza2.2ch.net/tech/kako/987/987169286.html
0003デフォルトの名無しさん
2007/04/20(金) 19:43:22日本Lispユーザ会(日本語)
http://jp.franz.com/jlug/index.html
ここにかなりの情報があります。
http://jp.franz.com/
削るとAllegro Common Lispのページへ
プログラミング言語Scheme(日本語)
ttp://www.sci.toyama-u.ac.jp/~iwao/Scheme/scheme.html
Schemeの人はまずここを見ましょう。
Lisper への道(日本語)
ttp://www.geocities.co.jp/SiliconValley-Oakland/1680/rakup.html
判りやすいLISP入門サイト。
Schemeへの道(日本語)
ttp://www.stdio.h.kyoto-u.ac.jp/~hioki/gairon-enshuu/SchemeNotes/scheme.html
ここはschemeの入門サイト。
0004デフォルトの名無しさん
2007/04/20(金) 19:44:10ttp://buri.sfc.keio.ac.jp/lisp/menu.html
Practical Scheme(日本語)
ttp://practical-scheme.net/index-j.html
「普通のやつらの上を行け」など、興味深い文書を沢山翻訳されてます。
(Gaucheという完成度の高いscheme処理系作者さんのページでもあります。)
Scheme Hash(英語)
ttp://okmij.org/ftp/Scheme/index.html
S式でXMLを使える様にするSXMLなど
John McCarthy's Home Page
ttp://www-formal.stanford.edu/jmc/
LISPの生みの親、J・マッカーシーのページだそうです。
Association of Lisp Users
ttp://www.alu.org/alu/home
米国のLispユーザ会
0005デフォルトの名無しさん
2007/04/20(金) 19:44:55SICP(英語)
ttp://mitpress.mit.edu/sicp/full-text/book/book.html
「計算機プログラムの構造と解釈」の原書です。 全てオンラインで読めます。
計算機プログラムの構造と解釈 第二版 (snip) に関連するホームページ
ttp://www.ipl.t.u-tokyo.ac.jp/sicp/
SICPの回答集
ttp://www.melt.kyutech.ac.jp/~gogogo/sicp_ex/
ttp://pluto.aurorasd.co.jp/~mkama/sicp/
ttp://www.ipl.t.u-tokyo.ac.jp/sicp/solution.root.html
ttp://www.sampou.org/scheme/sicp/answer/
0006デフォルトの名無しさん
2007/04/20(金) 19:45:43Schemeで書かれた正規表現ライブラリ
ttp://www.cs.rice.edu/~dorai/pregexp/pregexp.html
幻の「入門Scheme」
ttp://www4.ocn.ne.jp/~inukai/scheme_primer_j.html
オンラインで読める
各種scheme処理系をcygwin上からビルドする方法など。
ttp://www.geocities.co.jp/SiliconValley-PaloAlto/7043/
Bit - Implantation compacte de Scheme
ttp://www.iro.umontreal.ca/~dube/
mini-schemeよりも小さい(?)bytecode変換系
Lisp 言語処理系: CAMPUS LIsP, Lemon version
ttp://aten.aial.hiroshima-u.ac.jp/~kakugawa/clisp/index-ja.shtml
Cコードによるわずか1000行の実装
Cliki
ttp://www.cliki.net/index
CommonLispのプログラムがたくさん紹介されているのでここを当たるべし。
0007デフォルトの名無しさん
2007/04/20(金) 19:48:26ttp://www.isr.ist.utl.pt/library/docs/encycmuclopedia/doc/
cmucl以外でも有益なはず
CMUのLisp Repository
ftp://ftp.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/lisp/0.html
新旧様々なプログラムが置いてある
Tiny CLOS Tutorial
ttp://home.adelphi.edu/~sbloch/class/272/tclos/tutorial.shtml
Schemix
ttp://www.abstractnonsense.com/schemix/
Linuxのkernelへのパッチで、/dev/として扱えるTinyScheme
Bibliography of Scheme-related Research
ttp://library.readscheme.org/
Scheme関連の論文リンク集
0008デフォルトの名無しさん
2007/04/20(金) 19:49:13awkで書かれたわずか500行のLispインタプリタ
awklispを読めばLispが理解できる
ttp://www.accesscom.com/~darius/
Emacs Lisp 2
ttp://pc2.2ch.net/test/read.cgi/tech/1068467385/
* Hotdog Scheme ttp://rover.cs.nwu.edu/~scheme/
MS が金出してたみたい
* Bigloo ttp://www-sop.inria.fr/mimosa/fp/Bigloo/
CLR 用のコードを吐けるようになったらしい
★★継続 ★★
なんでも継続
ttp://practical-scheme.net/docs/cont-j.html
Schemeへの道:継続
ttp://www.stdio.h.kyoto-u.ac.jp/~hioki/gairon-enshuu/SchemeNotes/continuation.html
継続の使い方
ttp://www.geocities.co.jp/SiliconValley-PaloAlto/7043/index.html#continuation
継続の使用法
ttp://www.ice.nuie.nagoya-u.ac.jp/~h003149b/lang/block.html
CPS(継続渡しスタイル)の説明
ttp://www.csl.sony.co.jp/person/masui/Forum/data/20011215023622/
Kahua: 継続ベースのアプリケーションサーバー
ttp://www.kahua.org/
0009デフォルトの名無しさん
2007/04/20(金) 19:50:01CLtL2: Common Lisp the Language 2nd edition
ttp://www-2.cs.cmu.edu/Groups/AI/html/cltl/cltl2.html
CLHS: Common Lisp Hyper Spec
ttp://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/FrontMatter/Chapter-Index.html
R5RS: Revised(5) Scheme(ja)
ttp://www.sci.toyama-u.ac.jp/~iwao/Scheme/r5rsj/html/r5rsj.html
便利な情報リソース)
The Common Lisp Cookbook: いわゆる Cookbook
ttp://cl-cookbook.sourceforge.net/
小さい実装)
SECDR-Scheme: SECD machine model に基づく実装
ttp://lily.fan.gr.jp/~kmd/adhoc/view.rhtml?n=SECDR-Scheme_woyomu
Minischeme: 1 ファイルに凝縮された Scheme 処理系
ttp://tinyscheme.sourceforge.net/minischeme.tar.gz
TinyScheme: Minischeme を色々弄ったもの
ttp://tinyscheme.sourceforge.net/
KI-Scheme, AM-Scheme, etc...
ttp://www.nifty.com/download/dos/prog/lisp/
LispMe: Palm 上で動く Scheme 処理系. これも SECD virtual machine.
ttp://www.lispme.de/lispme/
0010デフォルトの名無しさん
2007/04/20(金) 19:50:49CLtL2: Common Lisp the Language 2nd edition
ttp://www-2.cs.cmu.edu/Groups/AI/html/cltl/cltl2.html
CLHS: Common Lisp Hyper Spec
ttp://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/FrontMatter/Chapter-Index.html
R5RS: Revised(5) Scheme(ja)
ttp://www.sci.toyama-u.ac.jp/~iwao/Scheme/r5rsj/html/r5rsj.html
便利な情報リソース)
The Common Lisp Cookbook: いわゆる Cookbook
ttp://cl-cookbook.sourceforge.net/
小さい実装)
SECDR-Scheme: SECD machine model に基づく実装
ttp://lily.fan.gr.jp/~kmd/adhoc/view.rhtml?n=SECDR-Scheme_woyomu
Minischeme: 1 ファイルに凝縮された Scheme 処理系
ttp://tinyscheme.sourceforge.net/minischeme.tar.gz
TinyScheme: Minischeme を色々弄ったもの
ttp://tinyscheme.sourceforge.net/
KI-Scheme, AM-Scheme, etc...
ttp://www.nifty.com/download/dos/prog/lisp/
LispMe: Palm 上で動く Scheme 処理系. これも SECD virtual machine.
ttp://www.lispme.de/lispme/
0011デフォルトの名無しさん
2007/04/20(金) 19:51:39LISP Scheme Part9 (html化) って、なんでこれだけ
ttp://ruku.qp.tc/dat2ch/0403/01/1069594582.html
独習 Scheme 三週間
ttp://www.sampou.org/scheme/t-y-scheme/t-y-scheme-Z-H-1.html
Schemeの教科書
よろずや
ttp://www.geocities.co.jp/SiliconValley-SanJose/7474/
lispの実用的な情報が色々。
Common-Lisp.net: 多くのプロジェクトがホスティングされてる
ttp://common-lisp.net/
Bill Clementson's Blog: Lisp関連の話題が中心のBlog
ttp://home.comcast.net/~bc19191/blog/
Practical Common Lisp: S式の羅列で現実的な問題をどう解くのかそのギャップに悩まされてる人に
ttp://www.gigamonkeys.com/book/
0012デフォルトの名無しさん
2007/04/20(金) 19:54:05http://pc10.2ch.net/test/read.cgi/tech/1151025773/901-909
901 名前:デフォルトの名無しさん 投稿日:2007/02/22(木) 02:43:57
Scheme入門者なのですが、ネットであちこち眺めていたら
こんな事が書かれていて萎え気味なのですが、気にしなくて良いですよね?
http://cl-www.msi.co.jp/solutions/knowledge/lisp-world/articles/scheme
909 名前:デフォルトの名無しさん 投稿日:2007/02/22(木) 21:14:01
>>901
そこで黒田氏が出来ないと言うことは全部出来ますよ
ここでShiro氏が論破しています
Scheme:マクロ:CommonLispとの比較
ttp://practical-scheme.net/wiliki/wiliki.cgi?Scheme%3a%e3%83%9e%e3%82%af%e3%83%ad%3aCommonLisp%e3%81%a8%e3%81%ae%e6%af%94%e8%bc%83
しかしLispを知らないヤツに限ってLispを語りたがると言っていた黒田氏が
その忌み嫌っている人たちと同じ事をするというのが面白いw
Script Languages
ttp://cl-www.msi.co.jp/solutions/knowledge/lisp-world/articles/script-lang
0013デフォルトの名無しさん
2007/04/20(金) 19:55:35【入門】CommonLispその2【質問よろず】
http://pc10.2ch.net/test/read.cgi/tech/1140012484/
【CGI】実用比較Lisp vs C/C++【GUI】
http://pc10.2ch.net/test/read.cgi/tech/1150501484/
C式(C言語風汎用データ形式)を作ろう!
http://pc10.2ch.net/test/read.cgi/tech/1158259643/
【ヤパーリ】XMLをS式に置換えていくスレ【LISP最強】
http://pc10.2ch.net/test/read.cgi/tech/1140006937/
Emacs Lisp 2
http://pc10.2ch.net/test/read.cgi/tech/1068467385/
【叩かれて】Emacs Lisp道場【強くなれ】
http://pc10.2ch.net/test/read.cgi/unix/1063880951/
Lisp@UNIX版
http://pc10.2ch.net/test/read.cgi/unix/1019926525/
0014デフォルトの名無しさん
2007/04/20(金) 19:57:17t
とりあえず前スレのまま、貼ったけど多いなw
まとめサイトとか欲しくなった。。。
0015デフォルトの名無しさん
2007/04/20(金) 20:18:25http://ja.wikipedia.org/wiki/LISP
http://ja.wikipedia.org/wiki/Common_Lisp
http://ja.wikipedia.org/wiki/Scheme
これも追加しといて〜
0016デフォルトの名無しさん
2007/04/20(金) 20:53:45GaucheNight(2007-05-09)
http://practical-scheme.net/wiliki/wiliki.cgi?GaucheNight
川合史朗、黒田寿男、まつもとゆきひろ(Skype中継)、小飼弾、
伊東勝利、久井亨、小黒直樹、ほか
0017デフォルトの名無しさん
2007/04/20(金) 21:52:250018デフォルトの名無しさん
2007/04/20(金) 23:57:29ttp://sbcl.static.net/
そういえばテンプレには SBCL 関連の話題って全くないんだね。
0019デフォルトの名無しさん
2007/04/21(土) 00:25:13http://lispuser.net/
SLIME などの Common Lisp 系の日本語ドキュメントがある。
前スレ 40 より。SBCL の日本語情報もあるみたいよ。
0020デフォルトの名無しさん
2007/04/21(土) 00:59:36rubyでよければ、 http://wiki.fdiary.net/ だが、lisp系なら
ば、shiroさん所に間借り?
0021デフォルトの名無しさん
2007/04/21(土) 01:22:12知らんかった。
0022デフォルトの名無しさん
2007/04/21(土) 01:39:40まじすか?
ポール"人工知能"グレアムのソースコード見たい。
オープンにはなってないのかな。
0023デフォルトの名無しさん
2007/04/21(土) 22:26:07'((1 2 3) (4 5 6) (7 8 9)) => '((1 4 7) (2 5 8) (3 6 9))
とするのに、map を使って再帰や do で書けたんですが、
reverse を fold を使ってもできるように、
1行程度で簡潔に書く技はありますか?
0024デフォルトの名無しさん
2007/04/21(土) 22:39:16=> ((1 4 7) (2 5 8) (3 6 9))
てこと?
0025デフォルトの名無しさん
2007/04/21(土) 23:46:28そうです。ありがとうございます。apply ってこうやって使うんですか。
まだ全然わかってませんがおもしろいですね。もっと頑張ってみます。
0026デフォルトの名無しさん
2007/04/23(月) 03:04:01なんか転売屋の目に付くような事あったのかな。
売れっぷりのよさ?
2刷早くだしちゃいなよw
0027デフォルトの名無しさん
2007/04/23(月) 11:22:52ほんとぼったくり連中の餌になってるね。
近くでまだ一冊売ってるんだがね。
0028デフォルトの名無しさん
2007/04/23(月) 16:49:01タダで読めるんだって知らない人大杉だよね。
;;紙媒体の方が読みやすいのは確かだけどさ。
0029デフォルトの名無しさん
2007/04/24(火) 21:11:25★2ch内のLisp関連スレッド
Lisp http://find.2ch.net/?STR=Lisp
Scheme http://find.2ch.net/?STR=Scheme
Emacs http://find.2ch.net/?STR=emacs
Xyzzy http://find.2ch.net/?STR=xyzzy
Autocad http://find.2ch.net/?STR=autocad
Maxima http://find.2ch.net/?STR=Maxima
と2ちゃんないスレッドを書いているテンプレを書き直した方が良いかもね。
0030デフォルトの名無しさん
2007/04/24(火) 21:15:580031デフォルトの名無しさん
2007/04/24(火) 21:18:42モリタポ返せ!
0032デフォルトの名無しさん
2007/04/24(火) 21:24:05氏ねボケ
0033デフォルトの名無しさん
2007/04/24(火) 21:29:03モリタポって知らないけど、それでスレッド調べられたから載せたけど
悪意があったのではないです。
>>32
死ぬ気はありませんのであしからず。
0034デフォルトの名無しさん
2007/04/24(火) 21:32:57Scheme http://find.2ch.net/?STR=Scheme
Emacs http://find.2ch.net/?STR=emacs&TYPE=TITLE
Xyzzy http://find.2ch.net/?STR=xyzzy&TYPE=TITLE
Autocad http://find.2ch.net/?STR=autocad&TYPE=TITLE
Maxima http://find.2ch.net/?STR=Maxima&TYPE=TITLE
これで問題が無い?
0035デフォルトの名無しさん
2007/04/24(火) 21:33:54Scheme http://find.2ch.net/?STR=Scheme&TYPE=TITLE
Emacs http://find.2ch.net/?STR=emacs&TYPE=TITLE
Xyzzy http://find.2ch.net/?STR=xyzzy&TYPE=TITLE
Autocad http://find.2ch.net/?STR=autocad&TYPE=TITLE
Maxima http://find.2ch.net/?STR=Maxima&TYPE=TITLE
また失敗これでいいか
0036デフォルトの名無しさん
2007/04/24(火) 22:30:22そうだよな
お前の場合もう社会的生命は終わってるしな
0037デフォルトの名無しさん
2007/04/24(火) 22:38:450038デフォルトの名無しさん
2007/04/25(水) 01:15:150039デフォルトの名無しさん
2007/04/25(水) 11:14:38意図がわからなかったようだな。スレが進行中にデットリンクや新たなスレが
出来た時を考えてる。今だけを見ていればスレを載せればいい事だ。
0040デフォルトの名無しさん
2007/04/25(水) 11:57:560041デフォルトの名無しさん
2007/04/25(水) 12:16:31その時点での現行スレへのリンクもいらないよ。
0042デフォルトの名無しさん
2007/04/25(水) 12:36:05関連スレも進みが遅いし現状でいいでしょ・・・
そもそも、なんでスレの序盤でテンプレの話してるんだよw
0043デフォルトの名無しさん
2007/04/25(水) 12:37:030044デフォルトの名無しさん
2007/04/25(水) 13:03:47:-))))))))))))))))))
0045デフォルトの名無しさん
2007/04/25(水) 13:22:07( ・ω・)
○={=}〇,
|:::::::::\, ', ´
.)).))し ))`(.@)..)))))))))
0046デフォルトの名無しさん
2007/04/25(水) 14:48:150047デフォルトの名無しさん
2007/04/25(水) 17:07:36カッコ悪いからな
0048デフォルトの名無しさん
2007/04/25(水) 17:14:28【審議中】
ヒソヒソ ヒソヒソ
∧,,∧ ∧,,∧ ヒソヒソ
∧ (´・ω・) (・ω・`) ∧∧
ヒソヒソ ( ´・ω) U) ( つと ノ(ω・` ) ヒソヒソ
| U ( ´・) (・` ) と ノ
u-u (l ) ( ノu-u
`u-u'. `u-u'
0049デフォルトの名無しさん
2007/04/25(水) 23:41:17)if )good-smell? omeko( )erect( )puke((
0050デフォルトの名無しさん
2007/04/26(木) 00:52:52"全く気にならない!" と,
言いたいんだけど, 字面の座りが悪い.
つか, " ')if ってシンボルあったっけ?" て,
思った
0051デフォルトの名無しさん
2007/04/26(木) 06:53:01うーん、その発想がすてきw
0052デフォルトの名無しさん
2007/04/26(木) 07:05:18あぼ〜ん
45 名前: あぼ〜ん [あぼ〜ん] 投稿日: あぼ〜ん
あぼ〜ん
46 名前: あぼ〜ん [あぼ〜ん] 投稿日: あぼ〜ん
あぼ〜ん
47 名前: あぼ〜ん [あぼ〜ん] 投稿日: あぼ〜ん
あぼ〜ん
48 名前: あぼ〜ん [あぼ〜ん] 投稿日: あぼ〜ん
あぼ〜ん
49 名前: あぼ〜ん [あぼ〜ん] 投稿日: あぼ〜ん
あぼ〜ん
50 名前: あぼ〜ん [あぼ〜ん] 投稿日: あぼ〜ん
あぼ〜ん
51 名前: あぼ〜ん [あぼ〜ん] 投稿日: あぼ〜ん
あぼ〜ん
0053デフォルトの名無しさん
2007/04/26(木) 22:38:04次あたりからテンプレに入れね?
0054デフォルトの名無しさん
2007/04/26(木) 23:21:58だったらこれも。
http://www.lingr.com/room/gauche
0055デフォルトの名無しさん
2007/04/28(土) 04:19:33'("April 2007"
("Su" "Mo" "Tu" "We" "Th" "Fr" "Sa")
(1 2 3 4 5 6 7)
(8 9 10 11 12 13 14)
(15 16 17 18 19 20 21)
(22 23 24 25 26 27 28)
(29 30 #f #f #f #f #f))
再帰を使って下のように整形して出力するにはどうすればよいですか?
April 2007
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
0056デフォルトの名無しさん
2007/04/28(土) 04:23:300057デフォルトの名無しさん
2007/04/28(土) 04:26:12こういう処理は再帰(named let とか)ではやらないのでしょうか?
0058デフォルトの名無しさん
2007/04/28(土) 08:42:28ちゃんと読まないとわからない。
for-eachなら名前を見ただけで一発じゃない?
for-eachも中身は再帰で書いてあると思いねえ
(実際はCのfor文で書いてあるかも知れないが)。
だから再帰で繰り返しするなら、できればその一般的な構造を取り出して
汎用化し、名前をつけるのがいい。これが抽象化。
……もしかして宿題だったとか。
0059デフォルトの名無しさん
2007/04/28(土) 13:54:070060デフォルトの名無しさん
2007/04/29(日) 00:00:260061デフォルトの名無しさん
2007/04/29(日) 01:13:290062デフォルトの名無しさん
2007/04/29(日) 01:21:160063デフォルトの名無しさん
2007/04/29(日) 01:42:05俺、Lisp さっぱり知らない癖に Lisp の勉強用にこれ読み始めたところだから
知らずにその部分を読んだら、ちょっと錯乱しちゃうかも。
0064デフォルトの名無しさん
2007/04/29(日) 04:52:1431-32とか74-75とか。
74-75は悩んだな。
「この最後の or は意味ないだろ・・・」って思ってたら次のページに続きがあった。
0065デフォルトの名無しさん
2007/04/29(日) 05:37:01�d!
確かにこの切り方は酷いw
0066flatline ◆r6EONKKhcc
2007/04/29(日) 14:31:12そういう点は一切変えていません.
ttp://practical-scheme.net/wiliki/wiliki.cgi?OnLispJa
の「第1版第1刷」に挙げられている6項目のみ修正されています.
うーん,本文のコード内で改ページがあるのは読み辛かったですか... すいません.
次の増刷はさすがにずいぶん先になるだろうし,
改版でもなければ改ページの伴うような大きな変更はできないのですが,
一応ご不満な点があれば何であれお伝え下さい.
0067デフォルトの名無しさん
2007/04/29(日) 15:08:38馬鹿は休み休み言え
0068デフォルトの名無しさん
2007/04/29(日) 15:49:170069デフォルトの名無しさん
2007/04/29(日) 16:15:270070デフォルトの名無しさん
2007/04/29(日) 18:50:18いや、コード中に改ページがくること自体は全然許容範囲。
問題はその改ページの仕方。1行だけ次のページに来て
しかもその間に別のコード(図のコード)がくるのはちと辛い。
0071デフォルトの名無しさん
2007/04/29(日) 20:07:18不満の指摘=手伝い、とか、「せにゃならん」とか、ココロのビョーキか君はw
0072デフォルトの名無しさん
2007/04/29(日) 22:00:17変なのに絡まれる前に撤退したほうが吉。
0073デフォルトの名無しさん
2007/04/29(日) 22:41:460074デフォルトの名無しさん
2007/04/29(日) 22:59:39なんでここでやるかな
頭悪そう
0075デフォルトの名無しさん
2007/04/29(日) 23:15:29gaucheだけ?
0076デフォルトの名無しさん
2007/04/29(日) 23:38:27もう買ってしまったが、別にそのくらい気にしないお。
満足満足。PC の電源入れなくても読めるのイイ。
0077デフォルトの名無しさん
2007/04/29(日) 23:47:04まぁ君ほどの学歴は無いよ。うん。
0078デフォルトの名無しさん
2007/04/30(月) 01:07:44アフィリンク踏んでやるからURLヨロ
0079デフォルトの名無しさん
2007/04/30(月) 22:08:000080デフォルトの名無しさん
2007/05/02(水) 00:58:150081デフォルトの名無しさん
2007/05/02(水) 02:22:04何でfor-が付いてるでしょうか?
徒にインデントが深くなりませんか?
0082デフォルトの名無しさん
2007/05/02(水) 03:03:13ttp://d.hatena.ne.jp/JavaBlack/20060115
Java プログラマから見るとやっぱり多重継承って完ぺきに悪みたいだ
CLOS なんて糞オブジェクトシステムって思われるんだろうなぁ
0083デフォルトの名無しさん
2007/05/02(水) 03:15:580084デフォルトの名無しさん
2007/05/02(水) 03:27:450085デフォルトの名無しさん
2007/05/02(水) 05:16:16http://www.kahua.org/cgi-bin/khead.cgi/kahua-s5/view/11
0086デフォルトの名無しさん
2007/05/02(水) 07:44:26やっぱりjavaだけやってちゃ駄目だねぇ。視野狭すぎ。
lispだけじゃないけど色々勉強するのはホント大事だな。
0087デフォルトの名無しさん
2007/05/02(水) 08:54:330088デフォルトの名無しさん
2007/05/02(水) 08:59:27話の本題はさておいて、
なかなか親近感の沸く議論態度wだと思った。
この人組込用JavaVM開発してた人でしょ?
mix-inのメリットとかの性を認識しつつ、
指示語途上、多重継承を否定する立場に居たのだろうと思った。
0089デフォルトの名無しさん
2007/05/02(水) 09:00:20可能性 (・∀・)
0090デフォルトの名無しさん
2007/05/02(水) 09:01:32欝出汁脳
0091デフォルトの名無しさん
2007/05/02(水) 09:06:151レス目 『それを理解する能力さえない技術者が困り者。』
2レス目 『とまあ,かのように,パラダイムシフトについてこれない技術者というのはいるものです.』
3レス目 『まあ結局この「とおりすがりA」さんは,プログラミングのことがまるで解ってないだけでしょう.』
4レス目 『なんでも人に教えてもらおうとせず,少しは自分で勉強しないと,脳味噌が退化しますよ.』
5レス目 『おそらくその調子だとコンポジションのイロハも分からずに乱用しただけなのでは.』
6レス目 見下す発言なし
7レス目 『少しは勉強して下さい.』
多重継承をけなしている人の問題点は、Java以外を知らない事ではないと思います。
「自分と他人の意見が異なるのは他人が劣っているからだ」と決め付けている事が問題点です。
その姿勢を変えない限り、いくら知識があっても不毛な罵倒合戦になるだけです。
議論のアンチパターン
http://www.shos.info/develop/oo/dscsnptn.html#chapter4
0092デフォルトの名無しさん
2007/05/02(水) 09:13:47突っ込んだ議論をするのはちょっとアレな感じがする。
そういうのは自分の日記に書いてトラバするのがマナー。
0093デフォルトの名無しさん
2007/05/02(水) 11:50:09> 他人の日記のコメント欄に上がりこんで
はてなじゃそれがマナーだよ
マジで
009488
2007/05/02(水) 13:48:590095デフォルトの名無しさん
2007/05/02(水) 19:18:19自分で「辛口」と称する人はだいたいそんな感じだよ。
自己愛の超過と説明能力の欠如が生みだす溝や不快感を、
あくまでスタイルだと言い張って自己肯定するときにこの単語が使われる。
なかなかこう、鋭い指摘をミもフタも無く書くから結果辛口になる、という「まともな」人材は居ないです。
0096デフォルトの名無しさん
2007/05/02(水) 20:03:39日記という形式は、正しい事だけを書いたり、
正しい結論を得るために議論をする場ではなくて、
妥協の産物でしかない現状の自分と、
他人が見たらちょっと恥ずかしい感じがする理想の自分との
矛盾に引き裂かれながらのた打ち回る、そんな形式なのだと思ってたw
公開日記だから、あまり大人気ない対応をすると笑われるでしょうけどねw
0097デフォルトの名無しさん
2007/05/02(水) 20:17:19でも自称辛口とか、自称毒舌とかいうトコだと、そういうのは期待しにくいかな。経験的にいって。
たいてい余裕が無い。
0098デフォルトの名無しさん
2007/05/02(水) 20:37:59いろんなオブジェクトシステムがそれぞれその違った形で解決しているんだけど(mix-inも)この人は多重継承といったらC++しか無いみたい
個人的にはC++の多重継承だって使いどころさえ掴めば十分武器になると思うしここまでボロクソにいうものかと思うんだけど
そういえばインターフェースによる解決って作った本人が後に失敗したって漏らしたとか聞いた事あるな
まあ本当かどうかわからないけど
0099デフォルトの名無しさん
2007/05/02(水) 20:50:200100デフォルトの名無しさん
2007/05/02(水) 21:31:37↓通りすがりに喰いつかないの図
ttp://d.hatena.ne.jp/JavaBlack/20060812
0101デフォルトの名無しさん
2007/05/02(水) 21:52:50言っている事レベル低いし
0102デフォルトの名無しさん
2007/05/02(水) 21:55:470103デフォルトの名無しさん
2007/05/02(水) 21:56:110104デフォルトの名無しさん
2007/05/02(水) 22:00:50これって動画録って流したりしないんですかね
0105デフォルトの名無しさん
2007/05/02(水) 22:01:47CLOS は評価されるべきだな。
0106デフォルトの名無しさん
2007/05/02(水) 22:08:20それにメソッドはオブジェクトに属している方が楽だし
0107デフォルトの名無しさん
2007/05/02(水) 22:18:48一神教的に自分の信奉している考え方以外邪道だという難儀な奴が最近多い。
0108デフォルトの名無しさん
2007/05/02(水) 22:22:43所詮、オブジェクト指向なんてコーディングテクニックの一つに過ぎない。
それも、80 年代の香りプンプンの…
0109デフォルトの名無しさん
2007/05/02(水) 22:46:300110デフォルトの名無しさん
2007/05/02(水) 22:54:070111デフォルトの名無しさん
2007/05/02(水) 22:56:30Java だか C++ だかでやってくれよ、な。
0112デフォルトの名無しさん
2007/05/02(水) 22:59:55つーかageんなハゲ
0113103
2007/05/02(水) 23:02:190114デフォルトの名無しさん
2007/05/02(水) 23:09:48…
…本当だ!
書体も違うような
0115デフォルトの名無しさん
2007/05/02(水) 23:25:280116デフォルトの名無しさん
2007/05/02(水) 23:33:350117デフォルトの名無しさん
2007/05/02(水) 23:36:32On Listのほうが気になる
0118デフォルトの名無しさん
2007/05/02(水) 23:39:25//Д///) わ、わざとだよ! つ、ついだよ!
0119デフォルトの名無しさん
2007/05/03(木) 06:59:28オブジェクト指向は失敗だったとC++で証明されたから良かったものの、
もしC++で成功してたらLISPに未来はなかった。
C++の失敗に感謝しよう。
0120デフォルトの名無しさん
2007/05/03(木) 07:06:50てめぇ、俺がC++厨だと知ったうえで喧嘩売ってんのか? ( ゚Д゚) ア゙ア゙ん?
0121デフォルトの名無しさん
2007/05/03(木) 07:45:24てる概念は不要になってくる。また、メソッドをオブジェクトに埋め込む事も可能。
0122デフォルトの名無しさん
2007/05/03(木) 07:46:16反目する必要はない
0123デフォルトの名無しさん
2007/05/03(木) 07:46:330124デフォルトの名無しさん
2007/05/03(木) 10:37:25そうなんだけど、C++はやろうとある程度なんでも出来るけど、やろうと
すればするほどカオスになってしまって人が取り扱えないものに変貌して
しまうから、Lispほどの柔軟性を人が自在に扱えるものにするには、Lisp
以上の工夫がいるだろう。グリーンスパンの法則のとおりかも。
0125デフォルトの名無しさん
2007/05/03(木) 10:47:530126デフォルトの名無しさん
2007/05/03(木) 11:21:47もう C++ の信者はプログラミングよりも言語の放つ悪臭と対決するのが
快感になってきているな。
0127デフォルトの名無しさん
2007/05/03(木) 18:26:560128デフォルトの名無しさん
2007/05/03(木) 19:10:070129デフォルトの名無しさん
2007/05/03(木) 22:47:22Boostのテクニックは凄いし、Lisp以上の工夫はしてる。しかし、Lisp以上の
柔軟性は実現出来てないかも。
0130デフォルトの名無しさん
2007/05/03(木) 23:15:41の側面が多いから、むしろLisperはとっつきやすい。
0131デフォルトの名無しさん
2007/05/03(木) 23:38:41Lisper から見れば所詮ライブラリで実現出来る、学生演習程度のものだからねぇ。
あまり魅力無いですね、ハイ。
0132デフォルトの名無しさん
2007/05/03(木) 23:47:45C++やJavaはしっかり大人の仕事道具なのがなんともな。
(あ、噛み付かなくていいからな)
0133デフォルトの名無しさん
2007/05/03(木) 23:52:26C++ は糞だが大人の仕事道具となってはいますね。
Java はなんか、プログラミングセンスの無い人向けのトイ言語ってイメージ。
0134デフォルトの名無しさん
2007/05/04(金) 00:48:240135デフォルトの名無しさん
2007/05/04(金) 01:01:430136デフォルトの名無しさん
2007/05/04(金) 01:13:480137デフォルトの名無しさん
2007/05/04(金) 01:13:54でやってたことの再発見を、必死に追従しているだけにしか見えないけどね。
0138デフォルトの名無しさん
2007/05/04(金) 01:31:050139デフォルトの名無しさん
2007/05/04(金) 02:24:21C++を批評できる日本人は存在しないからだ
LISPは糞だという人間は信頼できる
優秀なLISPERに違いないからだ
0140デフォルトの名無しさん
2007/05/04(金) 02:32:04彼のS式の魔力は、彼がevalするとはapplyする事である事を明瞭に悟つた点に存する。
S式の対象がatomであるとpairであるとは一つの事であつて二つの事ではない。
S式とは竟にatomの夢を懐疑的に語る事ではないのか!
0141デフォルトの名無しさん
2007/05/04(金) 04:07:250142デフォルトの名無しさん
2007/05/05(土) 18:21:32聖域なき構造改革はまだですか
0143デフォルトの名無しさん
2007/05/06(日) 03:28:120144デフォルトの名無しさん
2007/05/06(日) 05:19:27i
s
p
完
0145デフォルトの名無しさん
2007/05/06(日) 15:41:56小林秀雄も lisper だったのかw
0146デフォルトの名無しさん
2007/05/06(日) 20:12:05最近のAOPも、CLOSの影響だしJavaのAOPへの動きもlisp
への回帰と言えるかも。
大人の道具という意味はわからんな。
0147デフォルトの名無しさん
2007/05/06(日) 20:43:080148デフォルトの名無しさん
2007/05/06(日) 21:26:280149デフォルトの名無しさん
2007/05/06(日) 21:44:270150デフォルトの名無しさん
2007/05/06(日) 22:14:0810年前が最近かよ(ぷ
0151デフォルトの名無しさん
2007/05/06(日) 22:15:12ついでに、AOPの提唱者はCLOSの人だっつーの(w
0152デフォルトの名無しさん
2007/05/06(日) 22:50:02Squeakスレのほうがいいんでない?
0153デフォルトの名無しさん
2007/05/06(日) 23:57:070154デフォルトの名無しさん
2007/05/07(月) 17:38:21ssaxでhtmlがパースできると聞き、
(ssax:xml->sxml (receive (return-code head body)
(http-get "www.google.com" "http://www.google.com/")
(open-input-string body) ) '())
としてみたのですが、
*** ERROR: "(input string port)":line 12: (END . head) while expecting ENDmeta
といわれてしまいます。
これは僕の使い方がいけないんでしょうか。
それともssaxがまだ対応してないんでしょうか。
0155デフォルトの名無しさん
2007/05/07(月) 19:03:18パースできるのはxmlだから。
0156デフォルトの名無しさん
2007/05/07(月) 19:31:42パースできるのはhtmlではなくXML。
対象がXMLであれば問題なくパースできる。
htmlの中でもxhtmlはXMLでもあるのでパースできる。
なお、文字コードの変換は勝手にはやってくれないことに注意。
0157154
2007/05/07(月) 20:11:09なんかごっちゃになってたみたいです。
htmlパーサがないか探して見ます。
0158デフォルトの名無しさん
2007/05/07(月) 22:50:43Gauche固有の話題なら本家のWiLiKiに書き込んだら書いた方がいいんでね?
0159デフォルトの名無しさん
2007/05/08(火) 01:03:260160デフォルトの名無しさん
2007/05/08(火) 09:04:57URLあったら教えてください。
いくつかキーワードを出してその優先順位が違うとか何とか・・・
うろ覚えだけど厳格さとか正確さとかお手軽さとかそんな感じだったような・・・
0161デフォルトの名無しさん
2007/05/08(火) 09:08:20Perl 6との比較があるなら俺も読みたい。
0162デフォルトの名無しさん
2007/05/08(火) 10:06:45perlとlispの比較って鉄パイプと数字の3を比較してくれっていうくらい
意味が捕らえにくい。比較する意味があるんか
0163デフォルトの名無しさん
2007/05/08(火) 10:33:160164デフォルトの名無しさん
2007/05/08(火) 10:59:330165デフォルトの名無しさん
2007/05/08(火) 13:01:491. 黒板でしか使えないオモチャである
2. 仕様が貧弱である
3. 本当のマクロは書けない
4. パッケージシステムがない
5. 正規表現が使えない
0166デフォルトの名無しさん
2007/05/08(火) 17:52:120167デフォルトの名無しさん
2007/05/08(火) 17:59:430168デフォルトの名無しさん
2007/05/08(火) 18:18:010169デフォルトの名無しさん
2007/05/08(火) 19:24:170170デフォルトの名無しさん
2007/05/08(火) 20:22:24ノ
0171デフォルトの名無しさん
2007/05/08(火) 21:01:43ノ
チャットは何時からやるんだろ?のぞきにいこっと
0172デフォルトの名無しさん
2007/05/08(火) 22:08:30ガラス張りだから職安通りから見えると思う
http://www.loft-prj.co.jp/naked/
0173デフォルトの名無しさん
2007/05/09(水) 19:59:17http://www.lingr.com/room/gauche
0174デフォルトの名無しさん
2007/05/09(水) 23:47:53あっと言うまに終わったけど面白かった。
座談会。笑えたけどもっとつっこんで欲しかった。matz の扱い悪すぎw
生えんどう氏や生dan kogaiや生nobsunが見れて嬉しい。
VNC を使った奴がデモとしては一番うまかった。
mephisto のデモ、一度もちゃんとしたの見たことなくて残念
schemer は黒田氏に釣られすぎw
あとほぼ全員、ダイエットしろよ('A`)
0175デフォルトの名無しさん
2007/05/10(木) 00:55:090176デフォルトの名無しさん
2007/05/10(木) 19:33:14>ダイエットしろよ('A`)
そうなのか。
0177デフォルトの名無しさん
2007/05/10(木) 20:05:43ようやく一つ勝った
0178デフォルトの名無しさん
2007/05/11(金) 01:56:03shiroさん vs 黒田氏の激論見たかった
しかしほんとうに黒板使うとはwww
0179デフォルトの名無しさん
2007/05/11(金) 06:02:300180デフォルトの名無しさん
2007/05/11(金) 23:06:18なかなか鋭いツッコミ入れてるなぁ
やっぱり切れ者ではあるんだな
0181デフォルトの名無しさん
2007/05/12(土) 18:40:09教育用としては本当に優れているね。
さすがだわ。
0182デフォルトの名無しさん
2007/05/12(土) 18:48:35どう優れてるのか語ってくれ
0183デフォルトの名無しさん
2007/05/12(土) 18:52:00たとえば開き括弧と閉じ括弧の対応が重要だってことが身をもってわかるわけよ。
0184デフォルトの名無しさん
2007/05/12(土) 19:00:040185デフォルトの名無しさん
2007/05/12(土) 19:11:35いやC言語は=の数が大事だという点の教育に主眼を置いて設計されているはず。
0186デフォルトの名無しさん
2007/05/12(土) 19:14:54そんな事はないだろw
0187デフォルトの名無しさん
2007/05/12(土) 19:38:49それからネイティブコンパイラとインタプリタの両方があることも良い点かと思いますよ
0188デフォルトの名無しさん
2007/05/12(土) 20:48:380189デフォルトの名無しさん
2007/05/12(土) 21:09:280190デフォルトの名無しさん
2007/05/12(土) 21:21:240191デフォルトの名無しさん
2007/05/12(土) 21:22:58始める前からこれかよ…ってw
0192デフォルトの名無しさん
2007/05/13(日) 05:23:40sbclまんせー
0193デフォルトの名無しさん
2007/05/13(日) 12:28:47どうして『OCaml』や『Haskell』ではないのですか?
私の場合は『Scheme』で関数型言語を学び始めたものですから、その延長で『Common Lisp』の勉強に進みました。
最近はちょくちょく『SML』なんかを触ったりしています。
0194デフォルトの名無しさん
2007/05/13(日) 13:09:10unicode1文字が内部でも1文字になるのがSML#しかないから(マルチバイトデータでは扱える)
0196デフォルトの名無しさん
2007/05/13(日) 13:28:31動的な言語と静的な言語という意味で180度違うじゃん
つまりは、動的なものが良かったということだろう
0197デフォルトの名無しさん
2007/05/13(日) 14:09:460198デフォルトの名無しさん
2007/05/13(日) 14:55:27の質問をした者です。
(define (f0 a b)
(let ((d1 (* a b))
(d2 (- a b))
(d3 (/ a b)))
(* (f1 d1 d2) (f2 d2 d3))))
(define (f1 x y)
(* x y))
(define (f2 x y)
(/ x y))
つづく、、、
0199デフォルトの名無しさん
2007/05/13(日) 14:57:040200デフォルトの名無しさん
2007/05/13(日) 15:00:40以下の出力を得るのが目的です。
> (parse f0)
iport: (i0 i1)
oport: (o0)
node:(m0 m1 m2 m3 m4)
graph:
(m0 (* i0 i1))
(m1 (- i0 i1))
(m2 (/ i0 i1))
(m3 (* m0 m1))
(m4 (/ m1 m2))
(o0 (* m3 m4))
ここで、
i0〜 :一番最初の入力データ並びを置き換えたもの。
m0〜 :計算に出現する中間データを番号付けしたもの。
o0〜 :最終の計算結果を番号付けしたもの。
既にマクロで隠蔽すればいいとのアドバイスを得ておりますが、
他には何か良く使われるアイデア等はありますか?
let については lambda に置き換えるとか??
0201デフォルトの名無しさん
2007/05/13(日) 15:04:07学生時代は Ocaml や Haskell とかの強い型付けの信奉者だたよ。
まだ Ocaml はたまに使ってるなー。Haskell は頭悪い俺には計算機の実行動作と
コードとの対応がすっきりしないから疎遠になった。CL はアセンブラあがりの
俺には丁度いい抽象具合ってところかな。
0202デフォルトの名無しさん
2007/05/13(日) 15:09:25scheme のプログラムについて、
それを Data Flow Graph (DFG)だと見なして、
直接にデータの流れを有効グラフにて表すことが目的です。
最初のプログラム定義は、"define" の文字列にこだわっていません。。
0203デフォルトの名無しさん
2007/05/13(日) 15:09:46そもそも Scheme も CommonLisp も関数型言語じゃないでしょ
だからなんでって言われても見当外れも甚だしいと思うんだけど
0204デフォルトの名無しさん
2007/05/13(日) 15:11:130205デフォルトの名無しさん
2007/05/13(日) 15:48:23関数型言語の本家なんだが。マルチパラダイムの方向に進化しけど。
0206デフォルトの名無しさん
2007/05/13(日) 16:05:55他の srfi の関数だと説明的で長い名前が多いんですけど iota
だけ妙に短くて気になります。ギリシャ文字のイオタ?
0207デフォルトの名無しさん
2007/05/13(日) 16:21:270208デフォルトの名無しさん
2007/05/13(日) 17:16:42本家?
そんな話あったか?
0209デフォルトの名無しさん
2007/05/13(日) 17:48:53一言でいえば別に関数型言語を使いたいわけじゃないから
0210デフォルトの名無しさん
2007/05/13(日) 18:10:56保守性が甚だしく損なわれるといった問題は起こらないのでしょうか?
どうもCLOSの多重継承が臭いのですよね。
やっぱりあれを使うのはC++と同様に使用を控えたほうがいいような気がするのです。
個人的にはComomon Lispは多機能すぎると感じています。
だったらSchemeを使えとなるわけで、まぁ、実際使っているのですが…。
言語使用にオブジェクト指向を組み込むのではなく、Objective-Cみたいに、
Scheme + オブジェクトシステム が理想ですね。
0211デフォルトの名無しさん
2007/05/13(日) 18:20:110212デフォルトの名無しさん
2007/05/13(日) 18:23:13C++の多重継承だって別に保守性が甚だしく損なわれるとは思わないけどな。
おまえさん変な本で妙な偏見を吹き込まれてないか?
0213デフォルトの名無しさん
2007/05/13(日) 18:50:46多重継承を使って意味不明なデザインをしてしまうような奴は、
おそらくどんなに制限された言語を使わせても保守性再利用性ゼロの馬鹿なコードを書くだろうよ。
0214デフォルトの名無しさん
2007/05/13(日) 19:13:070215デフォルトの名無しさん
2007/05/13(日) 19:15:390216デフォルトの名無しさん
2007/05/13(日) 19:58:35まさにそれだな
0217デフォルトの名無しさん
2007/05/13(日) 20:09:470218デフォルトの名無しさん
2007/05/13(日) 20:12:000219デフォルトの名無しさん
2007/05/13(日) 20:14:39状態を表現できない、もしくは表現するのに苦労する言語は使いたくないね
0220デフォルトの名無しさん
2007/05/13(日) 20:43:16827 名前:デフォルトの名無しさん[] 投稿日:2007/05/13(日) 19:11:48
OCamlがCommon Lispよりも優れている所って何だろう?
0221デフォルトの名無しさん
2007/05/13(日) 20:49:14そんなやつには俺は素直にeclipseを薦めよう
0222デフォルトの名無しさん
2007/05/13(日) 20:56:210223デフォルトの名無しさん
2007/05/13(日) 21:02:080224デフォルトの名無しさん
2007/05/13(日) 21:05:41っていうかマジでそういう風に思わせたいだけだろ?
0225デフォルトの名無しさん
2007/05/13(日) 21:13:49lisp やっている人は ruby 知らない人なんてほとんどいないんだよな
この時点でもう土俵が違う感じ
0226デフォルトの名無しさん
2007/05/13(日) 21:15:33必然性を論理的に導けるのでしょうか?
思い込みにすぎない、些細な理由はお断りします。
0227デフォルトの名無しさん
2007/05/13(日) 21:17:570228デフォルトの名無しさん
2007/05/13(日) 21:20:12ここから容易な推論により、
結論「俺様はrubyを使わない」
が導かれる。
この仮定は俺様の性質からして正しい。
0229デフォルトの名無しさん
2007/05/13(日) 21:21:40Rubyも使うよ
なんでも使う
0230デフォルトの名無しさん
2007/05/13(日) 21:23:02私はSchemeでおなかいっぱいですが…。
0231デフォルトの名無しさん
2007/05/13(日) 21:27:50私はCommonLispでおなかいっぱいですが…。
0232デフォルトの名無しさん
2007/05/13(日) 21:36:21おまえの態度が気に入らないから使わない。
0233デフォルトの名無しさん
2007/05/13(日) 21:40:37必然性を論理的に導けるのでしょうか?
思い込みにすぎない、些細な理由はお断りします。
0234デフォルトの名無しさん
2007/05/13(日) 21:41:350235デフォルトの名無しさん
2007/05/13(日) 21:45:55808 名前:デフォルトの名無しさん[] 投稿日:2007/05/12(土) 20:30:53
Scheme/Common Lispではなく、SML/OCamlを選んだ理由を教えてください。
関数型言語ML(SML, OCaml, etc.), Part 4
( http://pc11.2ch.net/test/read.cgi/tech/1133003340/808 )
0236デフォルトの名無しさん
2007/05/13(日) 21:52:22必要に応じて問題に適したものを選べばいいんだ馬鹿者。
0237デフォルトの名無しさん
2007/05/13(日) 22:47:28というかそれぞれの人がひとつの言語しか使わないと思ってるらしい。
それは典型的な素人の思いこみで、普通のプログラマは状況に応じてマッチした言語を選択するんだよね。
いくつもの言語をマスターしている。
たしかにLisp系は柔軟性が高くていろんな事が楽にできちゃうからこればっかり使っちゃうってのもあるけど、
それにしたってたとえばRubyの方が楽にできると思えばそっちを使うし。
0238デフォルトの名無しさん
2007/05/13(日) 22:50:010239デフォルトの名無しさん
2007/05/13(日) 22:50:04> ギリシャ文字のイオタ?
元ネタは APL の原始関数イオタだと思う.
0240デフォルトの名無しさん
2007/05/13(日) 23:44:430241デフォルトの名無しさん
2007/05/13(日) 23:48:00Common Lispのほうが楽だから
>>223
Common Lispのほうが楽だから
>>230
Common Lispのほうが楽だから
0242デフォルトの名無しさん
2007/05/14(月) 00:15:22ありがとうございます。すっきりしました。
ι6 で 1 2 3 4 5 6 になるんすね。へぇ〜。
ttp://homepage3.nifty.com/ysaigusa/jp/apl/guide/intro/index.html
0243デフォルトの名無しさん
2007/05/14(月) 02:30:42CLOSハC++ナドトクラベテ ユルヤカナ オブジェクトシコウ+アルファ
ダヨ。ユルヤカナオカゲデ、C++ナドトクラベテ スバゲティニナリニク
イカモ。ナゼナラ ソウショウカンスウト メンバカンスウノ チガイガ
オオキイナリ。
コモンリスプハ オモメノケイサントダイキボニナルモノ デユウリニナ
ル。ソレイガイノトコロデハ ユウイセイガ ムカシニクラベ テスクナ
ク ナッタトオモウ。
ソケットヤ スレッドカンレンノ カンスウノ ANSIカヲハヤクススメ
テホシイ。10ネンノアイダニヒツジュヒンガフエタ。
0244デフォルトの名無しさん
2007/05/14(月) 03:29:340245デフォルトの名無しさん
2007/05/14(月) 03:37:470246デフォルトの名無しさん
2007/05/14(月) 03:49:0110年どころか、Common Lispが生まれて20年以上だもんな。
そろそろソケット、XML、Unicodeあたりを標準に取り込んでもらいたいものだ。
0247デフォルトの名無しさん
2007/05/14(月) 04:13:440248デフォルトの名無しさん
2007/05/14(月) 21:43:53それからOCamlやろうと思うんだ
な〜にがCommon Lispだよ
0249デフォルトの名無しさん
2007/05/14(月) 21:46:360250デフォルトの名無しさん
2007/05/14(月) 21:47:560251デフォルトの名無しさん
2007/05/14(月) 23:34:33MLやるなら最初からMLでいいと思うんだ
だってSchemeのほうがかわいいじゃんw
0252デフォルトの名無しさん
2007/05/14(月) 23:37:580253デフォルトの名無しさん
2007/05/15(火) 00:06:210254デフォルトの名無しさん
2007/05/15(火) 03:43:59ちんまりしてきゅっとしてる感じだなぁ
0255デフォルトの名無しさん
2007/05/15(火) 03:54:190256デフォルトの名無しさん
2007/05/15(火) 11:04:28(1)いたわしい。ふびんだ。かわいそうだ。三体詩抄「万民の枯骨となりたるは―・い事ではをりないか」
(2)愛すべきである。深い愛情を感じる。「―・い我が子」「―・い声で歌う」
(3)小さくて美しい。「―・いスズランの花」
(岩波書店「広辞苑 第五版」より引用)
(1)の意味だったら厭だな
0257デフォルトの名無しさん
2007/05/15(火) 12:35:07Schemeをやらない手は無いよな。
0258デフォルトの名無しさん
2007/05/15(火) 19:28:06Schemeをやらない手は無いよな。
0259デフォルトの名無しさん
2007/05/15(火) 21:51:34GaucheNight (About Scheme cont.)
ttp://cl-www.msi.co.jp/solutions/knowledge/lisp-world/articles/gauche-night
仕様があいまいだから許さんって事?
0260デフォルトの名無しさん
2007/05/15(火) 22:09:44正規表現とFFIも☆逸す
0261デフォルトの名無しさん
2007/05/15(火) 22:32:02良いか悪いかはわからん。
0262デフォルトの名無しさん
2007/05/15(火) 22:39:350263デフォルトの名無しさん
2007/05/15(火) 22:43:49普通の正規表現も入ってもいいけど、パターンをS式で書けたりするとさらに萌えるな
0264デフォルトの名無しさん
2007/05/15(火) 22:51:48あと、sytax-caseは非標準だけど、これはマクロなのか?
まあ、これがマクロなら、ほとんどの処理系syntax-case備えてることから、
Schemeには実質マクロがあるようなもんだといっていいと思うのだが。
0265デフォルトの名無しさん
2007/05/15(火) 22:51:52さっそくshiroたんが反論してるね。
残念ながらレベル高すぎてついていけないorz
0266デフォルトの名無しさん
2007/05/15(火) 22:56:02マクロでもってオートマトンコードに変えるんなら意味なくもないが。
0267デフォルトの名無しさん
2007/05/15(火) 23:15:31焼酎飲みながらのことが多いですが、何度か通読しておるですよ。
6-2-3の冒頭なんかが端的にその精神を表しているように思うのですけれど。
規定されていない部分についての実装の挙動の規定というのは、シラフでじっくり読んでもほんの僅かしか確認できないし。
0268デフォルトの名無しさん
2007/05/15(火) 23:26:23elispにあるみたいな表記?
0269デフォルトの名無しさん
2007/05/15(火) 23:31:35Scheme:マクロ:CommonLispとの比較:意味論
ttp://practical-scheme.net/wiliki/wiliki.cgi?Scheme%3a%e3%83%9e%e3%82%af%e3%83%ad%3aCommonLisp%e3%81%a8%e3%81%ae%e6%af%94%e8%bc%83%3a%e6%84%8f%e5%91%b3%e8%ab%96
オレもさっぱりだw
0270デフォルトの名無しさん
2007/05/15(火) 23:48:53perl6 の rule 見たいな感じ?
0271デフォルトの名無しさん
2007/05/16(水) 03:39:20実装的に問題なければいーじゃんとする立場からは遠く離れた高みでの議論ですなあ。
0272デフォルトの名無しさん
2007/05/16(水) 16:30:230273デフォルトの名無しさん
2007/05/16(水) 16:32:040274デフォルトの名無しさん
2007/05/16(水) 16:40:36> Cは関数型言語だからな。
???
0275デフォルトの名無しさん
2007/05/16(水) 17:09:59これが一番広い意味の関数型言語の定義だと思うんだが。
純粋か不純かは関数の中で、変数の値を変化させる事が可能かどうかの
違いじゃなかったっけ?
Cはvoid型のように返す値がないものもあるので、関数型とは言わない。
0276デフォルトの名無しさん
2007/05/16(水) 17:12:340277デフォルトの名無しさん
2007/05/16(水) 18:09:03C言語で関数言語的なスタイルでプログラミングするんだ。
Lisp厨には理解出来ないか?
0278デフォルトの名無しさん
2007/05/16(水) 18:48:520279デフォルトの名無しさん
2007/05/16(水) 18:57:16自覚しろ
0280デフォルトの名無しさん
2007/05/16(水) 19:21:08>C言語で関数言語的なスタイルでプログラミングするんだ。
不可能ではないが、Cで関数言語的な事をやりたいならば、
関数ポインタは押さえておきなさい。
あとは、こちらより、haskellのスレに出かけて師を探せ。
じゃあがんばれよ。
0281デフォルトの名無しさん
2007/05/16(水) 19:24:180282デフォルトの名無しさん
2007/05/16(水) 19:31:55高階関数がムズいぜ。
むしろ痒いよw
0283デフォルトの名無しさん
2007/05/16(水) 19:59:440284デフォルトの名無しさん
2007/05/16(水) 20:39:41> 関数型... 関数を通して返す値が常にあるもの。y=f(x)の関係さ。
scheme の set-car! とかは関数だけど値を返してるといえるんだろうか。
> 純粋か不純かは関数の中で、変数の値を変化させる事が可能かどうかの
> 違いじゃなかったっけ?
代入があれば純粋ではないのはそうだろうけど、
代入がないからって純粋とは限らないんじゃないかな。
普通は副作用をもたないものを純粋というのでは?
0285デフォルトの名無しさん
2007/05/16(水) 20:57:24値を返す関数を関数の中に織り込むの
0286デフォルトの名無しさん
2007/05/16(水) 21:12:030287デフォルトの名無しさん
2007/05/16(水) 21:38:510288デフォルトの名無しさん
2007/05/16(水) 22:11:29schemeのset-car!みてぽかーんとしてしまった。#t #fどっちか
返せばいいのに。
>普通は副作用をもたないものを純粋というのでは?
代入の事を指していたのではなくて、このことを指していた。
関数の中で変数が変化するのは、破壊的だと考えられる。
一度決まった変数をいじらないことをさしていて、代入の有無ではないです。
0289デフォルトの名無しさん
2007/05/16(水) 22:22:54ほら、アレじゃね。C++ は参照透明な言語ですっていう一連のネタの続きじゃないの。
副作用の為のシンタックスシュガーが豊富に用意されていますって奴w
0290デフォルトの名無しさん
2007/05/16(水) 22:26:02関数型言語でしょ?
ttp://d.hatena.ne.jp/w_o/20060808#p2
0291デフォルトの名無しさん
2007/05/16(水) 22:33:100292デフォルトの名無しさん
2007/05/16(水) 23:17:020293デフォルトの名無しさん
2007/05/16(水) 23:21:120294デフォルトの名無しさん
2007/05/17(木) 21:01:47未束縛のxがあるとして、
(define-syntax foo
(syntax-rules () ((_) (define x 100))))
(foo)
としたあと、xが100になる処理系(Gauche,scm,guile)とxが未束縛のままの処理系(Gambit-C,scheme48,MzScheme)があるのですが
マクロ変換子のスコープってどうなってるんでしょうか
予想としては(syntax-rules ... )まで(後者の挙動)かなぁ、と思うのですが
0295デフォルトの名無しさん
2007/05/17(木) 21:49:500296デフォルトの名無しさん
2007/05/17(木) 21:52:11petite chez schemeではそのマクロを定義しようとした時点でエラーになった。
0297デフォルトの名無しさん
2007/05/17(木) 21:54:04ハイジニックな性質を守るためにはそれが正解だろう。
0298デフォルトの名無しさん
2007/05/17(木) 22:38:01ならねーよ。
もしかして全角空白ごとコピペしたんじゃね?
0299294
2007/05/17(木) 22:42:27> (foo)
> x
→ 100
なのに
> ((lambda () (foo) x))
だと、未定義もしくはlambda呼び出しの前の値です
((lambda () (foo) x))が100を返すけどトップレベル束縛にならない処理系もあって訳分からなくなってきました…
(foo)でスコープが閉じてその外では100にならないのが正しいと思うのですが
0300デフォルトの名無しさん
2007/05/17(木) 23:00:070301デフォルトの名無しさん
2007/05/17(木) 23:01:200302294
2007/05/17(木) 23:05:20defineは内部定義になってもset!は可視の束縛場所の値の変更ですから
使えるのではないでしょうか
内部定義だからxは自由参照じゃないからリネームされて外側のスコープの値を変更しない…んですよね?
保険的マクロ二加えて古典的マクロとgensymをR6RSに入れてくれれば良いのに
0303デフォルトの名無しさん
2007/05/17(木) 23:18:22syntax-caseが導入予定。
古典的マクロはsyntax-caseで実装可能。
0304294
2007/05/18(金) 14:41:54syntax-rulesの表現力に不満がある訳じゃなくて
(まだ自分はそんなレベルじゃないです)
実装が難しくて挙動が処理系依存になっているのなら
ポータブルな古典的マクロも標準に入れてほしいと思っただけです
syntax-rulesでスコープが閉じてるとしたら
マクロでdefineを使用すると必ず内部定義になってしまうから
R5RSのマクロの項でトップレベル定義のdefineについて言及していることへの辻褄が合わなくなってしまいますね
でも閉じてない(マクロ使用と同じスコープ)なら
そのマクロは定義が許される文脈でしか使用できなくなりますね
でも識別子の衝突を避けるためにリネームされるってことは
新しいスコープができている事に他ならない気もしますし
どっちなんでしょうか
0305デフォルトの名無しさん
2007/05/18(金) 15:33:400306デフォルトの名無しさん
2007/05/18(金) 17:39:530307デフォルトの名無しさん
2007/05/18(金) 17:56:300308294
2007/05/18(金) 18:40:13束縛→場所をユニークに表すもの
束縛する→識別子を場所またはマクロ変換子に対応づける
参照→場所から値を取り出す事
という解釈で良いんでしょうかね
束縛するはともかく他の2つは直感的な理解と違う解釈な気がしますけど
内部定義のduplicate bindingについてはR5RSでは言及されてないようですけど
内部定義のdefineは完全に等価なletrec変換できるって書いてあるので
暗黙的にduplicate bindingは禁止なんでしょうね
でも処理系によって許すものと許さないものがあるようです
syntax-caseで使用する識別子'_'はマクロ名を表すって説明してるサイトもありますけど
必ずしもそうじゃないんですね
パターンリストの先頭の識別子はパターン変数にならず、
マクロ名と見なされるってだけなので
(define-syntax foo (syntax-rules () ((bar _) (begin (display _) (newline)))))
見たいに書くとパターン変数として使えるんですね
0309デフォルトの名無しさん
2007/05/18(金) 20:00:03じゃあGaucheで
0310294
2007/05/18(金) 20:08:42パターン変数はいわばメタ変数で実体を持たないから
束縛を隠蔽する事はあっても新しい束縛の導入にならないんですね
じゃあR5RSの4.3のマクロの項で述べられている「束縛の挿入」は束縛コンストラクタを指している
そしてその束縛は(リネームされるから)マクロ使用の周りのものとは異なるわけですね
だからmzschemeやGambit-Cやscheme48の挙動が正しい
0311デフォルトの名無しさん
2007/05/18(金) 21:45:48束縛という日本語が、Lispを無駄に難解な言語だと誤解させている部分はあるかもしれないねえ。
単にまんまバインドと言うほうがわかりやすかったりして。言葉の意味をあまり考えないで済む分。
似たようなのに「関数」てのがあるね。もともとfunctionの中国語読みを無理やり函数なんて漢字に当てたもんだから、
プログラミングを初めて学ぶ人の中には、関数て語で混乱する人も少なくないらしい。
遠山啓先生なんかは何十年も前の著作で、functionは「函数」じゃなくて「機能」でいいじゃないかと書いていらっしゃる。
0312デフォルトの名無しさん
2007/05/18(金) 21:49:07「私は漢字苦手です」の一言で済むだろ
0313デフォルトの名無しさん
2007/05/18(金) 22:03:55関数は違和感を覚える前に慣れてしまったけど、
理系の人間の国語センスの無さには絶望する。
0314294
2007/05/18(金) 22:05:51構文束縛を除いて考えると
束縛とは
({let,let*,letrec} ((ここにある識別子 value) ...) body)
(lambda (ここにある識別子 ...) body)
(内部定義のdefine ここにある識別子 expression)
(トップレベルのdefine ここにある識別子、ただし未束縛 expression)
参照とは
識別子のうち、束縛でないもの
束縛の別名が束縛識別子、参照の別名が自由識別子って言う解釈で良いのでしょうか
>>311
束縛変数、自由変数だけならλ式みたいで分かりやすいんですけどね
束縛する、束縛、〜に対する束縛、〜への束縛、いろいろ種類があるので分かりにくいです
0315294
2007/05/18(金) 22:11:33この表現は解釈の余地もなく分かりやすいのですが
それ以外の「束縛する」、「束縛」などが分かりにくいですね
0316デフォルトの名無しさん
2007/05/18(金) 22:13:200317デフォルトの名無しさん
2007/05/18(金) 22:27:27functionなんて、今の関数よりはもともとの函数のほうが箱(函)をイメージして意訳してるので、
数学的な意味では関数よりも原語に近いイメージなんだけど、んなもん言われなきゃ気づかないよってのが痛いよなあ。
函→関に変わったのも、函の数て何よ?てなことからなんだろうし。
その点、「実装」てのは実に優秀な訳だと思う。見た瞬間にイメージが沸く。
0318デフォルトの名無しさん
2007/05/18(金) 22:45:17何か以前も同じ様な話題があった様な気がするけど…
;; 無理矢理話題をスレの趣旨に近付けてみた。
0319デフォルトの名無しさん
2007/05/18(金) 22:45:37函→関は当用(か常用)漢字の問題
0321デフォルトの名無しさん
2007/05/18(金) 22:59:31今定着している擁護で理解するほうがよっぽど楽だな。
0322294
2007/05/18(金) 23:00:34(lambda () x)と((lambda () x))では違いますから
評価される識別子→参照
評価されない識別子→束縛
ならいいでしょうか
0323294
2007/05/18(金) 23:05:48今は評価されていないけどいずれ評価されうる識別子→束縛
かな?
0324デフォルトの名無しさん
2007/05/18(金) 23:08:09音だけの問題じゃないぞ。
数と数の関連を表してるという意訳でもある。
0325デフォルトの名無しさん
2007/05/18(金) 23:47:31(eval 'x)
……とか言ってみる
いや、そんなによくわかってないんだけど
0326デフォルトの名無しさん
2007/05/19(土) 00:17:17関連性ほどけちゃってるじゃん
0327デフォルトの名無しさん
2007/05/19(土) 00:49:34たとえばRuby=>赤、Perl=>青、Python=>俺は紫なんだけど
Lispってイメージわかないんだよなぁ。しいて言えば無職ってかんじ。
0328327
2007/05/19(土) 00:50:54x無職
o無色
0329デフォルトの名無しさん
2007/05/19(土) 00:53:080330デフォルトの名無しさん
2007/05/19(土) 01:04:20Lispは透明感がある感じ。
0331デフォルトの名無しさん
2007/05/19(土) 01:11:55緑
0332デフォルトの名無しさん
2007/05/19(土) 01:15:300333デフォルトの名無しさん
2007/05/19(土) 01:23:10Perl ・・・ 真珠色
Python ・・・ ニシキ蛇色
Lisp ・・・ ポール色
0334デフォルトの名無しさん
2007/05/19(土) 01:26:40Ruby 赤 Perl 黄 Scheme 明るい青
C やや白っぽい黄 C++ ドドメ色
AWK 赤茶色 sed 黄
Ocaml 肌色
0335デフォルトの名無しさん
2007/05/19(土) 07:28:21君が思うまでもなく、みんな慣れの問題についての話をしてるんだよ。
何のメリットも無いのに、慣れるための壁を高くしてそうな日本語訳についての話。
0336デフォルトの名無しさん
2007/05/19(土) 09:22:35俺はCPANが水色だから水色を連想した。
>>334
>C やや白っぽい黄
なんかエロイな。
0337デフォルトの名無しさん
2007/05/19(土) 09:54:540339294
2007/05/19(土) 15:35:47識別子は場所に束縛される
束縛は識別子が束縛されている場所
参照は識別子が束縛されている場所から値を得る
ですね
0340294
2007/05/19(土) 16:32:40結論としてはdefine-syntax内ではdefineは使わないほうが良いようですね
他の束縛コンストラクタは閉じ括弧によって明示的にスコープも閉じられるので解釈に曖昧さがありませんが
defineはスコープの終端が明示的ではないので処理系によって挙動がずいぶん違うようです
というか内部定義のdefineなんてものが諸悪の根源のような気もします
0341デフォルトの名無しさん
2007/05/19(土) 18:28:420342デフォルトの名無しさん
2007/05/19(土) 18:33:35イタイねぇw
0343デフォルトの名無しさん
2007/05/19(土) 18:40:280344デフォルトの名無しさん
2007/05/19(土) 18:49:100345デフォルトの名無しさん
2007/05/19(土) 18:55:09なんか別の言葉で再定義して満足してるだけじゃね?
0346デフォルトの名無しさん
2007/05/19(土) 20:36:40Lisper が居て泣きながら帰ってきたってとこか。迷惑な…。
Ruby スレでもいらない子。Lisp スレにもどってきてもやっぱりいらない子。
0347デフォルトの名無しさん
2007/05/19(土) 20:44:33私はそれを実現するべくLispの勉強を始めたのでした。
0348デフォルトの名無しさん
2007/05/19(土) 21:02:57ライブラリが無いから実用的じゃないという流れでACL出されて
その後論点がまるで変わっているように見えるんだけどなぁ
というかこどもっぽい反応が目に付くような
0349294
2007/05/19(土) 21:30:05スレを汚して申し訳ないですけど
私はRubyスレをのぞいた事も書き込んだ事もないですし、
CLとschemeは勿論、それ以外の言語をけなす意図もないです
>>345
新しい概念の理解ではないので、自分の理解している言葉に置き換えただけです
0350デフォルトの名無しさん
2007/05/19(土) 21:45:33つか Ruby スレで Lisp 話やるのがスレ違いで叩き出されて当然だろ。
戻ってこられても迷惑だけど。
0351デフォルトの名無しさん
2007/05/19(土) 21:48:210352デフォルトの名無しさん
2007/05/19(土) 21:58:47キミも荒らしている一人じゃないか?
ほぼ書式が一緒だが
701 名前:デフォルトの名無しさん[sage] 投稿日:2007/05/19(土) 00:16:07
>>689 バカはお前だよ。CL コミュでもライブラリ不足は長い事問題になってんじゃん。
で、他言語のライブラリを活用しようとかって話でてるじゃん。ILC とか c.l.l とか読んでるんか?
きみのような頭が病気な人が一人いるだけで Lisper としては迷惑なんだよ。ここは Ruby スレだし。
まぁ Lisp 厨を装った荒しなんだろうけど、困ったもんだ…。
710 名前:デフォルトの名無しさん[sage] 投稿日:2007/05/19(土) 01:29:24
>>702 救い難いキチガイだな。なんで SBCL だと思ったんだ?妄想?
残念だけど Allegro CL 使ってるっつーの。そんでも Ruby を使うこともある。
そんで敬意は払う。おまえみたいに比較ばっかりで何一つ使いこなせないのが一番タチ悪いよ。
720 名前:デフォルトの名無しさん[sage] 投稿日:2007/05/19(土) 08:35:03
ちょwwww 荒し君 >>714 バカとかしか出なくなwww 小学生かよ。荒らし君涙目?売りは粘着だけか?
つかどっかで半端な知識でも聞きかじってきたんだろうが、Ruby スレで Lisp ネタで論破されるとは
どんだけヘタレなんだよ……Ruby ユーザーかつ Lisp ユーザーみたいな層の存在を考えなかったのか。
0353デフォルトの名無しさん
2007/05/19(土) 22:07:06このスレを荒らすなよ
0355デフォルトの名無しさん
2007/05/19(土) 23:08:23アレはほんと迷惑だな
0356デフォルトの名無しさん
2007/05/19(土) 23:15:350357デフォルトの名無しさん
2007/05/19(土) 23:50:16ぬるぽ!
0358デフォルトの名無しさん
2007/05/19(土) 23:55:32ガ
ッ
0359デフォルトの名無しさん
2007/05/20(日) 00:04:470360デフォルトの名無しさん
2007/05/20(日) 00:07:29どこら辺が妄想に見える?
0361デフォルトの名無しさん
2007/05/20(日) 00:18:03どうすればいいんでしょうか?
0362デフォルトの名無しさん
2007/05/20(日) 00:19:170363デフォルトの名無しさん
2007/05/20(日) 00:23:32そんな当たり前の答えは期待していないんですけどorz
0364デフォルトの名無しさん
2007/05/20(日) 00:49:57Rubyは赤葡萄酒色
Perlは茶色
Pythonは鉛色(ちょいメタリックぽい色)の縞柄
Lispはエメラルド色
0365デフォルトの名無しさん
2007/05/20(日) 00:56:58そりゃ、当たり前な答えしか返ってこない聞き方してるからじゃないか?
どんな答えを期待してるのか書いてくれなきゃわからんよ
0366デフォルトの名無しさん
2007/05/20(日) 00:58:17'ガッ
0367デフォルトの名無しさん
2007/05/20(日) 01:11:16荒らしはいろんなところでウザがられるのが当然じゃないか?
Rubyスレのぞいたけど >>352 に引用されてる記事の前に荒らしてるから煽られてんだろ
0368デフォルトの名無しさん
2007/05/20(日) 01:19:162chの鉄則「荒らしに反応した奴も荒らし」
>>352は「反応する」の域を明らかに超えてるな
というか「煽ってる」って自覚があるんだな
0369デフォルトの名無しさん
2007/05/20(日) 01:29:550370デフォルトの名無しさん
2007/05/20(日) 05:25:040371デフォルトの名無しさん
2007/05/20(日) 09:20:54「あれ、どうやら俺は、自分で思っていたほど賢くないみたいだぞ?」
っていうのを学んでいくんですよ。
一生「会話がアホになったのは俺と違って相手がバカだから」の一点張りで生き続けるのも
たまに居ますが。
0372デフォルトの名無しさん
2007/05/20(日) 14:01:12バレてないつもりなのか
>>367にもそのレスにもまだ特定できるほどの特徴が残ってるんだよ
0373デフォルトの名無しさん
2007/05/20(日) 14:28:420374デフォルトの名無しさん
2007/05/20(日) 14:44:53そりゃ駄目だよ
こういう馬鹿がRubyスレとか他のスレで暴れる前に釘を刺しておかないと
お前の事だけどな
0375デフォルトの名無しさん
2007/05/20(日) 14:48:14第三者のなりきりかな?
0376デフォルトの名無しさん
2007/05/20(日) 14:51:320377デフォルトの名無しさん
2007/05/20(日) 14:54:25もしかして自分が間違ってるかもと思ったら、それが正解だよ。
これ、俺からのアドバイスね。
0378デフォルトの名無しさん
2007/05/20(日) 15:11:510379デフォルトの名無しさん
2007/05/20(日) 15:50:01なんでそんなに特定したがってんだ??
689
CommonLisp が実用的じゃないって Ruby 厨はどれだけアホなんだw
で、Gauche の方が実用的だって?
Shiro 氏自身が実用で使うなら Gauche より CommonLisp とるって言っているのにwwww
702
SBCLで仕事しようとするからだろ
アホか
714
>>710は真性のアホだなw
0380デフォルトの名無しさん
2007/05/20(日) 15:58:09こんな見え見えの釣り針に>>352って小学生同士の喧嘩か
0381デフォルトの名無しさん
2007/05/20(日) 16:01:00「特定したがってる」んじゃなくて、
別人を装って>>352に引用されてる奴を擁護してるからお前に突っ込んでるんだよw
0382デフォルトの名無しさん
2007/05/20(日) 16:03:13こ
ち
ぬ
0383デフォルトの名無しさん
2007/05/20(日) 16:04:360384デフォルトの名無しさん
2007/05/20(日) 16:07:07Ruby スレがどうしたとかなんとか、そんなにムキになるほどの
ことなのかね?
そもそも何を怒ってるんだ君たちは?
0385デフォルトの名無しさん
2007/05/20(日) 17:02:310386デフォルトの名無しさん
2007/05/20(日) 18:07:02ttp://www.unsymmetry.org/up3d/files/1179633042839.jpg
0387デフォルトの名無しさん
2007/05/20(日) 18:26:41すごい勢いだな。
0388デフォルトの名無しさん
2007/05/20(日) 18:28:43実は奥の二人の方がが、手前の人よりも重要なんだよね(;゚∀゚)=3
0389デフォルトの名無しさん
2007/05/20(日) 18:39:580390デフォルトの名無しさん
2007/05/20(日) 20:30:42Lisp実装時の疑問に答えるスレ
GaucheNight後
GaucheNightの記事でLispを知ったLL信者に答えるスレ
0391デフォルトの名無しさん
2007/05/20(日) 21:04:45他の言語は完全に支配下に置いたんですけどねぇ・・・
0392デフォルトの名無しさん
2007/05/20(日) 21:07:380393デフォルトの名無しさん
2007/05/20(日) 22:51:04というかこれ自体は別に嘘言ってないよなあ
ライブラリが少ないから実用的じゃないみたいなツッコミに
商用パッケージ使わないからと言っているだけだし
相手が小学生みたいな反応に見える
0394デフォルトの名無しさん
2007/05/21(月) 03:31:13グレアムおじちゃんがお口にλつけて仕舞いにくるぞ
0395デフォルトの名無しさん
2007/05/21(月) 05:51:37自己顕示欲ともPerlコンプレックスともつかない、Rubyユーザーの野望がよく出てる単語というか。
とても人間的。
Lispはどっちかというと「わかる奴だけ使う最強兵器」みたいな位置だし、
ユーザーもそういう位置で満たされてるから、言語トーク自体を楽しむ意気込みはあっても、
そこで支配というワードが来ると、それどーゆー意味だったっけ的な溝を感じる。
0396デフォルトの名無しさん
2007/05/21(月) 10:51:460397デフォルトの名無しさん
2007/05/21(月) 14:13:140398デフォルトの名無しさん
2007/05/21(月) 14:41:110399デフォルトの名無しさん
2007/05/21(月) 14:46:33自己顕示欲とも万年筆コンプレックスともつかない、ボールペンユーザーの野望がよく出てる単語というか。
とても人間的。
筆ペンはどっちかというと「わかる奴だけ使う最強兵器」みたいな位置だし、
ユーザーもそういう位置で満たされてるから、筆記用具トーク自体を楽しむ意気込みはあっても、
そこで支配というワードが来ると、それどーゆー意味だったっけ的な溝を感じる。
0400デフォルトの名無しさん
2007/05/21(月) 15:31:150401デフォルトの名無しさん
2007/05/21(月) 16:34:300402デフォルトの名無しさん
2007/05/21(月) 18:35:450403デフォルトの名無しさん
2007/05/21(月) 18:45:51smalltalk (n.) [smo?to?k]] 1.文房具談義、筆記用具トーク 2. 小型のチョーク (→数奇夢)
0404デフォルトの名無しさん
2007/05/21(月) 19:55:410405デフォルトの名無しさん
2007/05/21(月) 21:18:17Schemeは馬の尾の毛だな
0406デフォルトの名無しさん
2007/05/21(月) 21:46:39どう違うの?
0407デフォルトの名無しさん
2007/05/21(月) 21:55:05馬の尾の毛は(().())
0408デフォルトの名無しさん
2007/05/21(月) 21:58:490409デフォルトの名無しさん
2007/05/21(月) 22:04:42)
(
)
0410デフォルトの名無しさん
2007/05/21(月) 22:18:54)
(
)
0411デフォルトの名無しさん
2007/05/21(月) 22:19:36(())
0412デフォルトの名無しさん
2007/05/22(火) 12:48:020413デフォルトの名無しさん
2007/05/22(火) 14:22:56Javaや.NETベースのアプリケーションサーバや、
Perl/Ruby/PHP/Python等のLightweight Languageの上に構築されていますが、
なぜそこにLispが含まれていないのでしょうか?
0414デフォルトの名無しさん
2007/05/22(火) 14:36:040415デフォルトの名無しさん
2007/05/22(火) 18:42:360416デフォルトの名無しさん
2007/05/22(火) 20:08:350417デフォルトの名無しさん
2007/05/22(火) 21:07:15酷い仕様だな
0418デフォルトの名無しさん
2007/05/22(火) 21:42:350419デフォルトの名無しさん
2007/05/22(火) 22:03:47それはラマダン!
0420デフォルトの名無しさん
2007/05/22(火) 22:04:44むしろラバンバ。
0421デフォルトの名無しさん
2007/05/22(火) 22:09:050422デフォルトの名無しさん
2007/05/22(火) 23:21:41ふつーにランバダってよんでたな。
0423デフォルトの名無しさん
2007/05/23(水) 00:36:400424デフォルトの名無しさん
2007/05/23(水) 01:01:470425デフォルトの名無しさん
2007/05/23(水) 02:13:320426デフォルトの名無しさん
2007/05/23(水) 02:22:370427デフォルトの名無しさん
2007/05/23(水) 05:59:23なんかこう、Lisperは特にそう考えたがりそうだね。
0428デフォルトの名無しさん
2007/05/24(木) 20:48:16それができない頭硬いバカチンに使いこなすのは無理
0429デフォルトの名無しさん
2007/05/24(木) 22:21:390430デフォルトの名無しさん
2007/05/24(木) 22:26:260431デフォルトの名無しさん
2007/05/24(木) 22:31:47暴れてるのはお前だろ
0432デフォルトの名無しさん
2007/05/24(木) 23:26:53スレッドと訪問者の関係を、チームと選手の関係みたいに思ってるんじゃないのか。
0433デフォルトの名無しさん
2007/05/24(木) 23:30:540434デフォルトの名無しさん
2007/05/24(木) 23:42:04はっじまっるよーーーーーー
0435デフォルトの名無しさん
2007/05/26(土) 08:24:50>...バチカンに使いこなすのは無理 に見えた。
言語論争の次は宗教論争かと思った。
0436デフォルトの名無しさん
2007/05/26(土) 09:10:000437デフォルトの名無しさん
2007/05/26(土) 09:22:46「やっぱPHP最強だわ」などの表現が見当たりますが、
Lispはどうなのでしょうか。
0438デフォルトの名無しさん
2007/05/26(土) 09:50:390439デフォルトの名無しさん
2007/05/26(土) 10:06:29ポール・グレアムに嘲笑われるぞ
0440ジュリー
2007/05/26(土) 10:14:380441デフォルトの名無しさん
2007/05/26(土) 13:00:49http://srfi.schemers.org/srfi-49/srfi-49.html
0442ジュリー
2007/05/26(土) 13:03:340443デフォルトの名無しさん
2007/05/26(土) 21:50:17それめっちゃ気持ち悪い。dylan? やっぱりかっこがいい。
かっこいいの!
0444デフォルトの名無しさん
2007/05/26(土) 22:10:110445デフォルトの名無しさん
2007/05/26(土) 22:33:450446デフォルトの名無しさん
2007/05/26(土) 23:41:43なんかスカスカで見た目にかっこわるい
0447デフォルトの名無しさん
2007/05/27(日) 00:39:40python 以上にキモい……
0448デフォルトの名無しさん
2007/05/27(日) 15:07:270449デフォルトの名無しさん
2007/05/27(日) 16:33:48define (fac x)
if (= x 0) 1
* x
fac (- x 1)
じゃあこうしよう
define (fac x)
{
if (= x 0)
{
1 (* x)
}
{
fac (- x 1)
}
}
0450デフォルトの名無しさん
2007/05/27(日) 16:40:560451デフォルトの名無しさん
2007/05/27(日) 16:44:10{ } の代わりに ( ) にしてみてもいいかも
0452デフォルトの名無しさん
2007/05/27(日) 16:47:59どうでもいいが式が間違ってるぞ
まあ前者はインデントが浅すぎでキモく見えるだけじゃないのか?
0453デフォルトの名無しさん
2007/05/27(日) 16:52:20この手法はSchemeと一緒に30年後も生き残っていそう。
それで、インデント文法はSchemeが元ネタだ! と騒ぐ信者が出現
0454デフォルトの名無しさん
2007/05/27(日) 16:55:51山口百恵のロックンロールウィドウもよろしく
0455デフォルトの名無しさん
2007/05/27(日) 22:28:34本体の展開よりも引数の評価を先にするようなトリックってありませんかね?
構造体を定義するマクロを自分でも書いてみようと思ったんですけど、
構造体名structure-nameを与えられてmake-structure-nameという名前の関数を定義する事さえ難しいという現実に直面してしまいました。
グローバル定義だけならevalでお茶を濁す手もあるんですが…
R6RSで導入予定というsyntax-caseもちょっと使ってみたんですが、
まだ標準化されていないせいか、処理系によって違いが結構あるので
今は乗り換えるのを見送ろうと思ってます。
0456デフォルトの名無しさん
2007/05/27(日) 22:59:32簡単なテストケースを書いてくれ
0457デフォルトの名無しさん
2007/05/27(日) 23:10:37; (syntax-rules () ((my-define-structure name slot ...)
; (define (string->symbol (string-append "make-" (symbol->string name))) (lambda (…
などとして、新しいシンボルを作ってそれを束縛したいのです。
defineは第1引数に式はおろか、準引用すら許しませんから困ってます。
そこで、マクロに展開されてdefineが評価される前に引数がシンボルに展開されれば、と考えました。
これは黒田氏が指摘している問題の一つな気がします。
Shiro氏も
・せめてシンボルの生成くらいはr5rs内で出来て欲しいってのはありますね。
とおっしゃってますし、正攻法ではどうも解決できない気がします。
プリプロセサを書くしかないのでしょうか?
0458デフォルトの名無しさん
2007/05/27(日) 23:14:04簡単にはテストケースを書けないんだろ。
0459デフォルトの名無しさん
2007/05/27(日) 23:15:440460デフォルトの名無しさん
2007/05/27(日) 23:18:21前スレ172みたいなのをコンパイル時にやりたいっつーことだな。
それならやっぱsyntax-case必要だろう。
0461デフォルトの名無しさん
2007/05/27(日) 23:29:230462デフォルトの名無しさん
2007/05/27(日) 23:30:37うわぁ、古い方の過去ログは読んだのですが、最近のは読んでませんでした。
全く同じですね。
syntax-case使うなら、やっぱりchezでしょうか?
私は主にmzschemeかscheme48かGambit-Cなので、syntax-caseはmzschemeしか使えないし、
chezのものとは少し違うようなので、
ポータビリティを考えたらCL的マクロに逃げるのがベターか、などと考えてます。
あまり関係ありませんが、Gambit-Cのsyntax-rulesを使えるようにするファイルは、syntax-caseが使えないのになんでsyntax-case.scmなのでしょうね。
0463デフォルトの名無しさん
2007/05/27(日) 23:31:31もちろん、CL的アプローチでは簡単です。
標準仕様の範囲でできるかどうか、という問題です。
0464デフォルトの名無しさん
2007/05/27(日) 23:49:36(define-syntax define&
(lambda(x)
(syntax-case x ()
((k sym obj)
(with-syntax
((s
(datum->syntax-object (syntax k)
(eval (syntax-object->datum (syntax sym))
(interaction-environment)))))
(syntax (define s obj)))))))
petite chez schemeで試してみたが、こういうテストケースでは動くことを確認した。
(define& (string->symbol (string-append "a" "b")) 1)
ab ;-> 1
結局のところ、今はschemeに足りないところがあるのはそのとおりだと思う。
でもな、完成されたものを使うだけってつまらないと思うわけ。
マクロに関しても色んな提案があってそれぞれ細かい部分で利点も問題点もかかえてて、
それがどう収束していくかってなかなか面白いことじゃないか。
ま、仕事で使うならそうもいってられんのだろうが。
0465デフォルトの名無しさん
2007/05/28(月) 00:05:510466デフォルトの名無しさん
2007/05/28(月) 00:10:200467デフォルトの名無しさん
2007/05/28(月) 00:11:34あなたのプログラムを見て初めて私のsyntax-caseがうまく動かなかった理由が分かりました!
ありがとうございました。
IBMにあるメタプログラミング技法を読んでsyntax-caseを勉強したのですが、
datum->syntax-objectの第1引数の(syntax k)のkはマクロ名にマッチする識別子だったんですね。
syntax-rulesではマクロ名にマッチした識別子は特に使い道がなかったので気がつきませんでした。
0468464 ◆3.JjF77I26
2007/05/28(月) 00:26:11ここにsrfi-93の日本語訳があるぞ。
http://www.katch.ne.jp/~leque/translations/srfi-93/srfi-93j.html
> 手続き datum->syntax は引き数として、
> テンプレート識別子 template-id と任意の値 datum のふたつをとる。
>
> (datum->syntax template-id datum)
>
> この手続きは template-id と同一の文脈情報をもつ、
> datum の構文オブジェクト表現を返す。 このとき、
> この構文オブジェクトは datum (訳注: template-id か)が
> 挿入されたのと同時にコードに挿入されたかのようにあつかわれる。
schemeのマクロではただシンボルを置き換えればいいってもんじゃなく、
文脈がからんでくるってこと。
ところでこの文書ではdatum->syntaxってなってるけど、
chez schemeを含むいくつかの系ではdatum->syntax-objectって名前なので注意。
0469デフォルトの名無しさん
2007/05/28(月) 01:05:53ありがとうございます。
読んでみました。
いろいろ勘違いしているところもありました。
しばらくsyntax-caseの勉強に励もうと思います。
0470デフォルトの名無しさん
2007/05/28(月) 13:38:52ちゃんと使えますね。
なぜか勘違いしてたみたいです。
0471デフォルトの名無しさん
2007/05/28(月) 18:02:010472デフォルトの名無しさん
2007/05/29(火) 00:38:39阿呆な質問なんだが scheme にも cl のパッケージの概念導入
できないものなんだろうか…?何か問題でもあるの?
0473デフォルトの名無しさん
2007/05/29(火) 00:39:190474デフォルトの名無しさん
2007/05/29(火) 01:05:37http://slashdot.jp/articles/07/05/28/1225254.shtml
0475デフォルトの名無しさん
2007/05/29(火) 01:41:35schemeでは名前空間を分離しない(?)原則みたいなのがあるとかなんとか言ってなかっったっけ?
0476デフォルトの名無しさん
2007/05/29(火) 07:30:570477デフォルトの名無しさん
2007/05/29(火) 09:42:050478デフォルトの名無しさん
2007/05/29(火) 09:48:500479デフォルトの名無しさん
2007/05/29(火) 22:22:370480デフォルトの名無しさん
2007/05/29(火) 22:29:120481デフォルトの名無しさん
2007/05/29(火) 22:34:260482デフォルトの名無しさん
2007/05/29(火) 22:34:41luaがそれっぽいですが
0483デフォルトの名無しさん
2007/05/29(火) 22:56:260484デフォルトの名無しさん
2007/05/29(火) 23:14:15http://groups.google.co.jp/group/comp.lang.scheme/browse_thread/thread/8fa8814b5c16eae4/b14cda30a53bc8f7
0485デフォルトの名無しさん
2007/05/30(水) 00:29:390486デフォルトの名無しさん
2007/05/30(水) 04:02:59末尾再帰とかゲームで採用されたりとかむかつかね?
しめとくか?
0487デフォルトの名無しさん
2007/05/30(水) 04:14:070488デフォルトの名無しさん
2007/05/30(水) 05:21:590489デフォルトの名無しさん
2007/05/30(水) 05:52:530490デフォルトの名無しさん
2007/05/30(水) 06:00:400491デフォルトの名無しさん
2007/05/30(水) 08:54:570492デフォルトの名無しさん
2007/05/30(水) 10:59:04むかつく理由が理解できない
0493デフォルトの名無しさん
2007/05/30(水) 15:20:350494デフォルトの名無しさん
2007/05/30(水) 17:36:510495デフォルトの名無しさん
2007/05/30(水) 19:36:200496デフォルトの名無しさん
2007/05/30(水) 20:33:49俺が好きなのは君だけさ
0497デフォルトの名無しさん
2007/05/31(木) 11:09:22それぞれを別の変数に入れる方法はありますか?
(read-from-string "459")
459
3
たとえば xとyに 459と3を入れる方法が知りたいです。
0498デフォルトの名無しさん
2007/05/31(木) 11:27:35multiple-value-bind
0499デフォルトの名無しさん
2007/05/31(木) 11:32:57ありがとう
失礼ですが、LISP暦は何年でしょうか?
0500デフォルトの名無しさん
2007/05/31(木) 11:35:49CL-USER> (multiple-value-bind (x y) (read-from-string "459") (list x y))
(459 3)
CL-USER> (multiple-value-setq (x y) (read-from-string "459"))
459
CL-USER> x
459
CL-USER> y
3
0501デフォルトの名無しさん
2007/05/31(木) 12:55:18失敗パターンのように要素?を""で囲むと正しく取得できません。
要素を""で囲っても正しく表引きしたいのですがLISPではどうするのでしょうか?
;=== 成功 ===
(let (
(hyo '((A 80) (B 70) (C 100))))
(print (assoc 'A hyo))
"OK"
)
○結果
(A 80)
"OK"
;=== 失敗 ===
(let (
(hyo '(("A" 80) ("B" 70) ("C" 100))))
(print (assoc "A" hyo))
"OUT"
)
×結果
nil
"OUT"
まだよくわかっていないのですが、
""とすると文字列限定される?ということでしょうか?
0502デフォルトの名無しさん
2007/05/31(木) 13:13:220503デフォルトの名無しさん
2007/05/31(木) 13:16:53数あるlisp方言の中にはそうでないのもあるのかな?
ちなみにemacs lispで実行してみたらこうなった。
(let (
(hyo '(("A" 80) ("B" 70) ("C" 100))))
(print (assoc "A" hyo))
"OUT"
)
("A" 80)
"OUT"
使ってる処理系が何かを示せばより的確な回答を返せる人がいるかもね。
0504デフォルトの名無しさん
2007/05/31(木) 13:16:56ありがとう
皆さん、簡単に答えますね。
うらやましいです。
0505デフォルトの名無しさん
2007/05/31(木) 13:22:590506デフォルトの名無しさん
2007/05/31(木) 13:41:37えー、初心者危険
ちなみに xyzzyです。
0507デフォルトの名無しさん
2007/05/31(木) 14:07:30なぜ?
0508デフォルトの名無しさん
2007/05/31(木) 21:46:17エディタのカスタマイズ以外にはあんまり使ってないけど三年ちょっとぐらい
>>503
Common Lisp だと eql だよ
0509デフォルトの名無しさん
2007/05/31(木) 22:20:34eqv? 値の一致
equal? 構造の一致
文字列の一致に使えるのって
なんとなくeqv?かと思ったけど違うのね。
eqv?の立ち位置って微妙じゃね?
文字列もアトムと考えればeqv?で良い気がするけど。
0510デフォルトの名無しさん
2007/05/31(木) 22:23:46わずかに速い気がする
0511デフォルトの名無しさん
2007/05/31(木) 22:28:07すまん、普段emacs lispとschemeしか使わないのでCommon Lispの
ことがすっかり頭から抜け落ちていた
0512デフォルトの名無しさん
2007/05/31(木) 23:32:42文字列も場所の列だからベクタと同じ扱いなんじゃなかろうか
string-set! とかあるし
0513デフォルトの名無しさん
2007/05/31(木) 23:51:57perlで以下のことがLISPではどのように書くのでしょうか?
*定義
$cell['A'][1] = ('国語' 100) <-- Lispのリスト
$cell['A'][2] = ('算数' 20) <-- Lispのリスト
$cell['A'][3] = ('理科' 30) <-- Lispのリスト
$cell['B'][1] = ('家庭科' 90) <-- Lispのリスト
*呼び出し
% print $cell['A'][2];
['算数', 20]
0514デフォルトの名無しさん
2007/06/01(金) 00:02:00なんか日本語がよくわからないんだが、
多次元配列なら aref に次元の数だけ引数を渡す
(aref #2A((1 2 3) (4 5 6)) 1 2)
=> 6
ところで多次元配列って Lisp では使ったことないんだけど、どういう時使う?
0515デフォルトの名無しさん
2007/06/01(金) 00:15:09まだ構文を覚えている最中で、どういう時に使うかまだでは考えていなかったのです。
LISPでは、多次元配列という考え方でなく別の方法で対処しているということでしょうか?
LISPらしい書き方を学ぶにはどうしたら良いのでしょうか?
私はPerlはかじっておりますので、perlと対比できたらわかりやすいです。
#2Aは何を意味するのでしょうか?2はニ次元Aは????
#3Bにしたらエラーになりました。
0516デフォルトの名無しさん
2007/06/01(金) 00:21:360517デフォルトの名無しさん
2007/06/01(金) 00:30:49ベタな例だけど行列とか
0518デフォルトの名無しさん
2007/06/01(金) 01:04:32CL-USER>(make-array '(1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1))
#20A((((((((((((((((((((0))))))))))))))))))))
0519デフォルトの名無しさん
2007/06/01(金) 01:08:02まあ、全て2要素にした程度でも凄いサイズになるけどな。
扱えないレベルではないけど。
0520デフォルトの名無しさん
2007/06/01(金) 01:13:53Hyperspecに答えが書いていたね。
http://www.lisp.org/HyperSpec/Body/fun_assoccm_a_assoc-if-not.html
のexamplesをみてみて。
0521デフォルトの名無しさん
2007/06/01(金) 01:18:38一番ありがちなのは lispで行列計算をしている場合。ライフゲームなどの
2次元空間グラフィック。そんなところじゃないのか
0522デフォルトの名無しさん
2007/06/01(金) 04:04:330523デフォルトの名無しさん
2007/06/01(金) 05:33:210524デフォルトの名無しさん
2007/06/01(金) 05:38:400525デフォルトの名無しさん
2007/06/01(金) 06:49:570526デフォルトの名無しさん
2007/06/02(土) 20:21:560527デフォルトの名無しさん
2007/06/02(土) 20:25:510528デフォルトの名無しさん
2007/06/02(土) 22:25:070529デフォルトの名無しさん
2007/06/02(土) 22:46:56'((justice is lost) (justice is raped) (justice is gone))
0530デフォルトの名無しさん
2007/06/02(土) 23:21:29休みの日にデパートの屋上から路上を眺めるのが趣味の人なんじゃないの
0531デフォルトの名無しさん
2007/06/02(土) 23:34:40凝視してる人だろ
0532デフォルトの名無しさん
2007/06/02(土) 23:48:090533デフォルトの名無しさん
2007/06/02(土) 23:51:270534デフォルトの名無しさん
2007/06/03(日) 16:55:160535デフォルトの名無しさん
2007/06/03(日) 16:55:450536デフォルトの名無しさん
2007/06/03(日) 17:16:000537デフォルトの名無しさん
2007/06/03(日) 17:37:08正解!
0538デフォルトの名無しさん
2007/06/03(日) 18:34:020539デフォルトの名無しさん
2007/06/03(日) 18:44:090540デフォルトの名無しさん
2007/06/03(日) 19:04:01「等しくないという等号」にすげぇ違和感
0541デフォルトの名無しさん
2007/06/03(日) 19:09:59はい次。
0542デフォルトの名無しさん
2007/06/03(日) 23:27:36pushすると
("C" "B" "A")となりますが
例えば、
(def test(x lst)
...
)
(setq lst '())
(test "A" lst)
(test "B" lst)
(test "C" lst)
(print lst)
で("A" "B" "C")とするには、どのようにtest関数を作ればよいのでしょうか?
pushした後 reverseせず、純粋に("A" "B"..というリストを作りたいです。
0543デフォルトの名無しさん
2007/06/03(日) 23:35:57>("C" "B" "A")となりますが
なりませんでした
はい次。
0544デフォルトの名無しさん
2007/06/03(日) 23:40:12何故そんなに push を嫌うのか分からん
0545デフォルトの名無しさん
2007/06/03(日) 23:45:090546デフォルトの名無しさん
2007/06/04(月) 00:17:170547デフォルトの名無しさん
2007/06/04(月) 00:42:340548デフォルトの名無しさん
2007/06/04(月) 00:49:080549デフォルトの名無しさん
2007/06/04(月) 00:54:11正しいマナーが根付くには時間がかかるものです。
悪癖は容易には正されません。
円滑なスレ進行のため今後も努力する所存です。
543
0550デフォルトの名無しさん
2007/06/04(月) 00:55:35単なる阿呆、とだけ思われてオシマイだと、うち捨てられて終わりなんだよね。
0551デフォルトの名無しさん
2007/06/04(月) 03:29:47君が欲しいのはこんな感じのものでは?
(defmacro test (x lst) `(setq ,lst (append ,lst (list ,x))))
でも>>546の言うとおり、pushしてnreverseのほうがたぶん速いよ。
0552デフォルトの名無しさん
2007/06/04(月) 04:08:000553デフォルトの名無しさん
2007/06/04(月) 13:51:230554デフォルトの名無しさん
2007/06/04(月) 21:13:09コンシングを減らすために使ってみたことあるよ。
おれがヘボなせいかあんま高速化しなかったけどorz
cl-user(5): (setq vec (make-array 10 :fill-pointer 0 :adjustable t))
#()
cl-user(6): (vector-push "a" vec)
0
cl-user(7): (vector-push "b" vec)
1
cl-user(8): (vector-push "c" vec)
2
cl-user(9): vec
#("a" "b" "c")
cl-user(10): (concatenate 'list vec)
("a" "b" "c")
0555デフォルトの名無しさん
2007/06/05(火) 00:50:01それはマクロでやると簡単。
(defmacro test (x lst)
`(setf ,lst (append ,lst (list ,x))))
0556デフォルトの名無しさん
2007/06/05(火) 01:02:270557デフォルトの名無しさん
2007/06/05(火) 03:19:49appendが新しいリストをconsセル一つ一つつなげて返すのに対して
nreverseは元のリストを破壊操作で処理するからって言うことで正しいですか?
0558デフォルトの名無しさん
2007/06/05(火) 07:17:24nreverse なら cons セルのつなげかえをするだけなので O(n) なのに対して、
リストの最後に付け加えていくのはリストが長くなるほど
たどる量が増えて O(n^2) になる、っていうことだと思う。
0559デフォルトの名無しさん
2007/06/05(火) 14:06:30(inc (dec inc))と(1 2 3)を入力として与えると
(2 (1 4))を返すような関数が欲しいんですけど、
なんか既にあるような気がします。
こ存じないですか?
0560デフォルトの名無しさん
2007/06/05(火) 14:16:590561デフォルトの名無しさん
2007/06/05(火) 15:58:340562559
2007/06/05(火) 16:20:06リストを構造体に見立てて、
別の構造体に変換するような操作は結構あるような気がしたんですが…
だとすると俺のやりかたが間違っているんだろうか。
ちょっと違う形になりましたけど、とりあえず書いたもんさらしてみます。
(define (general-apply syn args)
(eval `(,syn ,@args) (interaction-environment)))
(define (data-convert index record convert-rule)
(general-apply 'let (list (zip index record) convert-rule)) )
で、
(data-convert '(a b c) '(1 2 3) '(list (inc a) (list (dec b) (inc c))))
みたいな使い方をします。
0563デフォルトの名無しさん
2007/06/05(火) 16:27:00http://practical-scheme.net/gauche/man/gauche-refj_163.html#SEC435
0564559
2007/06/05(火) 17:31:16おお、なんかこれでよさそうです。
ありがとうございました。
0565デフォルトの名無しさん
2007/06/08(金) 16:24:42全然うごいてくれない
0566デフォルトの名無しさん
2007/06/08(金) 17:15:180567デフォルトの名無しさん
2007/06/08(金) 20:38:12キーワード引数で :style-sheet のとこにスタイルシート名を指定すること。
0568565
2007/06/10(日) 14:51:28しかたないのでpukiwikiをインストールします
0569デフォルトの名無しさん
2007/06/10(日) 15:02:040570デフォルトの名無しさん
2007/06/12(火) 00:38:23(if (解決-p 565)
(install wiliki)
(install pukiwiki))
残念。。
0571デフォルトの名無しさん
2007/06/12(火) 00:56:250572デフォルトの名無しさん
2007/06/12(火) 00:59:380573デフォルトの名無しさん
2007/06/12(火) 01:01:440574デフォルトの名無しさん
2007/06/12(火) 01:03:49なつかしすなー
0575デフォルトの名無しさん
2007/06/12(火) 04:45:52だと思ってた時期が(ry
0576デフォルトの名無しさん
2007/06/12(火) 21:31:350577デフォルトの名無しさん
2007/06/13(水) 21:15:05(define line (read-line port))
(append lst (line))
テキストファイルから、一行ずつ読み込んでリストに加えて行くという処理を書いてるのですが、
3行目の(line)でエラーになります。
こういう場合、どう書けばいいんでしょう?
0578デフォルトの名無しさん
2007/06/13(水) 21:17:350579デフォルトの名無しさん
2007/06/13(水) 21:32:15> gosh: "error": invalid application: ("aaa")
こんな感じです。
"aaa"は、テキストファイルから読み込んだ内容になってます。
0580デフォルトの名無しさん
2007/06/13(水) 21:50:460581デフォルトの名無しさん
2007/06/13(水) 21:56:13リテラルを破壊的に変更してはいけないといわれますが、次のような場合もでしょうか?
(do ((i 10 (- i 1))
(r '() (cons i r)))
((zero? i) (reverse! r)))
(reverse r) と書くべきなんでしょうか?
0582デフォルトの名無しさん
2007/06/13(水) 21:58:39その例ならリテラルを破壊的に変更はしないと思う
0583デフォルトの名無しさん
2007/06/13(水) 22:08:26じゃあ、次の場合はどうでしょうか。
リテラルを破壊的に変更してしまっているので、(reverse r) と書くべきでしょうか?
(do ((i 0 (- i 1))
(r '() (cons i r)))
((zero? i) (reverse! r)))
0584デフォルトの名無しさん
2007/06/13(水) 22:12:330585デフォルトの名無しさん
2007/06/13(水) 22:13:31空リストはそもそも破壊できるような物ではないので大丈夫
0586デフォルトの名無しさん
2007/06/13(水) 22:16:52じゃあ、空リストでない次の場合には破壊的に変更しているので、
(reverse r) と書くべきですね?
(let ((lst '(a b c)))
(do ((i 0 (- i 1))
(r lst (cons i r)))
((zero? i) (reverse! r))))
0587デフォルトの名無しさん
2007/06/13(水) 22:17:53そう。こういう場合は reverse! は厳禁。
0588デフォルトの名無しさん
2007/06/13(水) 22:23:03なるほど、やっと解ったような気がします。どうもありがとうございました。
0589デフォルトの名無しさん
2007/06/16(土) 11:57:560590デフォルトの名無しさん
2007/06/16(土) 17:34:580591デフォルトの名無しさん
2007/06/16(土) 18:47:590592デフォルトの名無しさん
2007/06/16(土) 20:57:210593デフォルトの名無しさん
2007/06/16(土) 22:15:21http://love6.2ch.net/test/read.cgi/book/1176782409/
0594デフォルトの名無しさん
2007/06/18(月) 14:29:24字句解析を使用と思い、以下の様なコードを書きました。
(define (lex-analyze inpx)
;; inpx: input port
(define (op? inpx)
(define op-char #\()
(if (char=? op-char (peek-char inpx))
(begin
(read-char inpx)
(cons 'op (list op-char)) )
#f ))
(define (cp? inpx)
(define cp-char #\))
(if (char=? #\) (peek-char inpx))
(begin
(read-char inpx)
(cons 'cp (list cp-char)) )
#f ))
0595594
2007/06/18(月) 14:31:06(if (char-whitespace? (peek-char inpx))
(let loop ((r (list (read-char inpx)))
(nc (peek-char inpx)) )
(if (char-whitespace? nc)
(loop (cons (read-char inpx) r) nc)
(cons 'ws (reverse r)) ))
#f ))
(define (wd? inpx)
(define (allowed-char? x) (not (char-whitespace? x)))
(if (allowed-char? (peek-char inpx))
(let loop ((r (list (read-char inpx)))
(nc (peek-char inpx)) )
(if (allowed-char? nc)
(loop (cons (read-char inpx) r) nc)
(cons 'wd (reverse r)) ))
#f ))
(define tokens (list op? cp? ws? wd?))
(define (f inpx)
(let loop ((t tokens))
(cond ((null? t) #f)
(((car t) inpx) => values)
(else (loop (cdr t))) )))
0596594
2007/06/18(月) 14:32:01(if (eof-object? (peek-char inpx)) (reverse r)
(loop (cons (f inpx) r)) ))
)
ここで、
echo '(+ 1 2)' > /tmp/hogeして作ったファイルを、
(define inp (open-input-file "/tmp/hoge"))として読み込ませて、
(lex-analyze inp)としたのですが、結果が返ってきません。
どうやら、2を読み込むところで時間がかかっている様なのですが、
どうしたらよいのでしょうか。
0597デフォルトの名無しさん
2007/06/18(月) 16:27:31(let loop ((r (list (read-char))) (nc (peek-char)))
letの束縛規則により、read-charとpeek-charの
どっちの副作用が先に適用されるのか不明ですよ。
Cの関数呼び出し時の引数でgetcとungetcを同時にしてると考えてください。
0598デフォルトの名無しさん
2007/06/18(月) 16:28:160599デフォルトの名無しさん
2007/06/18(月) 16:39:34ncが更新されてないよ。
peek-charを使わずに書き直した方が良いのでは。
0600デフォルトの名無しさん
2007/06/18(月) 16:51:06let loopの内側に(let ((nc peek-char)) ... ) でいいでしょ
それよりファイル末尾がwhitespaceの列だったりするとws?がeof読もうとして死ぬ
0601デフォルトの名無しさん
2007/06/18(月) 17:18:390602デフォルトの名無しさん
2007/06/18(月) 17:39:44ということは、 "2)" まで wd? で読み取って eof になっているが、 eof に対処するコードが wd? にないのでここで終了できなくなっている。これが原因でしょう。
仮に (+ 1 2 ) のように2と閉じカッコのあいだに空白を入れてみてごらん。それなら終わるから。
あと Gauche を使ってるなら text.parse とか便利なライブラリがあるから、そういうのを使った方がすっきり書けるよ。
ws? みたいなやつは skip-while を使えば一発だし。
0603594
2007/06/18(月) 18:32:44それは気づきませんでした。
ありがとうございます。
>598
すいません、怠けたかっただけなんです…
でもそのせいみたいですね。
>602
ありがとうございます。
(+ 1 2 )にしてもエラーで止まってしまいます。
でもそこら辺にもんだいがありそうですね。
もう少しやってみます。
それからこれは自分でパーサを書いてみよう、という試みなので、
ライブラリを使うのは無しです。
でも参考にしてみようと思います。
みなさんありがとうございました。
0604デフォルトの名無しさん
2007/06/18(月) 20:08:26バックトラックとか副作用気にせずできて便利っすよ。
named-let活用したいみたいだしCPS勉強すると良いでしょう。
例えばトークン抽出時や#f返してる所は末尾コンテキストだから、
そのまま他の判定処理にたらい回しして継続できるし。
慣れればread-charとかのI/O操作は違うレイヤーとして管理できるよ。
0605デフォルトの名無しさん
2007/06/18(月) 21:37:01惚れた、もっと昔に食わず嫌いしないでやっておけばよかった。
ちょいとのめり込み中。
0606デフォルトの名無しさん
2007/06/20(水) 20:12:56まず下のような感じで書いたのですが、これだと、nが0の場合にエラーになります。
(define (remove-at! ls n)
(let loop((prev '()) (rest ls) (count n))
(if (zero? count)
(begin
(set-cdr! prev (cdr rest))
(car rest))
(loop rest (cdr rest) (- count 1)))))
それで、nが0の場合は別に処理を入れてみたのですが、破壊的操作で、リストの先頭を削除するのがどうしてもわかりません。
どう書けばいいでしょうか?
(define (remove-at! ls n)
(cond
((null? ls) '())
((zero? n)
(let
((tmp (car ls)))
(set-cdr! ls (cdr ls)) ;; ここがダメ
tmp))
(else
(let loop((prev '()) (rest ls) (count n))
(if (zero? count)
(begin
(set-cdr! prev (cdr rest))
(car rest))
(loop rest (cdr rest) (- count 1)))))))
0607デフォルトの名無しさん
2007/06/20(水) 20:41:55> 破壊的操作で、リストの先頭を削除するのがどうしてもわかりません。
そういうことは原理的にできない。(理由は考えてみるべし)
append! で第一引数が () の場合なども同様で、結果は明示的に返す必要がある。
0608デフォルトの名無しさん
2007/06/20(水) 21:24:07(define (remove-at! ls n)
(if (null? ls)
(error "list too short")
(if (zero? n)
((lambda (tmp)
(set-car! ls (cadr ls))
(set-cdr! ls (cddr ls))
tmp)
(car ls))
(remove-at! (cdr ls) (- n 1)))))
0609デフォルトの名無しさん
2007/06/20(水) 21:42:44>(理由は考えてみるべし)
Cだったら、下のようなコードで、仮引数のほうを書き換えて、実引数が変化しないって悩んでるようなもんですかね?
struct cell {
struct cell* next;
const char *symbol;
};
const char* remove_at(struct cell* p, int n)
{
p = ・・・・
・・・
}
0610デフォルトの名無しさん
2007/06/20(水) 22:04:41(cond ((null? ls) '())
((zero? n)
((lambda (tmp)
(set-car! ls (cadr ls))
(set-cdr! ls (cddr ls))
tmp)
(car ls)))
((= 1 n)
(if (null? (cdr ls))
'()
(if (null? (cddr ls))
((lambda (tmp)
(set-cdr! ls '())
tmp)
(cadr ls))
((lambda (a b c)
(set-car! b (car c))
(set-cdr! b (cdr c))
a)
(cadr ls)
(cdr ls)
(cddr ls)))))
(else (remove-at! (cdr ls) (- n 1)))))
0611デフォルトの名無しさん
2007/06/20(水) 22:42:56>>610
サンキューです。
((lambda (tmp)
(set-car! ls (cadr ls))
(set-cdr! ls (cddr ls))
tmp)
(car ls))
で、書き換えできるみたいですね。
勉強になります。
0612デフォルトの名無しさん
2007/06/20(水) 23:22:49(remove-at! 0 '(a))
とすると破綻する。
変数の参照先をconsセルから全く別のものに置き換える操作って無いよね?
0613デフォルトの名無しさん
2007/06/20(水) 23:35:42(set! リスト (cdr リスト))
これを関数化するのは不可能というのを理解してるかどうか。
(define (リスト削除 リスト) (set! リスト (cdr リスト)) リスト)
(define リスト '(a b c))
(リスト削除 リスト) => (b c)
リスト => (a b c)
(set! リスト (リスト削除 リスト))
リスト => (b c)
答え
(define-macro (リスト削除 リスト) `(let ((リスト ,リスト)) (set! リスト (cdr リスト)) リスト))
(リスト削除 リスト)
リスト => (b c)
0614デフォルトの名無しさん
2007/06/20(水) 23:37:16まあ判るよね
0615デフォルトの名無しさん
2007/06/21(木) 17:54:16なんでschemeではないのでしょうか。
0616デフォルトの名無しさん
2007/06/21(木) 18:16:030617デフォルトの名無しさん
2007/06/21(木) 18:35:45危険だし行儀が悪いってことで廃止された
0618615
2007/06/21(木) 19:04:54危険だというのは分かりますが、
行儀が悪いというのはどういうことですか?
0619デフォルトの名無しさん
2007/06/21(木) 19:28:080620デフォルトの名無しさん
2007/06/21(木) 19:29:110621デフォルトの名無しさん
2007/06/21(木) 20:08:130622デフォルトの名無しさん
2007/06/21(木) 20:35:340623デフォルトの名無しさん
2007/06/23(土) 10:46:01というものが発掘された。
0624デフォルトの名無しさん
2007/06/23(土) 14:22:00;; 1
(define a '(big brown dog))
(define b (cons 'the a))
a ;=>(big brown dog)
b ;=>(the big brown dog)
(eq? a (cdr b)) ;=>#t
(set-cdr! a '(black cat))
(eq? a (cdr b)) ;=>#t
;; 2
(define a '(big brown dog))
(define b (cons 'small (cdr a)))
a ;=>(big brown dog)
b ;=>(small brown dog)
(eq? (cdr a) (cdr b)) ;=>#t
(set-cdr! a '(black cat))
(eq? (cdr a) (cdr b)) ;=>#f
(cdr a) ;=>(black cat)
(cdr b) ;=>(brown dog)
同一のオブジェクトを指しているのに、なぜ (cdr b) は元のままなんでしょうか?
0625デフォルトの名無しさん
2007/06/23(土) 15:01:420626デフォルトの名無しさん
2007/06/23(土) 15:10:25指していません。
0627デフォルトの名無しさん
2007/06/23(土) 16:33:26> 図に書いてみればいいんでない
図を書いてみてやっとわかりました!
>>626
> > 同一のオブジェクトを指しているのに
> 指していません。
set-cdr! する前の (cdr a) と (cdr b) は同一のオブジェクトを指しているけど、
set-cdr! のところで、新しいコンスセルが作られて、a の cdr がそのコンスセルを
指すようになっただけなんですね!
1 のケースもやっぱりわかってなくて、
eq? で比較して同じなんだから当然だよなとか思ってただけでした。
今度からはちゃんと図を書いて考えることにします。ヒントありがとうございました!
0628デフォルトの名無しさん
2007/06/23(土) 18:32:462つの同値の定数が同アドレスになるかどうかは処理系依存
0629デフォルトの名無しさん
2007/06/24(日) 21:51:05普段はclispをcygwinとfinkで使ってるんだけど
ttp://itpro.nikkeibp.co.jp/article/COLUMN/20070618/275142/
ここ見てたら
「私のお勧めは,Lispの方言の一つであるSchemeの処理系,Gaucheです」
なんて書いてあるからすこし気になって・・・
0630デフォルトの名無しさん
2007/06/24(日) 23:05:32単にLispっていうとCommonLispのことを指したりする場合が多いけど、
それっぽい系統の言語は全部Lispだ。
だけど、CommonLisp使いはSchemeをLispと呼びたくない人もいたりして、
それぞれの主張がある。
その辺は空気を読んで折り合いを付けていかねばならんところ。
CommonLispとSchemeの何が違うかって言う話を一言で言えば規格が違う。
どのように思想が違うかってのはウェブ上に色々文章があるから、
それを見てから疑問に思ったことを質問してくれ。
0631デフォルトの名無しさん
2007/06/24(日) 23:14:19使ってるやつらにとっては大きな違いで、お互い意味通じねえよ!
っていってるが、日本から見たらどっちも同じようなもん。
0632デフォルトの名無しさん
2007/06/24(日) 23:42:54ポルトガル語とスペイン語のほうが分かりやすいかも。
0633デフォルトの名無しさん
2007/06/24(日) 23:53:37人の勧めにいちいち流されない人間になるのが先決では?
0634デフォルトの名無しさん
2007/06/25(月) 00:03:01JavaとD言語くらい違う
ダートマス大学のBASICとMS-BASICぐらい違う
元々同じ系統で似たような書き方をするが
同じコードが通ることはまず無いって感じかな
同じことするにも違う書き方をする場合が多い
0635デフォルトの名無しさん
2007/06/25(月) 00:31:53今のSchemeと少し違うけどこれ読むといいよ
Scheme: A Interpreter for Extended Lambda Calculus
http://www.brics.dk/~hosc/local/HOSC-11-4-pp405-439.pdf
0636デフォルトの名無しさん
2007/06/25(月) 01:23:43関係なくね?
0637デフォルトの名無しさん
2007/06/25(月) 23:54:240638デフォルトの名無しさん
2007/06/26(火) 02:14:02関数型は基本的に変数というものが希薄。理由は、関数型のスタートは
チューリングマシンや階差機関、ノイマン型を元とした手続き型言語と基本的
な原理が違う。同様にloopもunsafe。考え方を改めないとだめ。
0639デフォルトの名無しさん
2007/06/26(火) 06:37:450640デフォルトの名無しさん
2007/06/26(火) 08:26:450641デフォルトの名無しさん
2007/06/26(火) 10:02:320642デフォルトの名無しさん
2007/06/26(火) 10:09:17!が付く関数がある時点でアウトだろ。
0643デフォルトの名無しさん
2007/06/26(火) 12:34:470644デフォルトの名無しさん
2007/06/26(火) 22:41:140645デフォルトの名無しさん
2007/06/27(水) 01:39:47関数型と比較した場合の逐次命令実行型という意味では同じと思った
>まぁ安全かどうかを突き詰めるなら Haskell でもやってなさいってこった
それを言ったらC++でC風なコードを書いているのといっそで、関数型言語を
使う意味ないよ
0646デフォルトの名無しさん
2007/06/27(水) 02:10:100647デフォルトの名無しさん
2007/06/27(水) 02:12:230648デフォルトの名無しさん
2007/06/27(水) 02:24:120649デフォルトの名無しさん
2007/06/27(水) 02:29:490650デフォルトの名無しさん
2007/06/27(水) 20:47:130651デフォルトの名無しさん
2007/06/28(木) 06:53:590652デフォルトの名無しさん
2007/06/28(木) 12:20:310653デフォルトの名無しさん
2007/06/28(木) 12:44:180654デフォルトの名無しさん
2007/06/28(木) 16:28:20ずっと待ってるから、必ず来てね。
約束……だよ?
0655デフォルトの名無しさん
2007/06/28(木) 17:48:580656デフォルトの名無しさん
2007/06/28(木) 19:16:10確か ! だったっけ
0657デフォルトの名無しさん
2007/06/28(木) 19:16:460658デフォルトの名無しさん
2007/06/28(木) 21:55:500659デフォルトの名無しさん
2007/06/30(土) 12:57:27(defun color (fruit)
(case fruit
(apple 'red)
((banana lemon) 'yellow)
(peach 'pink)
(otherwise "I don't know")))
という果物の名前を引数にとって、色の名前を返す関数colorで
何もマッチしない時の処理が、
(otherwise "I don't know")))
なんですが、これを
(t "I don't know")))にしてもOKだと説明してあって、
どうしてなのかな?と自分なりに考えたんですが、
LispではNIL以外は何でも真だからマッチしない物を一緒くたにまとめた物を
tとして扱うのかな、と思ったんです。
実際のところ、なんでtなんですか?
otherwiseなら納得できるのですが。
0660デフォルトの名無しさん
2007/06/30(土) 15:18:08elseに相当する物がなかった時代の名残り。
caseでも使われるのはcondと同じ構文だから。
長い間LISP使いにとっての常識だった。
otherwiseみたいな長いシンボルはCommonLisp特有。
0661デフォルトの名無しさん
2007/06/30(土) 15:28:28car と first みたいなもんで、好きな方を使えば良い。
0662デフォルトの名無しさん
2007/07/01(日) 18:22:31PAIP 読んだ事無いけど、λの発祥が ^ だとは知らんかった。
(^ (x) (* x x))
何気に良いんじゃないだろうか...
0663デフォルトの名無しさん
2007/07/01(日) 18:32:500664デフォルトの名無しさん
2007/07/01(日) 18:59:500665デフォルトの名無しさん
2007/07/01(日) 19:03:060666デフォルトの名無しさん
2007/07/01(日) 19:05:54え、めっちゃ有名な話だと思ってたよ。
俺の持ってる本にも書いてあるし。
0667デフォルトの名無しさん
2007/07/01(日) 19:07:11&#955;
0668デフォルトの名無しさん
2007/07/01(日) 19:26:31顔殴られたクマーみたい
0669デフォルトの名無しさん
2007/07/01(日) 19:36:590670デフォルトの名無しさん
2007/07/01(日) 20:03:58俺、貧乏で本買えないから…
0671デフォルトの名無しさん
2007/07/01(日) 20:11:24図書館行くとよいぞ。
0672デフォルトの名無しさん
2007/07/01(日) 20:24:56bashとかperlみたいに$を使う事にしてます。
(厳密には$と.で識別子を挟む。)
束縛子に$を使って、参照は識別子そのままなので、用法は逆ですけどね。
($m. $n. $s. $x. m s (n s x)) ($s. $x. s x) ($s. $x. s (s x))
こんな感じで
0673デフォルトの名無しさん
2007/07/01(日) 21:00:01あんた賢いな
0674デフォルトの名無しさん
2007/07/01(日) 21:12:310676デフォルトの名無しさん
2007/07/02(月) 07:43:04俺LISPで採用けってい
0677デフォルトの名無しさん
2007/07/02(月) 11:00:150678デフォルトの名無しさん
2007/07/02(月) 13:27:380679デフォルトの名無しさん
2007/07/02(月) 14:14:520680デフォルトの名無しさん
2007/07/02(月) 16:35:540681デフォルトの名無しさん
2007/07/02(月) 18:14:29http://bugyo.tk/~zick/cosak/
こんな変なのがあったぞ。
0682デフォルトの名無しさん
2007/07/02(月) 20:18:53個人的には ^ は return に見えてしまう...
0683デフォルトの名無しさん
2007/07/02(月) 20:55:160684デフォルトの名無しさん
2007/07/02(月) 21:32:48いっちょ前にquasi-quoteっぽい仕組みまである(様に見える)。
0685デフォルトの名無しさん
2007/07/02(月) 22:31:01[]でも<>でも{}でも`'でも良いのに
接頭字+空白セパレタが主流なのはなぜなんでしょうね?
0686デフォルトの名無しさん
2007/07/02(月) 22:34:22歴史的には接頭字の方が先なんでしたね
0687デフォルトの名無しさん
2007/07/03(火) 14:32:31アトムとリストと、
car,cdr,cons,atom,eq
これでどうやって足し算が出来たりするのでしょうか?
0688デフォルトの名無しさん
2007/07/03(火) 14:41:01チャーチ数 でググれ
0689デフォルトの名無しさん
2007/07/03(火) 14:42:49そうすると足し算はappendになる。他も自分で考えてみな。
0690デフォルトの名無しさん
2007/07/03(火) 14:54:04だいたいイメージつかめた。
有り難うございます。
0691デフォルトの名無しさん
2007/07/03(火) 16:35:22リストの長さで0以上の自然数を表すなら、
()=0
(())=1
((()))=2
は納得できるのですが、
これでどうやってリストを表すのでしょうか?
アトムしか表現できないんじゃないんですか?
0692デフォルトの名無しさん
2007/07/03(火) 18:49:44(())
(() ())
(() () ())
0693デフォルトの名無しさん
2007/07/03(火) 19:35:56言ってる意味が分かんないなぁ
0694デフォルトの名無しさん
2007/07/03(火) 20:56:23だから何ってやつ
0695デフォルトの名無しさん
2007/07/03(火) 21:13:45この人もそれと同様、これから自分の疑問の内容がわかるんだと思う。
0696デフォルトの名無しさん
2007/07/03(火) 21:36:29リスパーなら演技くらいはできないとな。
0697デフォルトの名無しさん
2007/07/03(火) 21:42:57プログラム言語の話とかだけじゃ相手にしてもらえない。
科学好き、数学好きとかが多すぎる。
0698デフォルトの名無しさん
2007/07/03(火) 22:03:06そんな僕でも立派なLisperになれるでしょうか
0699デフォルトの名無しさん
2007/07/03(火) 22:09:470700デフォルトの名無しさん
2007/07/03(火) 22:13:10GNU GPLを暗唱できたらあるいみ立派なLisperになれるかも!
0701デフォルトの名無しさん
2007/07/03(火) 22:14:31本当にチューリング完全かどうか
疑問に思ってるんじゃないですか?
ちょうど1ヶ月前の自分と同じで
マッカーシーの論文斜め読みしたら
関数は五つで良いけど
→表記も含まれるから
condかifスペシャルフォームも必要みたいに感じました
本当に五つの基本関数(と真偽値)「だけ」でチューリング完全なら
自分にも教えてください
0702デフォルトの名無しさん
2007/07/03(火) 22:15:180703デフォルトの名無しさん
2007/07/03(火) 22:25:570704デフォルトの名無しさん
2007/07/03(火) 22:35:59再帰かループがないとどうにもならんよ
0705デフォルトの名無しさん
2007/07/03(火) 22:41:000706デフォルトの名無しさん
2007/07/03(火) 22:41:26と、いうことはcondまたはifと
関数抽象のためのlambdaが必要ということになりますか
要素としては5関数2特別式でチューリング完全
0707デフォルトの名無しさん
2007/07/03(火) 22:44:52でもそうすると5関数の立場が…
0708デフォルトの名無しさん
2007/07/03(火) 22:48:570709デフォルトの名無しさん
2007/07/03(火) 22:51:550710デフォルトの名無しさん
2007/07/03(火) 23:01:190711デフォルトの名無しさん
2007/07/03(火) 23:07:44どこらへんですか?
正格評価だからですか?
0712デフォルトの名無しさん
2007/07/04(水) 00:57:12チューリング完全である≠"apply" or "eval"が記述できる
lambdaがあればチューリング完全だけど
"Lisp"の機能を満たすために5つの基本関数が必要である
ってことですか?
0713デフォルトの名無しさん
2007/07/04(水) 10:57:50例えば (0 1 2 3 4 5 6 7 8 9) から 3 を除いた (0 1 2 4 5 6 7 8 9) が欲しいです
それとも、もしかすると Gauche の添付ライブラリの中にありますか…?
一応自分でも書いてみたのですが
かなり長〜くなってしまって。
0714デフォルトの名無しさん
2007/07/04(水) 11:10:12(cond
((null? l) l)
((= n 0) (cdr l))
(t (cons (car l) (exclude-nth (1- n) (cdr l))))))
0715デフォルトの名無しさん
2007/07/04(水) 11:25:50(define (exclude-nth n l) (append (take l n) (drop l ( + n 1))))
(exclude-nth 3 '(0 1 2 3 4 5 6 7 8 9))
=>(0 1 2 4 5 6 7 8 9)
0716デフォルトの名無しさん
2007/07/04(水) 12:12:11takeは必ずリストつくるからappend!でセルを節約したくなる貧乏性な俺
0717デフォルトの名無しさん
2007/07/04(水) 12:56:33>714
勉強になります。
>715
takeとdrop、こんなのあったんですね。
こんなに短くなるとは…
0718デフォルトの名無しさん
2007/07/04(水) 12:58:18(use gauche.sequence)
(define (exclude-nth n l)
(reverse!
(fold-with-index
(lambda (i e pr)
(if (= n i)
pr
(cons e pr)))
'()
l)))
;(exclude-nth 3 '(0 1 2 3 4 5 6 7 8 9))
;; =>(0 1 2 4 5 6 7 8 9)
0719デフォルトの名無しさん
2007/07/04(水) 13:03:35このオペレータ…とはどれのことなのか
Schemeに不慣れな私には判りませんが
…えーと…
ちょっと勉強がてら気合い入れて読んでみます…
0720デフォルトの名無しさん
2007/07/04(水) 13:05:280721デフォルトの名無しさん
2007/07/04(水) 13:29:050722デフォルトの名無しさん
2007/07/04(水) 13:41:43適用できる様にexclude-nthを拡張せよ
ex.)
(exclude-nth 2 '(0 1 2 . 3)) => (0 1 . 3)
(exclude-nth 3 '(0 1 2 . 3)) =>(0 1 2)
(exclude-nth 4 '(0 1 2 . 3)) =>(0 1 2 . 3) ;; 同値
0723デフォルトの名無しさん
2007/07/04(水) 13:59:22(define (exclude-nth n ls)
(cond ((null? ls) '())
((= n 0) (if (not (pair? ls)) '()
(cdr ls)))
((not (pair? ls)) ls)
(else (cons (car ls)
(exclude-nth (- n 1) (cdr ls))))))
0724デフォルトの名無しさん
2007/07/04(水) 14:21:52多分合ってる。
用意してた答えはコレ
(define (exclude-nth n l)
(let loop ((n n)(r '()) (l l))
(if (pair? l)
(loop (- n 1) (if (= n 0) r (cons (car l) r)) (cdr l))
(if (null? l)
(reverse r)
(if (= n 0)
(reverse r)
(apply list* (reverse (cons l r))))))))
我ながらapply list* reverseは美しくないよな・・
0725デフォルトの名無しさん
2007/07/04(水) 14:28:040726723
2007/07/04(水) 14:30:40(define (exclude-nth n ls)
(let loop ((ls ls) (n n) (acc '()))
(cond ((null? ls) (reverse! acc))
((= n 0) (if (not (pair? ls))
(reverse! acc)
(loop (cdr ls) (- n 1) acc)))
((not (pair? ls)) (append (reverse! acc) ls))
(else (loop (cdr ls) (- n 1) (cons (car ls) acc))))))
0727デフォルトの名無しさん
2007/07/04(水) 14:33:34(define (apply-list* l)
(define (loop l)
(if (and (pair? l) (pair? (cdr l)))
(cons (car l) (loop (cdr l)))
(car l)))
(loop l))
って、これは末尾再帰じゃないしな
>>726
appendすりゃよかったのね
0728デフォルトの名無しさん
2007/07/04(水) 23:17:00λとlambdaが等価じゃないところ1つ見つけた
λxyz.E = λx.λy.λz.E
(lambda (x y z) E) ≠ (lambda (x) (lambda (y) (lambda (z) E)))
他にどんな違いがあるかなぁ
0729デフォルトの名無しさん
2007/07/04(水) 23:50:27最低限のデータ構造って何だろう。
リストが使えないとダメなのかな?
0730デフォルトの名無しさん
2007/07/04(水) 23:59:270731デフォルトの名無しさん
2007/07/05(木) 00:13:14純Lisp5関数でチューリング完全じゃない(?)のは不思議
eqやatomがTやNILを返すんじゃなくて
carとcdrを返すなら何とかなりそうな気もする
関数を返す関数くらいは必要な気がする
0732デフォルトの名無しさん
2007/07/05(木) 00:16:37CL loop マクロは見易いと思う。
(defun exclude-nth (n l)
(loop for x in l and idx from 0 if (/= idx n) collect x))
だけど >>722 の不完全リストだと書けないかな。
0733デフォルトの名無しさん
2007/07/05(木) 00:57:12整数が1つあれば十分だろ。コンピュータのメモリなんて見方によっては
ものすごく桁数が多い1つの2進数なんだし。
0734デフォルトの名無しさん
2007/07/05(木) 00:59:480735デフォルトの名無しさん
2007/07/05(木) 01:04:59どちらか片方あればもう片方が表現できる。
0736デフォルトの名無しさん
2007/07/05(木) 01:19:560737デフォルトの名無しさん
2007/07/05(木) 01:41:20Symbolics社のはタグ付きアーキだったってC-FAQに書いてあった
だからポインターが数値でない
0738デフォルトの名無しさん
2007/07/05(木) 02:14:33なくてどうする
0739デフォルトの名無しさん
2007/07/07(土) 20:47:56作ろうと思えば簡単に出来そうなんだが、誰かやってる人いないかなと思って。
0740デフォルトの名無しさん
2007/07/07(土) 21:21:170741デフォルトの名無しさん
2007/07/07(土) 21:22:26readしないでevalって言うのはできるん?
sexpを通信先のマシンでreplしてるところに食わせるのならslimeがそうじゃない
0743デフォルトの名無しさん
2007/07/10(火) 01:23:48selectで書き込み可能でも、ソケットバッファを越えたサイズを書き込もうとするとブロックするよね。
unixのwrite(2)ならバッファを全部フラッシュしないからブロックしないように書けるんだけど。
生のwrite(2)をそのままGaucheから呼べないの?
0744デフォルトの名無しさん
2007/07/10(火) 05:40:220745デフォルトの名無しさん
2007/07/10(火) 06:42:30サーバ書くモチベをちょっとだけGaucheのソース修正に割くんだ。
そしてうまく動いたらパッチ提供してあげたら喜ばれるんじゃないかな。
ライブラリ作成者側のオナニーテストよりは実アプリによる動作テスト
の方が意味あるだろうし。
0746743
2007/07/10(火) 09:30:08了解!
綺麗なソースコードだからちょっといじってみる。
cvs headに比べると、debian etchのやつはだいぶ古いんだな。
今のところはスレッド使う方向に逃げるってのが正解みたいだね。
0748デフォルトの名無しさん
2007/07/11(水) 04:17:03思いついたとしても既に実現されている。
計算機の歴史なんてまだ100年もたっていないのに、
その先行研究の凄さにはひれ伏すしか無い、という
今日この頃の学部生なんですが、何か面白いお題ないですかね?
スペックとしてはCommon Lispが出来るくらいなんですが。
「こんな事やったら面白いんじゃないの?」
とか
「コレが無いから困っている。でもつくるのメンドイ」
っていうの有りませんか?
0749デフォルトの名無しさん
2007/07/11(水) 09:34:11S式で書ける TeX とかどうよ
0750デフォルトの名無しさん
2007/07/11(水) 15:56:13え、無いの?
HTMLをS式で表現するものがあるのに?
0751749
2007/07/11(水) 20:20:40そんなに真剣に調べたことはないんで。
0752デフォルトの名無しさん
2007/07/11(水) 22:16:07>>748
オープンソース版のAllegroCache(OODB)作るってのはどうよ?
0753デフォルトの名無しさん
2007/07/11(水) 22:51:01そりゃ、自分もいろいろ考えたんですよ。
例えば色でプログラミングできたら面白いかな〜とかね。
正方形を9分割した物が有って、
白→nil
黒→t
が決定。
んで色がいくつ塗っているかでチャーチ数を表す。
緑→(())
緑と黄色→(()(()))
だから、緑と赤は等しい訳です。直感的ではないですけれど。1=1なんで。
んで、最低限の関数の色を決める。
car→オレンジ
とかね。
でも、これじゃ関数定義できないし、逆にややこしいし、
大きい数の計算は出来ないし、データ構造の定義は出来ないし、
何の役に立つのか説明しにくい。
んで、考えれば考えるほどどうすれば良いのか分からなくなって、
皆さん卒論でどんなことしていたか質問してみたんです。
すいませんでした。
0754デフォルトの名無しさん
2007/07/12(木) 00:16:04強い型付けのメリットとして、とても研究な感じになるという利点があるから
卒論は Haskell とか ML 系でなんかごにょごにょするほうがお手軽じゃないかな。
0755デフォルトの名無しさん
2007/07/12(木) 00:47:38それならむしろAllegroStore
0756デフォルトの名無しさん
2007/07/12(木) 01:46:49>強い型付けのメリットとして、とても研究な感じになるという利点があるから
>卒論は Haskell とか ML 系でなんかごにょごにょするほうがお手軽じゃないかな。
カリー・ハワード対応の事ですか?
それで、チューリングマシンの停止問題なんかを証明しても、
そりゃ学問的だけれども新規性がないんじゃ。
誰も証明してない命題が有るなら別なんでしょうけど。
>>755
AllegroStore?AllegroCache?
なんぞコレ?
clispしか使った事無いのでいまいち何に使うのかさっぱり?
総称関数を保存して共有できるようになる代物?
そもそもデータベースを触った事が無いからデーターベースからして
よくわかんないです。
0757デフォルトの名無しさん
2007/07/12(木) 01:47:440758デフォルトの名無しさん
2007/07/12(木) 02:20:340759デフォルトの名無しさん
2007/07/12(木) 02:23:19世の中にはGPGPUというものがあってだな
0760デフォルトの名無しさん
2007/07/12(木) 03:05:22自分、面白そうな事思いついたです。
CUDA使って、Lispのインタプリタ作るのってどうでしょうかね?
そして、clispとどっちが計算が速いか検討するの。
これだと、今のところ誰もやってないだろうし、
リスト処理ってGPU向きの処理だと思いませんか?
0761デフォルトの名無しさん
2007/07/12(木) 04:03:190762754
2007/07/12(木) 07:51:20どっからカリーハワードだの停止性判定だの証明だのがでてきたんだよ。
そーゆうんじゃなくて、なんか小物の研究でも Haskell や ML ならそれっぽく見えるだろって事。
つうかテーマは研究室の先輩や教官とよく相談したほうがいい…。
たとえば超並列分散 Lisp をつくるぜ!!と決めたとして、周囲の支援が得られず完全自力じゃ評価もまともにできんし、学費がもったいない。
0763デフォルトの名無しさん
2007/07/12(木) 10:50:200764デフォルトの名無しさん
2007/07/12(木) 15:26:16>そーゆうんじゃなくて、なんか小物の研究でも
> Haskell や ML ならそれっぽく見えるだろって事。
>つうかテーマは研究室の先輩や教官とよく相談したほうがいい…。
>たとえば超並列分散 Lisp をつくるぜ!!と決めたとして、周囲の支援が
>得られず完全自力じゃ評価もまともにできんし、学費がもったいない。
いや、お恥ずかしい話なんですが自分の大学は大学院が無いんで
先輩なんていないんです。
それに指導教官は「何か作れば良いよ〜」という態度なんで
自由な反面、アイデアが必要なんです。
自分の友達は「大学のSNSをxoopsで作る」でOKと言われてました。
自分は「さすがにそれじゃアレかなぁ」と思って。
自分はCUDAでLisp処理系は面白い案だなと思います。
誰でも思いつきそうだけれど、今のところ誰もやってないし、
自分の処理系欲しかったんで。
それじゃ、パソコン買うところから始めなきゃならないんですが(Macなんで)
頑張ってみますね。
C言語は1年くらい触ってないし、マルチスレッドプログラミングは初めてなんで
不安ですが。
出来たらUpするんで、コードレビューしてください。
タライ回し関数が速く動くといいなぁ。
0765デフォルトの名無しさん
2007/07/12(木) 16:20:230766デフォルトの名無しさん
2007/07/12(木) 16:34:47くそうらやましす
0767デフォルトの名無しさん
2007/07/12(木) 20:12:460768デフォルトの名無しさん
2007/07/12(木) 21:17:35(define (ack m n)
(cond ((zero? m) (+ n 1))
((zero? n) (ack (- m 1) 1))
(else (ack (- m 1) (ack m (- n 1))))))
(ack (m ?x) (n ?y)) : (result ?z) から ?x ?y ?zの型を求める
(zero? m) => (type_a) : bool
1 => int
(+ n 1) => (int int) : int から ?x = int
(zero? n) => (type_a) : bool
m, nがintなのでzero?の引数は intと仮定して良い
(- m 1) => (int int) : int から ?y = int
末尾コンテキストは+ とackのみなので?z = int
これでack内の +-zero?演算子はintという前提で最適化でける
・・という感じで良い?
0769デフォルトの名無しさん
2007/07/12(木) 21:36:38=>((a) (b) (c) d)
(define (tail-map proc x)
(let loop ((l x))
(if (pair? l)
(cons (proc (car l)) (loop (cdr l)))
(proc l)))) ;procをcdrにも適用する
(tail-map (proc ?x) (x ?y)) : (result ?z) から ?x ?y ?zの型を求める
(l ?v) = ?x
(pair? l) (type_a) : bool
この中ではl = pairと確定
(car l) => (pair) : type_b
(cdr l) => (pair) : type_c
(proc 〜) (type_a) : type_d
(loop 〜) (type_c) : type_e
(cons 〜) (type_b type_c) : pair
(proc not-pair) : type_f
以上からprocは1引数でtype_aまたはnot-pairを受け取りtype_d|type_fを返す、
xはpairかnot-pair
tail-map の戻り型は pair もしくはprocの戻り型に依存
・・・もうわかんね
0770デフォルトの名無しさん
2007/07/12(木) 22:08:54識別子が一度ある場所に束縛されると
他の場所に束縛を変更される事がないっていうのがあるけど
それをいうならCだって同じですよね?
一度宣言した変数のアドレスはスコープ内で一定
むろん関数的であるという最大の根拠は関数が第一級の値であるというところにつきるんでしょうけど
でもR5RSでは関数のリテラル表記はない、でもそれぞれの実装でサポートしてもよいって扱いですけどね
lambdaは関数のリテラル表記だっていう解説もちらほら見ますが
0771デフォルトの名無しさん
2007/07/12(木) 22:12:32「関数的である」とは思わないけど
0772デフォルトの名無しさん
2007/07/12(木) 22:22:29いや、参照透過性とは関係ないのに
識別子の束縛が変更されない事に言及する解説をよく見る気がしたので
0773デフォルトの名無しさん
2007/07/12(木) 22:25:430774デフォルトの名無しさん
2007/07/12(木) 23:20:13なんかところどころよくわかんないような。
自分で目の子でやったらこんな感じになったけど、どうかな。
まず (zero? m) から m : number
次に (+ n 1) から n : number
だから ack : number * number -> ?z で
else 節の (ack (- m 1) (ack ...)) の第二引数を見ると ?z = number
∴ ?x = ?y = ?z = number
0775デフォルトの名無しさん
2007/07/12(木) 23:43:17リストとか入ってきたらエラーでいいんだっけ?
まあそういう判定が減るから全体で3倍ぐらい速くなるかな。
それはそれとして、ackみたいな単純なケースは結構作ってるうちに
適当なのができそうだからどうでもいいと思う。
問題は型が定まらない場合。
上、named-let余計だった。
(define (tail-map proc l)
(if (pair? l)
(cons (proc (car l)) (tail-map proc (cdr l)))
(proc l)))
まあ普通のmap1でもいいけど。
(define (map1 proc l)
(if (pair? l)
(cons (proc (car l)) (map1 proc (cdr l))) '()))
この場合procが確定するまで保留にすべきなのかな?
procは1引数取って何か返す、ぐらいの情報しかないよね。
0776デフォルトの名無しさん
2007/07/12(木) 23:50:20> zero?って渡される引数がnumberのみと限定していいのかな。
R5RS みると (zero? z) と書いてあって、 z は複素数を表すメタ変数ということだから
そこは問題ないと思う。
で、今気付いたけど = にしてしまうとまずいね。例えば三行目で
(zero? n) が (<= n) だったりすると number ではダメで、
real に推論されなきゃいけない。
0777デフォルトの名無しさん
2007/07/12(木) 23:59:38アドホックにでも最適化に結び付けて、お手軽に型推論による効果
を体感したいというか。
>>775のmapにしてもフローチェックすればpair?の判定で
car/cdrのpair判定が省略できるとか、そんなレベルから徐々に
大掛かりな仕掛けを考えていければいいかなと。
0778デフォルトの名無しさん
2007/07/13(金) 00:01:00うん、その方が健全な気がしてきた
0779デフォルトの名無しさん
2007/07/13(金) 08:55:16と、あえて誤読をしてみる。
0780デフォルトの名無しさん
2007/07/13(金) 13:14:340781デフォルトの名無しさん
2007/07/14(土) 06:51:44GHC立ち上げると、
Prelude>
ってでるじゃん。
なんでプレリュード?とずっと思ってたんだけれど、
これってもしかして、
Franz Lisztの前奏曲から来てるんじゃないの?
リストつながりで。
0782デフォルトの名無しさん
2007/07/14(土) 12:17:400783デフォルトの名無しさん
2007/07/14(土) 13:50:04prelude って一般名詞じゃないの?
0784デフォルトの名無しさん
2007/07/14(土) 16:01:210785デフォルトの名無しさん
2007/07/14(土) 16:54:130786デフォルトの名無しさん
2007/07/14(土) 16:58:100787デフォルトの名無しさん
2007/07/14(土) 17:13:360788デフォルトの名無しさん
2007/07/14(土) 17:17:540789デフォルトの名無しさん
2007/07/14(土) 17:19:30つまりは君の意見などどうでもよいのですわよ。
0790デフォルトの名無しさん
2007/07/14(土) 17:21:270791デフォルトの名無しさん
2007/07/14(土) 17:27:550792デフォルトの名無しさん
2007/07/15(日) 21:07:40「何か狙ってた」ことにして「お前らのせいでそれがダメになった」と嘆いとくのは基本。
0793デフォルトの名無しさん
2007/07/15(日) 21:10:430794デフォルトの名無しさん
2007/07/15(日) 23:41:450795デフォルトの名無しさん
2007/07/20(金) 16:31:39これってパッチとか作る価値があるの?
それとも、shiroさんの手元ではできてるの?
0796デフォルトの名無しさん
2007/07/20(金) 18:36:580797デフォルトの名無しさん
2007/07/20(金) 20:15:040798795
2007/07/21(土) 00:53:52Cのコンパイルじゃなくて、schemeコードを実行するところで
ライブラリが見つからないとかいろいろ出る。
システム既存のgaucheと衝突してるのかなあ…?
lingrで、makeにいろいろオプション渡すとできるよって言ってた人が
いて、それで前進したけどまだ止まる
もう少しあがいてみるかな
0799デフォルトの名無しさん
2007/07/21(土) 01:16:10俺は ./DIST gen を忘れてて、コンパイルできねーな?と思ってた事があったんでひょっとしてと思ったんだけどね。
で、どんなエラーメッセージなの?
0800デフォルトの名無しさん
2007/07/21(土) 21:01:50俺もそれではまった。
最近はGauhceのコンパイルにGaucheを要求するので、
古いGaucheを使ってるとgoshがエラー出す。
Gauche 0.8.10(release)使えばコンパイルに成功する。
Gauche 0.8.10(release)すらコンパイル出来ないときは、
バージョンを一個ずつ上げてみて。
0802デフォルトの名無しさん
2007/07/23(月) 01:00:07やりたいことはalistに文字と関数のペア入れておいてその関数を呼び出したいんだけど。
'(#\a . func_a)
だとfunc_aは関数にならないから
`(#\a . ,func_a)
と書いてるんだけどいちいち','を書くのがめんどい。
こういうところはマクロを使うのがセオリーなの?
0803デフォルトの名無しさん
2007/07/23(月) 07:13:30処理系によっては実行時にはシンボルと値の結び付きは完全に忘れちゃってる
可能性もあるし。
処理系依存で良ければ、symbol-valueとかglobal-variable-refとかが使える
場合もある。ポータブルにやるならevalしかないだろうね。
「文字と関数のalist」とかは普通にバッククオート使っちゃうけどなあ。
0804デフォルトの名無しさん
2007/07/23(月) 08:50:18そもそも R4RS には evalも必須じゃなかったし。
万独裁なら cons でも使え。
0805802
2007/07/23(月) 11:14:54なるほどね。R5RSをよく読んだらそう書いてあったよ。
Common Lisp陣営がSchemeを批判するときの論点がそこなのね。
>>804
確かにevalは使いたくない。
今まで通りquasi quote使って関数をunquoteすることにしました。
0806デフォルトの名無しさん
2007/07/23(月) 20:16:11> >>803
> なるほどね。R5RSをよく読んだらそう書いてあったよ。
> Common Lisp陣営がSchemeを批判するときの論点がそこなのね。
全然違うと思うが。
Schemeにも1st class objectとしてのシンボルがあればなあという
CLerもいるっちゃいるだろうけどさ。
0807デフォルトの名無しさん
2007/07/23(月) 23:38:530808デフォルトの名無しさん
2007/07/23(月) 23:49:380809デフォルトの名無しさん
2007/07/25(水) 09:38:100810デフォルトの名無しさん
2007/07/27(金) 01:42:56lispで、他の言語も実装した(というか、DSLを作ってみたというか)
処理系があったと思うのですが、ご存じないでしょうか?
lispでよく用途に合わせた言語を再実装したとう話を聞くのですが、
なかなか実例に合わず、う〜ん?と思っていたのですが、
これを見て、lispすげーと、唸った覚えがあります。
けっこう、最近の言語だったと思うのですが、ご存じないでしょうか?
確か、DSLとしては、ひとつとして、JavaScriptのサブセットを実装していました。
他の言語のサブセットもあったと思うのですが、覚えていません。
もしかしたら、Lispじゃなくて、もしかしたら、schemeの実装だったかもかわかりません。
0811デフォルトの名無しさん
2007/07/27(金) 01:58:31うろ覚えなのですが、中間形式として、S式を使っていたような?
言語内に、いくつかのプログラムがあってそれを組み合わせて、使っていたような気がします。
0812デフォルトの名無しさん
2007/07/27(金) 02:05:25『On Lisp』の24章に、Common Lisp による埋め込み言語としての Prolog 実装の話はあるけど。
ただ Prolog は最近の言語ってわけでもないし……。
0813デフォルトの名無しさん
2007/07/27(金) 03:48:27まさか、TAOじゃないよな。
0814デフォルトの名無しさん
2007/07/27(金) 04:30:180815デフォルトの名無しさん
2007/07/27(金) 14:31:02それそれ!!それです。
ありがとさんです。
CokeとPepsiとJoltです。
ただ、今見たら、素人の手に負えそうなものではないことがわかったw
0816デフォルトの名無しさん
2007/07/27(金) 17:25:350817デフォルトの名無しさん
2007/07/29(日) 00:07:51HaskellでPerlを実装した話じゃなくて?
0818デフォルトの名無しさん
2007/07/29(日) 00:31:500819名無しさん@そうだ選挙に行こう
2007/07/29(日) 02:31:090820名無しさん@そうだ選挙に行こう
2007/07/29(日) 13:11:31静的スコープ、末尾呼出し(末尾再帰を含む)の最適化、およびマクロを備えた
近代的なLispの小さなインタープリタをRuby(およびJRuby)で作ります。Rubyの
データ型と親和性が高く、簡単に組込み関数を増設できる手頃なLisp処理系として
利用できます。
http://codezine.jp/r.x/czn077a/aid/1492
0821名無しさん@そうだ選挙に行こう
2007/07/29(日) 13:38:23なんでまた半端な物作るかな
CL厨がまた文句言いにくるよ
0822名無しさん@そうだ選挙に行こう
2007/07/29(日) 14:01:320823名無しさん@そうだ選挙に行こう
2007/07/29(日) 15:56:16元にしたL2Lispのページを見ると、継続(というかcall/cc)は不完全らしいね。
0824名無しさん@そうだ選挙に行こう
2007/07/29(日) 16:07:56大して変わらんよ
0825名無しさん@そうだ選挙に行こう
2007/07/29(日) 20:15:490826デフォルトの名無しさん
2007/07/29(日) 20:28:160827デフォルトの名無しさん
2007/07/29(日) 20:34:110828デフォルトの名無しさん
2007/07/29(日) 20:58:350829デフォルトの名無しさん
2007/07/29(日) 21:20:010830デフォルトの名無しさん
2007/07/29(日) 23:05:2900831デフォルトの名無しさん
2007/07/29(日) 23:12:060ruby厨うぜえ。
0832デフォルトの名無しさん
2007/07/30(月) 00:09:14ブラックボード黒田さんなら、黒板振り回しながら襲いかかるであろう仕様。
0833デフォルトの名無しさん
2007/07/30(月) 00:27:42一般の Lispnik とは全く関係無いな
0834デフォルトの名無しさん
2007/07/30(月) 00:59:26とてもコンパクトに出来ていて Ruby と Lisp の勉強になりました、
とレスしてほしいんだろw
0835デフォルトの名無しさん
2007/07/30(月) 04:54:460836デフォルトの名無しさん
2007/07/30(月) 15:43:41そうそう。わかればいいのです(^^)
0837デフォルトの名無しさん
2007/07/30(月) 17:24:550838デフォルトの名無しさん
2007/07/30(月) 17:45:09下記�@と�Aを実行した場合、
それぞれの結果になるプログラムを教えて下さい。
�@(my_makelist 5) を実行した結果 (1 2 3 4 5)
�A(my_max ’(34 20 30 19)) を実行した結果 34
0839デフォルトの名無しさん
2007/07/30(月) 19:22:03(define (my_makelist n) '(1 2 3 4 5))
こんなかんじ
0840838
2007/07/30(月) 19:40:06実行しましたが、以下の結果が返ってきません。
�@(my_makelist 5) -> (1 2 3 4 5)
�A(my_max ’(34 20 30 19)) -> 34
もう一度お願いします。
0841839
2007/07/30(月) 19:46:15あなたの処理系のバグではないですか?
0842838
2007/07/30(月) 20:00:01昨年、以下のサイトで、
http://www5a.biglobe.ne.jp/~sasagawa/MLEdit/Scheme/index.html
これを『ChezEdit-NT Ver1.11 setup.exe』インストールしましたが、
何か問題があるのでしょうか?
他のプログラムは問題なく結果が返ってきます。
度々すいません。
0843デフォルトの名無しさん
2007/07/30(月) 20:10:510844838
2007/07/30(月) 20:13:43�@は以下の通りで何とかできました。
(define make_list(lambda (n)
(do ( (res (list n) (cons n res)) )
((= n 1) res)
(set! n (- n 1)))))
�Aの方は、以下のmax部分がうまく作れません。
(max 34 20 30 19) -> 34
お願いします。
0845839
2007/07/30(月) 20:19:040847デフォルトの名無しさん
2007/07/30(月) 20:25:38意地悪な人いないから、遊びにいらっしゃい。
my_max([A|R],Max) :- my_max(A,R,Max).
my_max(Max,[],Max).
my_max(A,[B|R],Max) :- B>A,my_max(B,R,Max),!.
my_max(A,[_|R],Max) :- my_max(A,R,Max).
0848838
2007/07/30(月) 20:29:15遊びに行きたいのはやまやまですが・・・。
Prologではダメなんです・・・。
初心者で申し訳ありませんが、
誰か優しい人お願いします。
0849デフォルトの名無しさん
2007/07/30(月) 20:36:21滅多に無能に出会わないようなハイレベルな環境で生きてる人は、もっと「余裕綽々にイジる」。
でも、無能によく出会うレベルの環境に居るってことは、自分のレベルも知れた物なんだよね、実は。
そのくせ上から目線というのはどういうことかというと、つまり自分では優秀なつもりなのに
現実がそれをまったく反映してくれない、そのギャップへの苛立ちを、こういう場所での小爆発で
少しでも解消しようという行為なわけ。
黒板におでこくっつけて頭冷やしたほうがいいよw
0850デフォルトの名無しさん
2007/07/30(月) 20:39:58俺だったらschemeの上のprolog乗っけて>>847のコード動かすけどな。
On Lisp prologでぐぐって
0851デフォルトの名無しさん
2007/07/30(月) 20:43:10黒板に縛りつけられてチョークを出し入れまで読んだ
0852838
2007/07/30(月) 20:57:30優しい方にはなんでもお礼しますから回答お願いします。
0853デフォルトの名無しさん
2007/07/30(月) 21:02:570854838
2007/07/30(月) 21:04:40こうですか?わかりません(><)
0855デフォルトの名無しさん
2007/07/30(月) 21:29:23えらく無能そうな人が出てきたなぁ
0856デフォルトの名無しさん
2007/07/30(月) 21:33:09通りすがりのものですが、行きがかり上こちらも書いておく。
my_makelist(N,L) :- findall(M,for(1,M,N),L).
実用上はこれで良いのだが、ただライブラリを利用したようなものだから、
my_makelist(N,L) :- my_makelist(1,N,L).
my_makelist(N,N,[N]) :- !.
my_makelist(N,E,[N|R]) :- plus(N,1,M),my_makelist(M,E,R).
とすれば、自分で書いた気がする。
なんでこのスレがこんなに伸びるのか(Part 17)、視察に来た
だけです。PrologでまったりはまだPart 2なので。失礼しました。
0857デフォルトの名無しさん
2007/07/30(月) 21:47:43そんなことどうでもいいから答えてあげたら?
0858デフォルトの名無しさん
2007/07/30(月) 22:37:17(define my_makelist (cut iota <> 1))
(define (my_max l) (apply max l))
0859デフォルトの名無しさん
2007/07/30(月) 22:39:39> (define (my_makelist n) (if (= n 0) () (append (my_makelist (- n 1)) (list n))))
my_makelist
> (my_makelist 5)
(1 2 3 4 5)
> (define (my_max lst) (if (null? (cdr lst)) (car lst) (my_max (cons (if (> (car lst) (cadr lst)) (car lst) (cadr lst)) (cddr lst)))))
my_max
> (my_max '(34 20 30 19))
34
0860デフォルトの名無しさん
2007/07/30(月) 22:42:000862デフォルトの名無しさん
2007/07/30(月) 22:53:01(define (ml n l)
(if (= n 0) l (ml (- n 1) (cons n l))))
(ml n '()))
(define (my_max l)
(define (max2 x y) (if (> x y) x y))
(define (mm x l) (if (null? l) x (mm (max2 x (car l)) (cdr l))))
(mm (car l) (cdr l)))
0863デフォルトの名無しさん
2007/07/31(火) 01:08:210864デフォルトの名無しさん
2007/07/31(火) 03:13:29scheme なら schelog がいいんじゃない?
0866838
2007/07/31(火) 18:47:26以下のような結果が得られる、
前置記法から中置記法へ変換する手続きを教えて下さい。
(prefix->infix '(+ (* a b) c))) を実行した結果 (a * b + c)
(prefix->infix '(* 4 (** x 3))) を実行した結果 (x ** 3 * 4)
お願いします。
0867838
2007/07/31(火) 19:10:41のスタテックポインターを使って実行したいのです。
すいませんが、教えて頂けませんか?
0868838
2007/07/31(火) 19:12:11○ スタックポインター
間違えました。
0869デフォルトの名無しさん
2007/07/31(火) 19:17:020870デフォルトの名無しさん
2007/07/31(火) 19:18:30そういう宿題がでるときはスタックつかって前置記法の式を中置記法に
手で変換する方法の説明があると思うけどな。それをプログラムであらわせば
いいだけだ。
0872デフォルトの名無しさん
2007/07/31(火) 19:30:03詳細不明だしあとは自分でやれよ
(define (prefix->infix p)
(if (pair? p)
(let ((l (prefix->infix (cadr p)))
(r (prefix->infix (caddr p))))
(append
(if (pair? l) l (list l))
(list (car p))
(if (pair? r) r (list r))))
p))
0873デフォルトの名無しさん
2007/07/31(火) 19:30:380874デフォルトの名無しさん
2007/07/31(火) 23:15:171. 宿題の正確な問題文
2. 宿題の期限はいつまでか?
3. 教科書は手元にある?どこまで読んだ?
4. 教育的なヒントがほしいの?それともズバリ答えのほうがいい?
0875デフォルトの名無しさん
2007/08/01(水) 00:04:11あれ?>>858は?
0876デフォルトの名無しさん
2007/08/01(水) 00:22:520877デフォルトの名無しさん
2007/08/01(水) 00:27:08一つ問題を解いてもらえばいいんじゃないか
何が良いかな
0878デフォルトの名無しさん
2007/08/01(水) 00:31:510879デフォルトの名無しさん
2007/08/01(水) 01:27:040880デフォルトの名無しさん
2007/08/01(水) 01:57:450881デフォルトの名無しさん
2007/08/01(水) 02:57:590882デフォルトの名無しさん
2007/08/01(水) 03:19:110883デフォルトの名無しさん
2007/08/01(水) 08:42:450884デフォルトの名無しさん
2007/08/01(水) 13:48:00スレを読め
0886デフォルトの名無しさん
2007/08/01(水) 22:14:380887デフォルトの名無しさん
2007/08/01(水) 22:32:29回答者とギャラリーが面白いと思う方でいいんでないの?
0888デフォルトの名無しさん
2007/08/01(水) 22:40:53俺も昔は NetNews とかで痛い厨房だったけど、親切な上級者に諭されて目が醒めた。
だれだって慣れない内はちょっと痛い言動もあるし、上級者から見ればアホっぽい質問することだってあるさ。
何から手をつけていいからわかんないから答えをみながら考える、だって一概に間違いとは言えないだろう。
0889デフォルトの名無しさん
2007/08/01(水) 22:44:490890デフォルトの名無しさん
2007/08/01(水) 22:48:210891デフォルトの名無しさん
2007/08/01(水) 22:52:530892デフォルトの名無しさん
2007/08/01(水) 23:07:55とか思ったんだけど、まあ、すまんかったね。空気悪くする気はなかったんだ。黙っとくわ。
0893デフォルトの名無しさん
2007/08/01(水) 23:10:28はい次。
0894デフォルトの名無しさん
2007/08/02(木) 00:22:04R6RS(正確にはR5.97RS)で追加されてる "mantissa width"ってなんのこと?
直訳すれば"仮数部長"あたりだと思うんだけど、何?
ぐぐってもよくわからんです
仕様を見るに、 "3.14 | 10" みたいに書くのかな?
0895デフォルトの名無しさん
2007/08/02(木) 01:25:29単精度・倍精度のような実装依存の値ではなく、必要な桁数を要求して、
実装が単精度・倍精度を判断できるということでは?
0896デフォルトの名無しさん
2007/08/02(木) 01:32:00R5.97RSのどこに書いてある?見つからんかった。
多分実数の印字表現の仕方の話なんだろうけど、
浮動小数点数の 仮数*基数^指数 の仮数の精度かな。
12345 = 0.12345*10^5 、これの0.12345に相当する部分の幅。
0897デフォルトの名無しさん
2007/08/02(木) 01:49:58�d
てか、schemeって、複素数とか妙に数値に細かいよな…
>>896
俺がさっき落としたPDFだと、13ページ左下
<ureal R> −> <uinteger R>
| <uinteger R> / <uinteger R>
| <decimal R> <mantissa width>
んで、<mantissa width>の定義は13ページ右上
<mantissa width> −> <empty>
| | <digit 10>+
0898デフォルトの名無しさん
2007/08/02(木) 01:55:36C言語で浮動小数点定数を
float f1 = 3.14f;
double f2 = 3.14;
とすると,バイナリで見たときf1とf2には別のデータが入るよね?
人間は浮動小数点定数のバイナリ表現を書くのが面倒だから "3.14" 等とだけ書いてコンパイラに変換させているわけだが
このときコンパイラに「IEEE single相当(仮数が23+1桁)の範囲で最良の3.14の近似を使ってくれ」 or
「IEEE double相当(仮数が52+1桁)の範囲で最良の3.14の近似を使ってくれ」と区別した指示を与えてることになる.
この一般化で,"3.14 | 10" は「ここの定数には,仮数が10桁の範囲で最良の3.14の近似を使ってくれ」と要求していることになる.
これは当然IEEE singleよりは桁が多いし,またIEEE doubleよりは桁が小さいので
普通に3.14と書いてデフォルトの52+1桁(以上)の数に変換させたときとは違う演算結果を得るだろうね.
Mathematicaやbc(1)のように浮動小数点数データの内部に「有効桁」という属性が含まれるようになる,という意味ではないよ.
ソースコード内の "3.14" などという文字列から処理系内部の数表現への,対応付けの厳密化だね.
指数表記にe, s, f, d, lの区別ができたり,ずいぶん細かくなったものだ.
>>896
R5.97RS 4.2.8 Numbers
0899894
2007/08/02(木) 03:05:51> "3.14 | 10" は「ここの定数には,仮数が10桁の範囲で
> 最良の3.14の近似を使ってくれ」と要求していることになる.
って書いてるけど
R5.97RSの該当部分を読むと
Implementations that use binary floating-point representations
of real number objects should represent x|p using a
p-bit significand if practical, or by a greater precision if a
p-bit significand is not practical, or by the largest available
precision if p or more bits of significand are not practical
within the implementation.
ってことなので、仮数部の指定が"実装内で現実的で無い"場合は
それより大きい仮数部を持つ浮動小数点表現をすればOK、という風に
読めるけど違うかな?メモリ量を最適化しようとする実装に対して
仮数部の最低ビット数を指示するためにある、という風に俺は解釈するけど、
どうなんだろう?
言い換えると、小さい仮数部pが数値が指定されたときにわざわざdoubleから
落としてsingleにする必要性があるのかってことだけど。
0900デフォルトの名無しさん
2007/08/02(木) 03:33:44しても良いという(コンパイラに対する)ヒントにはなるわな。
(そこまで最適化する処理系は少ないだろうけど)
0901デフォルトの名無しさん
2007/08/02(木) 12:37:25> (hogehoge '#+ 1 '(1 2 3 4))
(2 3 4 5)
となる関数は無いでしょうか?
> (mapcar '#+ '(1 1 1 1)'(1 2 3 4))
(2 3 4 5)
でもいいんですが、リストの長さが不明な場面なので、
> (mapcar '#+ (make-sequence 'list (length'(1 2 3 4) :initial-element 1)))
こういう感じの実装くらいしか思いつきません。
もし標準的な関数があればそちらを使いたいところです。
よろしくおねがいします。
0902デフォルトの名無しさん
2007/08/02(木) 12:56:17(mapcar #'1+ '(1 2 3 4))
決まってないなら
(mapcar #'(lambda (x) (+ x 1)) '(1 2 3 4))
でいいんじゃないの? なにか書いてない他の制限があるなら知らんけど。
0903デフォルトの名無しさん
2007/08/02(木) 12:56:330904デフォルトの名無しさん
2007/08/03(金) 05:51:1310進法の1.2は2進法で1._0011_(2) ("_"で括った部分を繰り返し)という循環小数になるのでそれを例に採る.
私の理解ではその段落の意味するところは:
IEEE doubleを使うプロセッサ上の処理系は
"1.2d0" => 0 01111111111 00110011(40桁の略)0011
"1.2s0" => 0 01111111 00110011(12桁の略)001
or 0 01111111111 00110011(40桁の略)0011 (←2行上と同じ; 処理系が "practical" だと思えばこうなる)
となるだろう.ところが
"1.2 | 10" => 0 01111111111 001100110(この先,0が43桁続く; けちビットに注意)
となる(という私の理解).
2進10桁の精度で得た浮動小数点数を(例えば)IEEE double形式に「広げて」メモリに格納するということ.
C言語で
double f = 1.2f;
と書いたとき,fに格納される浮動小数点数が10進16桁の精度でなく8桁の精度しか持たないのと同じイメージ.
0905デフォルトの名無しさん
2007/08/03(金) 17:39:40(lambda (n)
(if (zero? n)
0
(+ 1 (/ 1 (+ 1 (sqrt (- n 1))))))))
0907894=899
2007/08/07(火) 17:49:33俺の最初の質問に照らして読ませてもらうと、小さい
仮数部が指定された場合に、
・精度の低い浮動小数点表現に丸めた上で、残りは0を補充して格納する
・精度が大きい(greater)ぶんには特に問題なし
というのだと前者ということ?
0908デフォルトの名無しさん
2007/08/08(水) 01:34:33(if (> n m)
(list)
(cons n (int-gen (+ n 1) m))))
これで、
(int-gen 3 10)
とすると、(3 4 5 6 7 8 9 10)のリストができますよね?
このリストの要素を全てnにしたいのですがそうすればよいでしょうか?
(3 3 3 3 3 3 3 3)のような感じです。
0909デフォルトの名無しさん
2007/08/08(水) 01:50:570910デフォルトの名無しさん
2007/08/08(水) 22:18:32(loop repeat (- m n -1) collect n)
0911デフォルトの名無しさん
2007/08/09(木) 03:44:180912デフォルトの名無しさん
2007/08/09(木) 04:02:490913デフォルトの名無しさん
2007/08/09(木) 16:09:090914デフォルトの名無しさん
2007/08/09(木) 16:23:230915デフォルトの名無しさん
2007/08/09(木) 21:30:06普段サクラエディタ使ってるが
単語登録じゃハイフンで切られちゃって上手く行かず
正規表現コメントで限界まで登録…だけど
ちょっとオススメ出来ないなあ
emacsとかxyzzyとかだと大丈夫なのかな
キーバインド苦手で使ってないが
0916デフォルトの名無しさん
2007/08/09(木) 22:55:16xyzzy+winkey.l は?
0917デフォルトの名無しさん
2007/08/10(金) 01:16:28帰宅したら試してみる。
0918デフォルトの名無しさん
2007/08/10(金) 03:27:190919デフォルトの名無しさん
2007/08/10(金) 03:37:59導入は手間だが、使えるね
Scheme用にしばらく使うことになりそう、thx!
0920デフォルトの名無しさん
2007/08/10(金) 07:08:150921デフォルトの名無しさん
2007/08/10(金) 18:48:310922デフォルトの名無しさん
2007/08/10(金) 19:20:170923デフォルトの名無しさん
2007/08/10(金) 20:49:360924デフォルトの名無しさん
2007/08/10(金) 22:38:250925デフォルトの名無しさん
2007/08/11(土) 01:21:010926デフォルトの名無しさん
2007/08/11(土) 01:37:530927デフォルトの名無しさん
2007/08/11(土) 05:37:54(((how) are) ((you) (doing so)) far)
の中にアトムが3個あるらしいのですが、どうしてですか?
0928デフォルトの名無しさん
2007/08/11(土) 07:32:380929デフォルトの名無しさん
2007/08/11(土) 10:04:410931デフォルトの名無しさん
2007/08/11(土) 11:50:37((how) are)と((you) (doing so))とfarとnilの4個じゃないの?
それとも要素数っていう場合最後のnilは数えない?
0932デフォルトの名無しさん
2007/08/11(土) 12:13:51リストの要素というのは通常 cons セルの数。
() = nil : 要素数ゼロ
(1) = [ 1 | ] -> nil : 要素数 1
(1 2) = [ 1 | ] -> [ 2 | ] -> nil : 要素数 2
で、問題のやつは cons セル 3 つなので要素数 3。
[ ((how) are) | ] -> [ ((you) (dosing so))| ]-> [ FAR | ]-> NIL
0934デフォルトの名無しさん
2007/08/11(土) 13:21:320935デフォルトの名無しさん
2007/08/11(土) 13:34:04C++の難解さときたら・・・
0936デフォルトの名無しさん
2007/08/11(土) 13:57:520937デフォルトの名無しさん
2007/08/11(土) 14:11:350938デフォルトの名無しさん
2007/08/11(土) 14:27:57lisp は要素が横方向に膨らみすぎる
0939デフォルトの名無しさん
2007/08/11(土) 14:54:15pascalの.みたいにキモイ
インデントだけで済むとか言って余計な事が多すぎる
結局括弧使ってるし
0940デフォルトの名無しさん
2007/08/11(土) 14:58:430941デフォルトの名無しさん
2007/08/11(土) 15:05:59余計な事なんてそんなにないでしょ
普通に書いている分には十分に読みやすい
ここで Python と lisp を比べてみるとカッコ関係なく lisp の読みにくさを痛感する
ttp://ja.doukaku.org/
0942デフォルトの名無しさん
2007/08/11(土) 15:20:570943デフォルトの名無しさん
2007/08/11(土) 15:27:08額にはバンダナを巻いて
0944デフォルトの名無しさん
2007/08/11(土) 15:28:090945デフォルトの名無しさん
2007/08/11(土) 15:36:56http://srfi.schemers.org/srfi-49/srfi-49.html
0946デフォルトの名無しさん
2007/08/11(土) 15:44:56どうせならpython風フロントエンドでも定義すりゃいいのに。
0947デフォルトの名無しさん
2007/08/11(土) 16:08:08ちょっとそこサンプル眺めただけだけど、pythonの構文規則て面倒だと思うよ。
何がダメで何が許されてるのか判りづらい。
よくこれで破綻しないなと逆に感心してしまった。
そのサイトのpythonサンプルって既成のライブラリ呼んでるのが殆どで
読みやすいかどうかは判らなかったけど、例えば
http://ja.doukaku.org/33/lang/python/
これのライブラリ使ってない方のコードのyieldとかの掛かり先の判りにくさとか。
COBOLみたいにカラム表示のあるエディタじゃないと厳しい。
インデント位置がほんとにそれで合ってるのか疑ってしまわない?
(LISPなら汚く書いてもppで大抵読めるコードになる)
0948デフォルトの名無しさん
2007/08/11(土) 16:45:01・・・え? そういう問題?
0949デフォルトの名無しさん
2007/08/11(土) 17:23:53マジで
0950デフォルトの名無しさん
2007/08/11(土) 17:45:22とは言え、C++ や Ruby ほどには破綻してないと思うよ
両方ともパーサに優しくない上に
C++ はもはや人間にすら読みづらい言語だし
Ruby は一見読みやすいがパーサの細かい挙動に気をつけないとハマる
あと Perl は…可読性とか考えたことあるのかなラリーってw
書いた時点でほぼパース済みの Lisp系はそういうことは無いわな
エディタに括弧対応の表示がないと辛いのが難点か
0951デフォルトの名無しさん
2007/08/11(土) 19:13:04でも日本で名が知れたハカーでPerl常用してる人多いよね(宮川さんとか小飼弾氏とかはてな伊藤さん)。
あれって惰性で使い続けてるのか、それとも使いやすいから
使ってるのかよくわからんね。すごい人にとってはPerlって
いい言語なのかな。スレ違いでゴメンね。
0952デフォルトの名無しさん
2007/08/11(土) 19:37:05何故か
0953デフォルトの名無しさん
2007/08/11(土) 19:39:150954デフォルトの名無しさん
2007/08/11(土) 19:47:01彼らは高次視覚野のニューロンがPerl向きに学習されている。
常人は真似しないほうが無難であろう。
0955デフォルトの名無しさん
2007/08/11(土) 20:07:130956デフォルトの名無しさん
2007/08/11(土) 20:17:31その連中は、派手に花火を打ち上げてるから目立つPerl者であって、
別にハッカーでもないだろ。
0957デフォルトの名無しさん
2007/08/11(土) 20:22:140958デフォルトの名無しさん
2007/08/11(土) 20:39:540959デフォルトの名無しさん
2007/08/11(土) 20:41:02CPANも含めて。
多少の構文の違いなんて大した問題じゃないって人も多いし
0960デフォルトの名無しさん
2007/08/11(土) 20:44:260961デフォルトの名無しさん
2007/08/11(土) 21:09:35RubyforgeとかCheese Shopなんて霞んで見えてしまうぐらいに
ましてasdfなんて、ね
0962デフォルトの名無しさん
2007/08/11(土) 21:10:28やっぱ実装が沢山あると難しいか。
ネットワーク系弱いし。名前負けしてるw
0963デフォルトの名無しさん
2007/08/11(土) 21:12:370964デフォルトの名無しさん
2007/08/11(土) 22:09:050965デフォルトの名無しさん
2007/08/11(土) 22:17:59ttp://ja.doukaku.org/tag/gauche/
普通の言語ならガード節で処理するようなものも関数的にネストして処理するので深くなる
また束縛でスコープが増える分深くなると言うのもある
これはすべてのプログラムに影響することでそれを考えればPythonのyieldが判りづらい(判りづらいとは思わないけど)
なんてほんの些細なこと
可読性と統一性ってのは別の所にあって他の言語はそこをある程度崩して読みやすさを補っているんではないかと思う
Ruby読みにくいって言っている人が居るけど大抵の人はlispとRubyじゃRubyのほうが読みやすいというと思うよ
だってみんなもlispのコードをカッコ数で読んでいるんじゃないでしょ?
ttp://img264.imageshack.us/img264/1397/lispnd7.png
0966デフォルトの名無しさん
2007/08/11(土) 22:19:51頑張ってる連中もいるぞwww
http://pc11.2ch.net/test/read.cgi/tech/1183396621/l50
0967デフォルトの名無しさん
2007/08/11(土) 22:50:430968デフォルトの名無しさん
2007/08/11(土) 23:24:48「大抵の人」は「Rubyのほうが読みやすいと思う」んだろ?まぁ、普通にそうなんじゃね。
その手の話は腐るほど見てきてるし、そう思う気持ちもわからんではないが、
何度も何度も同じ話を聞かされてるんで食傷気味。Matz が同じようなこといってるから
Matz 日記でやると同志がいっぱいいると思うよ。
0969デフォルトの名無しさん
2007/08/12(日) 00:05:090970デフォルトの名無しさん
2007/08/12(日) 00:42:49夏だからだよ
0971デフォルトの名無しさん
2007/08/12(日) 00:51:41schemeだとやっぱ継続?
0972デフォルトの名無しさん
2007/08/12(日) 01:01:570973デフォルトの名無しさん
2007/08/12(日) 01:07:08Rubyは間違いなく読みやすい部類だよ。
ただ、パーザの挙動が判りづらいから
読んだ通りの動きになってくれてるとは限らないところが落とし穴。
Lisp系のパーザの挙動は見たままだろうw
0974デフォルトの名無しさん
2007/08/12(日) 01:42:01(define-macro (return-from% name . result) `(,name ,@result))
(define-macro (block% name . body) `(call/cc (lambda (,name) ,@body)))
(define-macro (define% name . body)
(if (symbol? name)
`(define ,name (block% ,name ,@body))
`(define ,(car name)
(block% ,(car name) (lambda ,(cdr name) ,@body)))))
(define% (test1 x)
(if (not (number? x))
(return-from% func #f))
x)
;;
(test1 1) => 1
(test1 'a) => #f
まあ、つまり見たまま。
0975デフォルトの名無しさん
2007/08/12(日) 01:43:39だった。
おれには衛生的なやつは無理。
0976デフォルトの名無しさん
2007/08/12(日) 01:48:46(lambda (x)
(if (not (number? x))
(return-from% test2 #f))
x))
(test2 1) => 1
(test2 'a) => #f
うむ、ちゃんと動いてるな。
ただ、これだと普通の再帰ができなくなる。
nameを加工するかしないと。
0977デフォルトの名無しさん
2007/08/12(日) 02:07:48(define test1
(call/cc (lambda (test1)
(lambda (x) (if (not (number? x)) (test1 #f)) x))))
これって継続呼んだ時点でdefineの束縛フェーズに戻って
test1が継続の返り値に書き換わるんじゃない?
0978デフォルトの名無しさん
2007/08/12(日) 02:17:19例えば他の言語ならifの中で束縛を使いたいならifのスコープをその束縛のスコープとして適用して簡略化する
lispの場合はifをletでくるむ形で束縛のスコープを設定する
これはifのスコープとは別に束縛のスコープを記述できる分表現力は高いがネストが深くなり見た目も多少複雑になる
別にlispを全否定している訳じゃ無いしその分lispは力を得ることがで来ていると思う
ただ他の言語より可読性が高いとは思わない
>>973
人間コンパイラきたーw
0979デフォルトの名無しさん
2007/08/12(日) 02:26:02ttp://practical-scheme.net/wiliki/wiliki.cgi?Scheme%3a%e3%81%aa%e3%81%9cScheme%e3%81%ab%e3%81%afreturn%e3%81%8c%e7%84%a1%e3%81%84%e3%81%ae%e3%81%8b
言語としてreturnが用意してあるのとreturnを作れるのは意味合いが違ってくると思う
0980デフォルトの名無しさん
2007/08/12(日) 02:40:53あー間違った。call/ccをlambdaの中に入れといて。
どっちみち不完全だけどさ。
0981デフォルトの名無しさん
2007/08/12(日) 02:59:57他のスレでやれば賛同者多数だと思うんだがね。
このスレに自分の意見に賛同しない人がいる限りとかいったら延々とネストだの括弧だのって話を繰り返す気なのか?
0982デフォルトの名無しさん
2007/08/12(日) 03:03:270983デフォルトの名無しさん
2007/08/12(日) 03:07:260984デフォルトの名無しさん
2007/08/12(日) 03:30:040985デフォルトの名無しさん
2007/08/12(日) 03:34:020986デフォルトの名無しさん
2007/08/12(日) 03:39:440987デフォルトの名無しさん
2007/08/12(日) 04:28:330988デフォルトの名無しさん
2007/08/12(日) 04:44:03の三本立てでこのスレは成り立っています。
0989デフォルトの名無しさん
2007/08/12(日) 05:23:350990デフォルトの名無しさん
2007/08/12(日) 19:28:21慣れれば気にならなくなるが可読性が高いわけじゃないからな
というか誰かLispの可読性が高いなんて言ったっけ?
0991デフォルトの名無しさん
2007/08/12(日) 20:04:49他の人間のことは知らんし、あまり興味無い。
0992デフォルトの名無しさん
2007/08/12(日) 20:15:000993デフォルトの名無しさん
2007/08/12(日) 20:26:41インデントをいったんすべて無くして、エディタの力を何も借りられない条件下で
「さあ把握してみろ」みたいな勝負なら、そりゃあもう大惨敗だけど、
その両者がきちんと揃うと、途端に「そう一方的に負けてるもんでもない」って位置へ上がる、みたいな。
まぁ、客観的な話ではないけれども。
0994デフォルトの名無しさん
2007/08/12(日) 21:07:560995デフォルトの名無しさん
2007/08/12(日) 21:10:20Emacs + slime-mode で loop のインデントが次のようになります。
(loop as n = (progn (format t "~&Number: ")
(parse-integer (read-line) :junk-allowed t))
while n
do (format t "~&The square of ~D is ~D.~%" n (* n n)))
これを下のようにするには、どう設定すれば良いでしょうか?
(loop as n = (progn (format t "~&Number: ")
(parse-integer (read-line) :junk-allowed t))
while n
do (format t "~&The square of ~D is ~D.~%" n (* n n)))
0996デフォルトの名無しさん
2007/08/12(日) 21:38:59Lisp Scheme Part18
http://pc11.2ch.net/test/read.cgi/tech/1186922295/
>>995
0997デフォルトの名無しさん
2007/08/12(日) 21:43:560998デフォルトの名無しさん
2007/08/12(日) 22:11:05つかPythonも好きな奴多いと思うけど。
lambda埋め
0999デフォルトの名無しさん
2007/08/12(日) 22:50:371000デフォルトの名無しさん
2007/08/12(日) 22:55:3710011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。