全部 1- 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 最新50
Lisp Scheme Part21

1デフォルトの名無しさん2008/04/04(金) 18:18:17
□過去スレ□
Part20: ttp://pc11.2ch.net/test/read.cgi/tech/1205021786/
Part19: ttp://pc11.2ch.net/test/read.cgi/tech/1200237296/
Part18: ttp://pc11.2ch.net/test/read.cgi/tech/1186922295/
Part17: ttp://pc11.2ch.net/test/read.cgi/tech/1177065699/
Part16: ttp://pc11.2ch.net/test/read.cgi/tech/1172404795/
Part15: ttp://pc10.2ch.net/test/read.cgi/tech/1151025773/
Part14: ttp://pc8.2ch.net/test/read.cgi/tech/1132275726/
Part13: ttp://pc8.2ch.net/test/read.cgi/tech/1115901841/
Part12: ttp://pc8.2ch.net/test/read.cgi/tech/1100229366/
Part11: ttp://pc5.2ch.net/test/read.cgi/tech/1091456033/
Part10: ttp://pc5.2ch.net/test/read.cgi/tech/1075630259/
Part9: ttp://pc2.2ch.net/test/read.cgi/tech/1069594582/
Part8: ttp://pc5.2ch.net/tech/kako/1058/10582/1058263391.html
Part7: ttp://pc5.2ch.net/tech/kako/1042/10421/1042167213.html
Part6: ttp://pc3.2ch.net/tech/kako/1031/10315/1031560687.html
Part5: ttp://pc3.2ch.net/tech/kako/1023/10230/1023091882.html
Part4: ttp://pc.2ch.net/tech/kako/1016/10162/1016211619.html
Part3: ttp://pc.2ch.net/tech/kako/1008/10082/1008220265.html
Part2: ttp://pc.2ch.net/tech/kako/1002/10025/1002584344.html
Part1: ttp://piza2.2ch.net/tech/kako/987/987169286.html
2デフォルトの名無しさんsage2008/04/04(金) 18:18:56
□参考リンク□

日本Lispユーザ会(日本語)
ttp://jp.franz.com/jlug/index.html
ここにかなりの情報があります。 削るとAllegro Common Lispのページへ

プログラミング言語Scheme(日本語)
ttp://www.sci.u-toyama.ac.jp/~iwao/Scheme/scheme.html
Schemeの人はまずここを見ましょう。

Schemeへの道(日本語)
ttp://www.stdio.h.kyoto-u.ac.jp/~hioki/gairon-enshuu/SchemeNotes/scheme.html
ここはschemeの入門サイト。

Practical Scheme(日本語)
ttp://practical-scheme.net/index-j.html
「普通のやつらの上を行け」など、興味深い文書を沢山翻訳されてます。
(Gaucheという完成度の高いscheme処理系作者さんのページでもあります。)

LispUser.net
ttp://lispuser.net/
3デフォルトの名無しさんsage2008/04/04(金) 18:19:16
□仕様関係□

CLtL2: 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) Report on the Algorithmic Language Scheme (ja)
ttp://www.sci.u-toyama.ac.jp/~iwao/Scheme/r5rsj/html/r5rsj.html

R5RS: Revised(6) Report on the Algorithmic Language Scheme (en)
ttp://www-swiss.ai.mit.edu/~jaffer/r5rs_toc.html

R6RS: Revised(6) Report on the Algorithmic Language Scheme
ttp://www.r6rs.org/final/html/r6rs/r6rs.html
4デフォルトの名無しさんsage2008/04/04(金) 18:19:39
□SICP関係□

SICP(英語)
ttp://mitpress.mit.edu/sicp/full-text/book/book.html
「計算機プログラムの構造と解釈」の原書です。 全てオンラインで読めます。

計算機プログラムの構造と解釈 第二版 (snip) に関連するホームページ
ttp://sicp.ipl.t.u-tokyo.ac.jp/

□wikipedia関連□

http://ja.wikipedia.org/wiki/LISP
http://ja.wikipedia.org/wiki/Common_Lisp
http://ja.wikipedia.org/wiki/Scheme

□継続□

なんでも継続
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

Kahua: 継続ベースのアプリケーションサーバー
ttp://www.kahua.org/
5デフォルトの名無しさんsage2008/04/04(金) 18:20:23
□その他□ (便利な情報リソース)

John McCarthy's Home Page
ttp://www-formal.stanford.edu/jmc/
LISPの生みの親、J・マッカーシーのページだそうです。

Association of Lisp Users 米国のLispユーザ会
ttp://www.alu.org/alu/home

CMUのLisp Repository 新旧様々なプログラムが置いてある
ftp://ftp.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/lisp/0.html

The Common Lisp Cookbook: いわゆる Cookbook
ttp://cl-cookbook.sourceforge.net/

Bibliography of Scheme-related Research Scheme関連の論文リンク集
ttp://library.readscheme.org/

Scheme Hash(英語) S式でXMLを使える様にするSXMLなど
ttp://okmij.org/ftp/Scheme/index.html

幻の「入門Scheme」 オンラインで読める
ttp://www4.ocn.ne.jp/~inukai/scheme_primer_j.html

各種scheme処理系をcygwin上からビルドする方法など。
ttp://www.geocities.co.jp/SiliconValley-PaloAlto/7043/

encyCMUCLopedia (cmucl以外でも有益なはず )
ttp://www.isr.ist.utl.pt/library/docs/encycmuclopedia/doc/
6デフォルトの名無しさんsage2008/04/04(金) 18:22:06
□その他その2□

独習 Scheme 三週間 (Schemeの教科書 )
ttp://www.sampou.org/scheme/t-y-scheme/t-y-scheme-Z-H-1.html

Cliki (CLコードがたくさん紹介されている。)
ttp://www.cliki.net/index

よろずや (lispの実用的な情報が色々。 )
ttp://www.geocities.co.jp/SiliconValley-SanJose/7474/

Common-Lisp.net: 多くのプロジェクトがホスティングされてる
ttp://common-lisp.net/

Practical Common Lisp: S式の羅列で現実的な問題をどう解くのかそのギャップに悩まされてる人に
ttp://www.gigamonkeys.com/book/

SLIB
ttp://www-swiss.ai.mit.edu/~jaffer/SLIB.html

SRFI
ttp://srfi.schemers.org/

Meadow memo: 2ちゃんねるログ(dat落ちした過去スレの一部が見られます。 )
ttp://www.bookshelf.jp/2ch/index.html

Lispとは何か
ttp://www.asahi-net.or.jp/%7Eki4s-nkmr/lisp20061121/lisp.html
7デフォルトの名無しさんsage2008/04/04(金) 18:22:42
□実装□

Bit (mini-schemeよりも小さい(?)bytecode変換系 )
ttp://www.iro.umontreal.ca/~dube/

Lisp 言語処理系: CAMPUS LIsP, Lemon version (Cでわずか1000行)
ttp://www-masu.ist.osaka-u.ac.jp/~kakugawa/hacks/clisp/

Schemix (Linuxのkernelへのパッチで/dev/として扱えるTinyScheme )
ttp://www.abstractnonsense.com/schemix/

awkで書かれたわずか500行のLispインタプリタ
ttp://www.accesscom.com/~darius/

Bigloo CLR 用のコードを吐けるようになったらしい
ttp://www-sop.inria.fr/mimosa/fp/Bigloo/

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/
8デフォルトの名無しさんsage2008/04/04(金) 18:23:15
□実装その2□

Gauche: R5RS準拠のScheme処理系。Shiro Kawaiさん作。書籍も出版されました。
ttp://practical-scheme.net/gauche/index-j.html

PLT Scheme: DrScheme、MzSchemeなどのR5RS準拠および独自拡張のScheme処理系
ttp://www.plt-scheme.org/

Scheme48: R5RS準拠のSchemeのバイトコードインタプリタ
ttp://www.s48.org/

Guile: GNUの拡張プログラミング言語
ttp://www.gnu.org/software/guile/

Gambit-C: R5RS準拠のScheme処理系
ttp://www.iro.umontreal.ca/~gambit/wiki/index.php/Main_Page

Steel Bank Common Lisp: Common Lisp処理系
ttp://www.sbcl.org/

CMUCL: Common Lisp処理系
ttp://www.cons.org/cmucl/

GNU CLISP: Common Lisp処理系
ttp://www.clisp.org/

Embeddable Common Lisp: Common Lisp処理系
ttp://ecls.sourceforge.net/

Arc: ポール・グレアム氏が作成した新しいLisp
ttp://arclanguage.org/
9デフォルトの名無しさんsage2008/04/04(金) 18:23:42
□イベント□

GaucheNight(2008-03-08)
ttp://practical-scheme.net/wiliki/wiliki.cgi?gauche.night
SchemeとGaucheとλとS式を愛するすべての人に贈るマクロな一夜。
川合史朗、伊藤篤、山下伸夫、笹田耕一、ひげぽん、zick、黒田寿男、えんどうやすゆき、ほか

GaucheNight(2007-05-09)
ttp://practical-scheme.net/wiliki/wiliki.cgi?GaucheNight%3a2007
川合史朗、黒田寿男、まつもとゆきひろ(Skype中継)、小飼弾、
伊東勝利、久井亨、小黒直樹、ほか

黒田氏関係 (黒板の人)
ttp://pc10.2ch.net/test/read.cgi/tech/1151025773/901-909
ttp://cl-www.msi.co.jp/solutions/knowledge/lisp-world/articles/scheme
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
Script Languages
ttp://cl-www.msi.co.jp/solutions/knowledge/lisp-world/articles/script-lang
10デフォルトの名無しさんsage2008/04/04(金) 18:24:37
□書籍□

<プログラミングGauche>
・著者:川合史朗 監修 Kahuaプロジェクト 著
・定価:3360円(本体3200円+税)
・B5変 524頁
・ISBN 978-4-87311-348-7
・発売日:2008/03/14

Scheme処理系言語Gauche(ゴーシュ)の初の解説書!
ttp://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?&ISBN=978-4-87311-348-7

立ち読み版
ttp://karetta.jp/book/gauche-hacks

<On Lisp>
・著者:Paul Graham 著 野田 開 訳
・定価:3990円(本体3800円+税)
・A5 440頁
・ISBN 978-4-274-06637-5

LispハッカーPaul Grahamが、Lispの力の源泉であるマクロプログラミングを解説
ttp://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=978-4-274-06637-5
HTML版
ttp://user.ecc.u-tokyo.ac.jp/~tt076524/onlispjhtml/
11デフォルトの名無しさんsage2008/04/04(金) 18:26:48
□2ch上にあるLISP関係のスレ□ (現在)

【入門】Common Lisp その4【質問よろず】
ttp://pc11.2ch.net/test/read.cgi/tech/1201402366/

【CGI】実用比較Lisp vs C/C++【GUI】
ttp://pc11.2ch.net/test/read.cgi/tech/1150501484/

【魔法】リリカル☆Lisp【言語】
ttp://pc11.2ch.net/test/read.cgi/tech/1183396621/

Lisp@UNIX版
ttp://pc11.2ch.net/test/read.cgi/unix/1019926525/

Emacs Lisp 3
ttp://pc11.2ch.net/test/read.cgi/tech/1191875993/

【ヤパーリ】XMLをS式に置換えていくスレ【LISP最強】
ttp://pc11.2ch.net/test/read.cgi/tech/1140006937/

【SICP】計算機プログラムの構造と解釈 Part2
ttp://pc11.2ch.net/test/read.cgi/tech/1203096230/

【普通のやつらの】 Arc Language 0 【上を行け】
ttp://pc11.2ch.net/test/read.cgi/tech/1202098949/
12デフォルトの名無しさんsage2008/04/04(金) 18:27:45
The Scheme Programming Language (英語 オンライン読可)
http://www.scheme.com/tspl3/
13デフォルトの名無しさんsage2008/04/04(金) 18:36:37




※LispとSchemeのスレです。



14デフォルトの名無しさんsage2008/04/04(金) 18:42:02
お酒とワインのスレです。みたい
15デフォルトの名無しさんsage2008/04/04(金) 18:45:12
麺類とうどんのスレです。みたい
16デフォルトの名無しさんsage2008/04/04(金) 20:03:18
>>15
ワラタ

;;;蕎麦で喧嘩するんだぜきっとw
17デフォルトの名無しさんsage2008/04/04(金) 20:35:56
テンプレ追加

☆初心者が集うIRC(布教してくれる先生も大募集です)

irc.scenecritique.com
port 6667

チャンネル #Lisp_Scheme

クライアントはcottonあたりが誰でも使いやすいと思います
(LisperならEmacsでつないだ方がいいかもしれませんが)

※IRCはつないだまま離席している人が結構いるので即返答がないことも。気長に待ちましょう

現在cdrcdrな感じですが宜しくお願いします

18デフォルトの名無しさんsage2008/04/05(土) 18:36:35
If you give someone Fortran, he has Fortran.
If you give someone Lisp,
19デフォルトの名無しさんsage2008/04/05(土) 18:38:45
Scheme Gauche part1
って(略
20デフォルトの名無しさんsage2008/04/05(土) 23:26:57
場合のカズ、三浦カズ
(define C
(lambda (n k)
(if (eq? k 0) 1
(* (/ n k) (C (- n 1) (- k 1))))))
(display (C 5 2))
⇒10

(define C
(lambda (n k)
(if (eq? k 0) 1
(if (eq? n k) 1
(+ (C (- n 1) (- k 1))
(C (- n 1) k))))))
(display (C 5 2))
⇒10
21デフォルトの名無しさんsage2008/04/05(土) 23:51:04
ttp://codepad.org/UgX6eIBr
ttp://codepad.org/TU5segMo
22デフォルトの名無しさんsage2008/04/06(日) 00:01:39
場合の数
(define Y
(lambda (X)
((lambda (procedure)
(X (lambda (arg) ((procedure procedure) arg))))
(lambda (procedure)
(X (lambda (arg) ((procedure procedure) arg)))))))

(define (Fact my-fact)
(lambda (n)
(if (= n 0)
1
(* n (my-fact (- n 1))))))

(define fact (Y Fact))

(define P
(lambda (n r)
(/ (fact n) (fact r))))

(display (P 4 2))
23デフォルトの名無しさんsage2008/04/06(日) 00:15:16
>>22
順列ですから
24デフォルトの名無しさんsage2008/04/06(日) 00:59:05
>>22
(define P
(lambda (n r)
(/ (fact n) (fact (n-r)))))
25デフォルトの名無しさんsage2008/04/06(日) 01:00:53
(define C
(lambda (n r)
(/ (P n r) (fact r))))
26デフォルトの名無しさんsage2008/04/06(日) 01:08:32
(thread "Lisp Scheme" (part 21))
27デフォルトの名無しさんsage2008/04/06(日) 02:26:55
そういう余計な括弧よさはいりません
28デフォルトの名無しさんsage2008/04/06(日) 02:29:15
むしろ括弧が少なすぎるぜ
29デフォルトの名無しさんsage2008/04/06(日) 02:52:11
(thread "Lisp Scheme" :part 21)
30デフォルトの名無しさんsage2008/04/06(日) 03:40:24
ディレクトリいじれたわ。
Gaucheは俺の既定スクリプト言語になりました。
31デフォルトの名無しさんsage2008/04/06(日) 05:04:45
文字列リテラルってダブルクオートで囲うんだっけ?
32Lisp1.5sage2008/04/06(日) 09:21:26
シンボルが文字列の代わりです
33デフォルトの名無しさんsage2008/04/06(日) 17:29:37
glintがバージョンアップされたようです
34デフォルトの名無しさんsage2008/04/06(日) 18:14:29
(explode 'SYMBOL)
35デフォルトの名無しさんsage2008/04/06(日) 18:57:57
>>32
internされてて欲しいとき(キーになるもの等)はシンボル
頻繁に作ったり壊したりするならストリング
極めて頻繁にコンペアするならシンボル

とりあえず、デフォルトはストリングだな
36デフォルトの名無しさんsage2008/04/06(日) 19:04:42
(glint '(Lisp Scheme Gauche)) ⇒ バグの数 21
37デフォルトの名無しさんsage2008/04/06(日) 21:05:54
ネタにマジレスっていうか、元ネタが微妙だったねw
Lisp1.5ってなあ。
38デフォルトの名無しさんsage2008/04/07(月) 12:05:35
>>34
=> (S Y M B O L)
39デフォルトの名無しさんsage2008/04/07(月) 19:00:23
EOPLとLisp in Small Pieceってどっちがやさしいですか?
簡単な方から挑戦してみようと思ってます。
40デフォルトの名無しさんsage2008/04/07(月) 21:27:55
lispのプロジェクトをいろいろ見てるけど、pythonと比べて
toy problem解いただけで実際の複雑な問題に適用できないの多くないですか?
ある程度泥臭いこともやる人がいないからなのかな
41デフォルトの名無しさんsage2008/04/07(月) 21:34:57
つ 実際の複雑な問題

kwsk
42デフォルトの名無しさんsage2008/04/07(月) 21:35:06
>>40
そのプロジェクトってどれよ?

#うちの社内プロジェクトだったらいろんな意味で笑う
43デフォルトの名無しさんsage2008/04/07(月) 21:35:33
そうですね、あなたにはPythonが向いてると思います。
44デフォルトの名無しさんsage2008/04/07(月) 22:15:10
pythonと実際の複雑な問題だけじゃどう吊られると喜んでくれるかわかんないYO!
45デフォルトの名無しさんsage2008/04/07(月) 22:21:15
>>40
ttp://www.unixuser.org/~euske/doc/python/python-lisp-j.html
46デフォルトの名無しさんsage2008/04/07(月) 22:36:06
>>40
そういうネタの露出度が高いだけでは?
47デフォルトの名無しさんsage2008/04/07(月) 22:44:19
すまんが教えてくれ
read関数って空白類記号(スペース、タブ、改行)は読み飛ばすのか?
48デフォルトの名無しさんsage2008/04/07(月) 22:47:09
うんそうだよ
49デフォルトの名無しさんsage2008/04/07(月) 23:50:45
>>48
アリガト
50デフォルトの名無しさんsage2008/04/08(火) 00:43:10
>>40
Pythonマシンとかつくってから出直してこい
51デフォルトの名無しさんsage2008/04/08(火) 00:51:40
まあせめてPmacsぐらい作ってほしいね。
52デフォルトの名無しさんsage2008/04/08(火) 07:40:06
>>51
Prologで書かれたpmacsなら昔使ってたなあ。
入社したら新人教育がLisp班とProlog班に分かれて、俺はProlog班だった。
53デフォルトの名無しさんsage2008/04/08(火) 09:37:55
そんな夢のような会社があるわけねえだろ!
54デフォルトの名無しさんsage2008/04/08(火) 10:03:54
>>53
AIバブル全盛期にはあったんだよね。
俺がやったPrologはFM-8上のCP/Mで動くmicro-PLOLOGという丸括弧で括るPrologだった。
pmacsを使ったのはそれとは別のワークステーションで、小型冷蔵庫ぐらいの筐体だったよ。
55デフォルトの名無しさんsage2008/04/08(火) 11:28:48
http://d.hatena.ne.jp/niitsuma/20080328/1207515072
swigよりも高度なことができるcffiのwrapper toolを試してみました
しかし少し複雑なc++コードを与えるとエラーをおこして止まります

基のc++コードを自動でwrapが生成できようにいじるべきか
それとも自動はあきらめて手書きした方がいいのでしょうか?

pythonなら自動でwrapを作成できるみたいなので
pythonを経由してlispから呼ぶという2度手間という手もできるのでしょうか?
56デフォルトの名無しさんsage2008/04/08(火) 12:27:56
ツールをいじるのは手書きを極めてから
57デフォルトの名無しさんsage2008/04/08(火) 13:01:22
>>52-54
ワロタw
今でもそんな会社があるなら入社してみたい
58デフォルトの名無しさんsage2008/04/08(火) 13:18:24
>>54
Micro-PROLOGですぜ、旦那。
"Programming in Logic"読んだ口ですか?

Lisp班の環境は? muLispとか?
59デフォルトの名無しさんsage2008/04/08(火) 16:57:05
>>53
昭和時代ならあり得る話
60デフォルトの名無しさんsage2008/04/08(火) 19:08:22
2001年宇宙の旅に出てくるHALってLispで書かれてるんでしょ?
61デフォルトの名無しさんsage2008/04/08(火) 19:25:21
そんな設定あったっけ?
62デフォルトの名無しさんsage2008/04/08(火) 19:33:22
ありません
63デフォルトの名無しさんsage2008/04/08(火) 19:49:41
>>58
> "Programming in Logic"読んだ口ですか?
はっきり覚えていないけど教材は手作りだったような。

> Lisp班の環境は? muLispとか?
名前は忘れたけど日立のプラズマ(赤色1色)Laptop(DOS 16bit)で動いている
マルチウインドウのLispだった。Common Lispだったかどうかは分からない。

あとこの会社にはXerox J-Starもあったよ。俺が入って1〜2年で廃棄されたが。
64デフォルトの名無しさんsage2008/04/08(火) 19:56:27
>>63
muLISP/86 on MS-DOSの可能性大
65デフォルトの名無しさんsage2008/04/08(火) 19:57:08
そりゃファクスくらいあるだろw
66デフォルトの名無しさんsage2008/04/08(火) 22:53:36
雨の日も風の日も
息をするようにlambdaを書く。
そんな人にわたしはなりたい。
67デフォルトの名無しさんsage2008/04/08(火) 23:09:16
自分自身の定義を書き換える関数って書ける?
学習して賢くなる関数。
68デフォルトの名無しさんsage2008/04/08(火) 23:12:54
>>67
可能。
69デフォルトの名無しさんsage2008/04/08(火) 23:18:57
メモ化された関数は定義は変わらないけど一度計算した結果を覚えて高速化する。
70デフォルトの名無しさんsage2008/04/08(火) 23:29:22
関数で新たな関数を作ってevalとか?
71デフォルトの名無しさんsage2008/04/08(火) 23:31:24
「賢い」の定義はどんなものなの?
72デフォルトの名無しさんsage2008/04/08(火) 23:55:57
「かしこいランプ」(商品名)って
走行中 かつ 周辺が暗い ならば 点灯、という論理で動作してるな
73デフォルトの名無しさんsage2008/04/09(水) 00:14:07
>>67
できる。つーか、そんなのアセンブラでもできるだろ。w
74デフォルトの名無しさんsage2008/04/09(水) 00:16:14
まぁ自己書き換えコードはあまりお勧めしないがな
75デフォルトの名無しさんsage2008/04/09(水) 00:48:58
関数は普通に賢いので、データを賢くすることを考えてはどうか
76デフォルトの名無しさんsage2008/04/09(水) 10:30:54
>>67
Yコンビネータを使ったメモ化
http://citeseer.ist.psu.edu/mcadams01practical.html
77デフォルトの名無しさんsage2008/04/09(水) 12:40:09
>>67
書き換えるのは簡単だが、賢くするのは難しい。w
78デフォルトの名無しさんsage2008/04/09(水) 14:32:38
Yは相互再帰を学習できますか?
7967sage2008/04/09(水) 18:04:46
昨夜は書きこんだ後に寝てしまったです。スマンです。

Schemeでdefineを使って定義した内容をリストとして取り出し、
書き換えて自分自身を再定義するってことを考えてました。

自らアルゴリズムを改良していくとかできたらおもしろいなぁって。

夢物語だけれども人造人間キカイダーのように思考し、反省し、学習するプログラム
があったらおもしろいだろうね。
80デフォルトの名無しさんsage2008/04/09(水) 18:14:27
AIか?
81デフォルトの名無しさんsage2008/04/09(水) 18:53:44
昔ネットに人工無能ってのがあったなあ。
82デフォルトの名無しさんsage2008/04/09(水) 19:43:42
>>81
今でもあるよ
83デフォルトの名無しさんsage2008/04/09(水) 19:48:48
あるんだワラ
84デフォルトの名無しさんsage2008/04/09(水) 19:50:58
>>82
うずらか〜!

85デフォルトの名無しさんsage2008/04/09(水) 20:08:52
実は俺・・・
86デフォルトの名無しさんsage2008/04/09(水) 21:03:31
cffi使ってたのだけど
大きいプログラムを呼ぼうとする
glibc detected *** sbcl: malloc corruption
で止まる。何か対策ないのでしょうか?
87デフォルトの名無しさんsage2008/04/09(水) 21:05:43
大きいとはどのくらいか、
プログラムの大きさかデータの大きさか、
具体的にどのくらいより大きいと駄目なのか、
その辺をいろいろ実験してみると有意義であろう。
88デフォルトの名無しさんsage2008/04/09(水) 21:12:24
これをcffiで呼ぼうとしたら同じバグになる

#include <stdio.h> //ここが問題
int test(int i){
return 0;
}
8988sage2008/04/09(水) 21:25:19
allegro CLならこんなこと起きないのでしょうか?
90デフォルトの名無しさんsage2008/04/09(水) 21:28:53
>>89
それを聞く前に、普通は起きた処理系が何かを書くもんじゃないかい?
9188sage2008/04/09(水) 21:30:21
sbclです
92デフォルトの名無しさんsage2008/04/09(水) 21:36:53
>>88だけで駄目ってのはさすがに無かったと思うけどなあ。
#includeを抜くと大丈夫なんだよね?
OSは何?
93デフォルトの名無しさんsage2008/04/09(水) 21:49:26
>>79
defineで定義した関数をリストとして取り出すことはschemeでは(少なくとも規格内の方法では)出来ない。
9488sage2008/04/09(水) 23:36:13
OSはubuntu7.10です
95デフォルトの名無しさんsage2008/04/10(木) 00:30:35
>>60-62

【HAL-9000 series】

映画版では1992年1月12日、クラークによる小説版では1997年同日に、イリノイ大学アーバナ・シャンペーン校にて誕生した。
開発者はシバサブラマニアン・チャンドラセガランピライ、通称チャンドラ博士。

HALはIBMを1文字ずつ前にずらして命名された。
小説『2010年宇宙の旅』では、チャンドラー博士自らIBM説を否定した。
が、アーサー・C・クラークは後年になってからIBM社がこの説を迷惑がっているどころか半ば自慢しているらしいと聞き及び、
著書「3001年終局への旅」のあとがきで「今後はこの説の間違いを正す試みを放棄する」と記した。

スペースシャトルの機上コンピュータには、高い信頼性を確保するためにシャトル専用のプログラミング言語が用いられており、これを「HAL/S」という。
「HAL/S」を構築したIntermetrics社の創業者は、大学の同僚でこの言語のコンセプト構築に多大な貢献があった J. Halcombe Laning 博士に敬意を表し、
彼の通称 Hal に因んで HAL と命名した。

しかしこれがいかにもくどく不自然なことから、やはり「HAL/S」は「HAL 9000」に因んだものという憶測が浸透した。
ちなみにシャトルの三番機、OV-103の船名は「ディスカバリー号」となっており、『2001年宇宙の旅』との関連が噂された。
奇しくもスペースシャトル史上2度の大事故の後の初飛行はいずれもこの機体である。
96デフォルトの名無しさんsage2008/04/10(木) 00:41:51
IBM AP-101

The IBM AP-101 is an avionics computer, used most notably in the U.S. Space Shuttle, but also in the B-52 and F-15, among others.
When it was designed, it was a high-performance pipelined processor with core memory.
Today, its specifications are exceeded by many microprocessors.
The AP-101, being the top-of-the-line of the System/4 Pi range, shares its general architecture with the System/360 mainframes.
The shuttle software is written in HAL/S, a special-purpose high-level language, whereas AP-101s used by the US Air Force are mostly programmed in JOVIAL.
97デフォルトの名無しさんsage2008/04/10(木) 01:44:53
>67
遺伝的アルゴリズムを調べろ。
アクセス規制だから詳細は書けない。
98デフォルトの名無しさん2008/04/10(木) 01:50:06
遺伝的プログラミングだ。KOZAが最初にLISPを使って示した方法だ。

アクセス規制で携帯だから、他で調べろ
99デフォルトの名無しさんsage2008/04/10(木) 02:09:52
http://ja.wikipedia.org/wiki/%E9%81%BA%E4%BC%9D%E7%9A%84%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0
確かにLISP向きな感じがするね
100デフォルトの名無しさんsage2008/04/10(木) 02:40:03
>>78
Y そのままだとやりにくいんじゃないかな。
二関数での相互再帰なら
(Y2 f g) = (f (Y2 f g) (Y2 g f))
みたいに拡張するとか。
101デフォルトの名無しさんsage2008/04/10(木) 03:31:54
よし、この調子でまたAIバブルを発生させようぜ!
ぶくぶく
102デフォルトの名無しさんsage2008/04/10(木) 07:08:50
次はセマンティックバブルだ!
LispハッカーはXMLという妥協を受けいれ、
メインストリームに帰り咲くのだ
103デフォルトの名無しさんsage2008/04/10(木) 09:34:46
セマンティックバブルって
SOAPバブルと同じ運命って気がするんだけど
104デフォルトの名無しさんsage2008/04/10(木) 13:34:13
とりあえずソープで泡踊りしてきまつ
10578sage2008/04/10(木) 18:51:55
>>100
おもしろそうなので書いてみます。Arcで
106デフォルトの名無しさんsage2008/04/10(木) 21:35:57
iPod touchでGauche動かせた人いる?
ノシ
107デフォルトの名無しさんsage2008/04/10(木) 21:42:06
普通のUnixなので普通に動きますね。NDAがあるので詳しいことは書けませんが。w
108デフォルトの名無しさんsage2008/04/10(木) 21:51:32
>>107
Open Programming環境では動かなかったってこと?純正SDKでしか試してないならNDAあるから書けないかw
109デフォルトの名無しさんsage2008/04/10(木) 21:57:20
すまん、純正しかやってない。
110デフォルトの名無しさんsage2008/04/10(木) 23:22:07
>>109
d。参考になりました。
Zaurusポートもそうだけど、Open Programming環境では問題点が出ることが多いのに、純正では大丈夫だったのはちょっと驚き。
111デフォルトの名無しさんsage2008/04/11(金) 00:15:52
How to Design Programs
ttp://www.htdp.org/

たまげた。折角本を購入したのに、こっちのが充実してる。 orz
112デフォルトの名無しさんsage2008/04/11(金) 01:39:50
>>111
分厚いな 読む暇も気力もない
113デフォルトの名無しさんsage2008/04/11(金) 05:48:47
>65が放置されてるのはお約束?
114デフォルトの名無しさんsage2008/04/11(金) 23:05:11
Seasoned Schemer 18章、オレも解決!
ttp://codepad.org/cWiNn5qr

18章の出だしでリストが返ってくるような書き方が良くないと思う。
この二つを比べてみるとconsとkonsの違いがわかる。

(kdisplay (lots 5))
(display (lots 5))

115デフォルトの名無しさんsage2008/04/11(金) 23:33:05
もう少しきれいに書けYO!

(define kdisplay
(lambda (c)
(c (lambda (a d)
(cond
((null? a)(display ""))
(else (display "(")
(display a)
(k2display d)
(display ")")
(newline)))))))

(define k2display
(lambda (e)
(cond
((null? e)(display ""))
(else
(e (lambda (a2 d2)
(display " ")
(display a2)
(k2display d2)))))))
116デフォルトの名無しさんsage2008/04/12(土) 02:41:52
blogに投稿する処理を半自動化したいのですが
参考になるコードまたはパッケージなどないでしょうか?

117デフォルトの名無しさんsage2008/04/12(土) 05:42:17
XPなんですがDr.Schemeを放置しておくと勝手にメモリがんがん食ってフリーズします。
118デフォルトの名無しさんsage2008/04/12(土) 09:38:50
>>116
Common LispやSchemeのコードは知らないけど、
Emacs LispでAtomに対応してるのが二、三あったはず。
参考にするだけなら、PerlやPythonやRubyとかのが、
いくらでもありそうだけど。

ぶっちゃけ、処理自体は全然難しくないんで、
Atomとかのリファレンス見ながら自分で実装しても、
あまり苦労はしないと思う。自分でやろうとしたときは、
UI書くのが一番だるそうだと思った。
119デフォルトの名無しさんsage2008/04/12(土) 13:27:05
継続について

あっわかった!!
ん? こういう場合は。。。

これの繰り返し 
120デフォルトの名無しさんsage2008/04/12(土) 16:41:02
プログラミングGaucheの306ページのモジュールシステムですが
本のとおりに打ち込んで実行しても (addx 10) が110にならずに
11になってしまいます。本に誤記はありますか?
121120sage2008/04/12(土) 16:47:07
再度、Emacs立ち上げたらできました。
失礼しました。
122デフォルトの名無しさんsage2008/04/12(土) 20:14:44
>>116
xml-rpcがつかえるブログなら、gaucheのxml-rpcライブラリがある。サードパーティーだけど。

ぐぐればすぐ見つかる。
123デフォルトの名無しさんsage2008/04/12(土) 23:35:41
ttp://codepad.org/hrzyLxr1

SRFI-40のストリームが使えた。
124デフォルトの名無しさんsage2008/04/12(土) 23:47:53
ttp://d.hatena.ne.jp/reinyannyan/20070831

PLT Scheme用のモナドがあるらしい。使った人?
ノシ
125デフォルトの名無しさんsage2008/04/13(日) 00:39:49
なんだかわかんねーけど、Schemeってすごいんだな。
126デフォルトの名無しさんsage2008/04/13(日) 00:44:51
Ruby使いがSchemeを勉強して何か得るところはありますか?
127デフォルトの名無しさんsage2008/04/13(日) 00:51:22
Ruby厨の汚名を晴らせる
128デフォルトの名無しさんsage2008/04/13(日) 01:58:43
晴らせた時には既にただのLisperだけどな
129デフォルトの名無しさんsage2008/04/13(日) 02:00:25
λ..........
130デフォルトの名無しさんsage2008/04/13(日) 02:17:41
そりゃあ Brainfuck でも得るところはあるでしょう
失うものも多いかもしれないけど
131デフォルトの名無しさんsage2008/04/13(日) 02:23:00
何かSchemeの人は怖いと聞いていましたが、本当のようですね。
Rubyはクロージャも継続もスレッドも備えていますから、
Schemeはなんでも自作しないといけなくて大変そうに見えるのですが。
132デフォルトの名無しさんsage2008/04/13(日) 02:45:09
まさにRuby厨と呼ばれるにふさわしいな。
133デフォルトの名無しさんsage2008/04/13(日) 02:47:05
思い込みの激しい人というよりは、目の前で色々思い込んでみせて
引き留めて欲しい人、という感じだな。気持ち悪い。
134デフォルトの名無しさんsage2008/04/13(日) 02:56:09
構って君に構っちゃいけませんよ
135デフォルトの名無しさんsage2008/04/13(日) 07:35:33
.............................λ
````````````y
136デフォルトの名無しさんsage2008/04/13(日) 11:35:59
ArcとOzにヒントを得て、Orzって言語を考えたんだ。
仕様はまだ無いけど。
137デフォルトの名無しさんsage2008/04/13(日) 11:41:45
2ch発のマルチパラダイムLisp系言語orz
な?
138デフォルトの名無しさんsage2008/04/13(日) 11:55:35
SICPとHtDPはどっちが読みやすい?
139デフォルトの名無しさんsage2008/04/13(日) 12:20:12
どっちも読まなくていい
読まなくていいけど、ちょっとつまみ食いしてみようかな
というふいんきがベスト
140デフォルトの名無しさんsage2008/04/13(日) 12:25:27
````````````y <やあ、ラムダさん

.............................λ <やあ、Yコンビネータさん
141デフォルトの名無しさんsage2008/04/13(日) 13:21:36
>>138
比べるものが違うと思う。
[ {Simply Scheme or HtDP}読了後 ⇒ SICP ] or [Little Schemer ⇒ Seasoned Schemer]
でも最近は
[Little Schemer ⇒ Seasoned Schemer ⇒ SICP]
という読み方が多いかも。
142デフォルトの名無しさんsage2008/04/13(日) 13:23:29
λY
143デフォルトの名無しさんsage2008/04/13(日) 13:25:40
.............................λ ````````````y
144デフォルトの名無しさんsage2008/04/13(日) 13:27:00
.............................λ y ````````````おっとっと
145デフォルトの名無しさんsage2008/04/13(日) 13:48:06
「SICP完全制覇」とか出ないかな。
146デフォルトの名無しさんsage2008/04/13(日) 15:21:56
>>145
あるじゃん。Instructors Manualって解説用の本。
147デフォルトの名無しさんsage2008/04/13(日) 15:26:05
それ読んだらよくわかったの?
148デフォルトの名無しさんsage2008/04/13(日) 15:34:35
>>147
yes
149デフォルトの名無しさんsage2008/04/13(日) 15:52:36
>>148
アメリカの教科書って難しい内容だと生徒がデスマになるからか、HPがあったり副読本がついてたりするな。至れり尽くせり。
Gauche本のDesktop ReferenceとかInstructor's Manualも出て欲しいw
150デフォルトの名無しさんsage2008/04/13(日) 16:12:16
Structure and Interpretation of Classical Mechanics

SICMっていう古典力学のプログラミング本も出てるラスィ
151デフォルトの名無しさんsage2008/04/13(日) 16:17:25
これでしょ
http://www.amazon.co.jp/dp/0262194554/
さらに難しそうなんです><
152デフォルトの名無しさんsage2008/04/13(日) 16:19:58
ブックレヴュー見ていて思い出したんだけど、
Littleの9章で出てきた"partial function"のpartialって偏微分の偏だよね。
どこかで「引数を全て使わない関数のことだ」と書いてあったけど、
全て使っててもpartialだと言ってるし意味が通じない。
153デフォルトの名無しさんsage2008/04/13(日) 16:35:45
>>151
ttp://mitpress.mit.edu/catalog/item/default.asp?ttype=2&tid=4048

今売ってるのはコッチ。目に痛い赤の表紙w
154デフォルトの名無しさんsage2008/04/13(日) 16:37:23
同じ本ではないでしょうか><
155デフォルトの名無しさんsage2008/04/13(日) 16:40:06
>>152
完全な関数になっていないという意味でpartial(部分的な)と呼んでいる。
引数を使うかどうかは呼称に重要ではない。関数が計算を終了するかどうかでpartialと区別する。
156デフォルトの名無しさんsage2008/04/13(日) 16:41:41
>>155
ええ。それはわかりました。
永遠にリスト内を探し続けるが、見つけるべき文字列が見つからないとか、、
そんな例がありましたね。
157デフォルトの名無しさんsage2008/04/13(日) 16:42:57
>>154
>>151は526ページだけど、>>153は534ページある。中身は少し違う。
158デフォルトの名無しさんsage2008/04/13(日) 16:44:06
ISBNが同じなんです><
159デフォルトの名無しさんsage2008/04/13(日) 16:44:08
>>152
解説もあったよ
ttp://en.wikipedia.org/wiki/Partial_function

Little Schemerは謎解き本だと思うので
いま九章読んでる人は読まないほうがいいかも
160デフォルトの名無しさんsage2008/04/13(日) 16:46:43
>>158
古いと灰色や金色の表紙のものがある。amazon.co.jpは古い表紙のpicを使いまわしてると思われ
161デフォルトの名無しさんsage2008/04/13(日) 16:48:15
>>160
実際は赤なんだけど灰色の画像使ってるだけかと思ってました。
162デフォルトの名無しさんsage2008/04/13(日) 16:51:26
ISBNが古いのと同じなのかぁ。出版社のHPで確認するのって大事だな。
amazon.co.jp見ただけじゃそんなことわからないYO!
163デフォルトの名無しさんsage2008/04/13(日) 16:56:34
SICMオンライン
http://mitpress.mit.edu/SICM/
164デフォルトの名無しさんsage2008/04/13(日) 16:57:04
>>159
そのページの対応する言語を見ると日本語がないw
165デフォルトの名無しさんsage2008/04/13(日) 17:00:19
SICM 持ってる。けど、自分はラグランジュアンがよくわかってないので
宝の持ち腐れだ。先に数学、勉強するよ。
166デフォルトの名無しさんsage2008/04/13(日) 17:00:30
和田訳のSICPがあれだけグダグダなのを考えるとSICMを翻訳できるとは思えんなw
167デフォルトの名無しさんsage2008/04/13(日) 17:07:18
>>164
これじゃ違うかな。
http://ja.wikipedia.org/wiki/%E5%86%99%E5%83%8F
168デフォルトの名無しさんsage2008/04/13(日) 17:10:16
>>167
d。部分写像(partial mapping)がpartial functionに近い。
169デフォルトの名無しさんsage2008/04/13(日) 17:23:20
いいなあ、学生は暇があって
170デフォルトの名無しさんsage2008/04/13(日) 17:25:01
SICMのユーティリティープログラムのページ (Linux用)

ttp://www-swiss.ai.mit.edu/~gjs/6946/linux-install.htm
171デフォルトの名無しさんsage2008/04/13(日) 17:26:16
学生じゃないし暇じゃないけど、ゴロゴロしてる。
172デフォルトの名無しさんsage2008/04/13(日) 17:27:32
>169

先週から仕事中の現実逃避に>163読み始めたよ
出来れば日本語訳が( ゚Д゚)ホスィ・・・
173デフォルトの名無しさんsage2008/04/13(日) 17:38:30
さーてそろそろLittle Schemer読んじゃわないと````````````y
174デフォルトの名無しさんsage2008/04/13(日) 17:42:20
8章くらいから難しくなって涙目
175デフォルトの名無しさんsage2008/04/13(日) 17:44:33
もれも8章涙目だったけど、何度も読み返して何とか理解した。
まだちょっともやもや残ってるけど、、、、

今9章だお。
176デフォルトの名無しさんsage2008/04/13(日) 17:45:57
>>138
HtDPより同じ著者のEOPLの方がいい。
Little Schemerシリーズもいいけど、SICPとEOPLは体系的な知識が得られる。
177デフォルトの名無しさんsage2008/04/13(日) 17:46:34
Simply Schemeは?
178デフォルトの名無しさんsage2008/04/13(日) 17:48:01
EOPLってナーヌ?
179デフォルトの名無しさんsage2008/04/13(日) 17:48:55
しばらく英語に触れてなかったので、Littleで一杯一杯なんだ。
Simply→SICPという意図で書かれているらしいけど、英語読めるか心配。

>>178
おそらくEssential Of Programing Languageかと。
180デフォルトの名無しさんsage2008/04/13(日) 17:53:22
Simply SchemeはLittle Schemerに近い内容をもっとページ数をかけて説明してる。
表計算プログラムを作る演習などのfinger practiceが充実してるけど理論的には浅い。
Haskellで言えばCraftみたいな内容。
HtDPも理論的なレベルは同程度。こっちはプログラミング作法にページを費やしている。
181デフォルトの名無しさんsage2008/04/13(日) 17:54:16
>>179d
182デフォルトの名無しさんsage2008/04/13(日) 17:57:20
>>180
ありがとう。
退屈させないように色々やってみて、プログラミングに馴染んで来たら、
さてそこから深くするには何が困難か?と考えさせて
SICPにつなげる感じなんですかね。
183デフォルトの名無しさんsage2008/04/13(日) 18:04:13
>>182
そんな感じ。Littleの8章で困るのも演習でなれることが出来ないからじゃないかい?
SICPに取り組むには、他の言語経験があればLittleぐらい難しくても短期間に十分なレベルに達するけど、
全くの初心者には大量のfinger practiceで経験を積ませないと理論の良さが実感できないから壁を感じるんだと思う。
184デフォルトの名無しさんsage2008/04/13(日) 18:05:35
>>183
まさにそんな感じです。Simplyいっといたほうが良かったかな・・・・
プログラミングGaucheで代わりになります?
185デフォルトの名無しさんsage2008/04/13(日) 18:21:41
>>184
Gauche本もってるかな?リファレンス的でfinger practiceはあまりないよ。
SimplyはSICPの前に必要な知識をうまく選んで入れてると思う。
でも Little Schemer ⇒ Seasoned Schemer と読んで、ネット上の他人のプログラムを読むのも面白い。
楽しんで継続できるのが一番いい方法だと思う。
186デフォルトの名無しさんsage2008/04/13(日) 18:25:27
これ行った人、報告よろ

Continuation Fest 2008
http://logic.cs.tsukuba.ac.jp/Continuation/abstract.html
187デフォルトの名無しさんsage2008/04/13(日) 18:29:36
>>185
持ってないです。ネットの立ち読み版は眺めましたけど。
折角Little読み終わりそうだから続けてSeasoned読んじゃおう。
どうもありがとう。
188デフォルトの名無しさんsage2008/04/13(日) 18:44:45
>>186
おれも内容知りたいなぁ>>継続フェスタ。
189デフォルトの名無しさんsage2008/04/13(日) 19:02:27
>>187
Seasonedをしっかり理解するとSICPの山場といえる3・4章が簡単になるからガンガレ。
特に継続(callcc)がSICP3.5ストリームで利用されるのは面白い。
これがわかるとSICMの入門準備も完了。runge-kutta4(つまり微分方程式)とか出来るとシミュレーションの幅がちょっと広がるし。
ストリームで無限リストが作れるのも目からうろこの体験だった。
これ位はできないとHaskellerに馬鹿にされるしw
190デフォルトの名無しさんsage2008/04/13(日) 19:03:30
xyzzyの独自機能をcommon lispで読み代えるmacroみたいなのないでしょうか?
191デフォルトの名無しさんsage2008/04/13(日) 19:12:15
Little Schemerな連中は、はてなとかで、グループ作って
活動すれば良いんじゃないかと思った。
192デフォルトの名無しさんsage2008/04/13(日) 19:22:24
まああれだ
コンパイラといえばyacc
OSといえばブートローダー
SchemeといえばLittle Schemer
193デフォルトの名無しさんsage2008/04/13(日) 19:33:26
Little Schemer 何度でも読んでいいですか?
194デフォルトの名無しさんsage2008/04/13(日) 19:37:18
いいですよ
195デフォルトの名無しさんsage2008/04/13(日) 19:43:04
何度も読むと理解がさらに深まりますか?
196デフォルトの名無しさんsage2008/04/13(日) 19:44:33
少なくとも浅くなることは無いから安心して読め
197デフォルトの名無しさんsage2008/04/13(日) 19:50:30
じゃあ毎日音読する。
198デフォルトの名無しさんsage2008/04/13(日) 20:04:50
>>190
どういうものをイメージしてるのかよく分からないよ……
199デフォルトの名無しさんsage2008/04/13(日) 20:33:16
何と言ってもSICPだ。俺はあれを読んで人生が変わった気分だよ。

プログラマは皆SICP必須だな。あれを読めば、場当たり的なコーディングから
完全に開放されるよ。
200デフォルトの名無しさんsage2008/04/13(日) 20:34:24
読むなら、やっぱり英語版?
201デフォルトの名無しさんsage2008/04/13(日) 20:49:26
>>200
俺は英語版を読んだ。最初翻訳本買おうかと思ってAmazon見たらあのコメントの
群れを見て引いちゃったよw。「超循環評価機」とかのタイトル見ても???だったしね。

英語は教科書だからか、受験英語やってりゃ普通に読める英文だよ。ネイティブ風な
言い回しは一切無い。多少英語が読めるんだったら、タダでネットで見れるんだし、
原語でいいんじゃないか。

ちなみに俺はあまりの感動にハードカバーの洋書を買ってしまった。9000円ぐらい
したかな。ただ、持ち運びにはペーパーバックのほうがいいし、値段も半額以下なので
これについては激しく後悔しているw
202デフォルトの名無しさんsage2008/04/13(日) 21:06:57
昔のマグロウヒル日本語版から比べたら、現行日本語版なんて天国みたいなもんだよ。
203デフォルトの名無しさんsage2008/04/13(日) 21:10:17
別に悪い訳じゃないと思うけどなぁ。
超循環評価機をメタサーキュラ〜とかカタカナで書かれたら死ぬ。
204デフォルトの名無しさんsage2008/04/13(日) 21:12:16
Amazonの書評は異常だね。攻撃的な人って居るんだなと感心する。
205デフォルトの名無しさんsage2008/04/13(日) 21:21:20
ニヤニヤ
206デフォルトの名無しさんsage2008/04/13(日) 22:46:13
>204
あれは読んでない奴の戯言だ
Amazonのあの手の書き込みは鵜呑みにしない事にしている
207デフォルトの名無しさんsage2008/04/13(日) 23:14:33
単語まで全て逐語訳にしないで
->計算機(computer)
みたいな感じで元の英単語も書けば良かったんだよな。
208デフォルトの名無しさんsage2008/04/13(日) 23:17:09
字幕の最初の方が出来上がったてるみたいだ。
209デフォルトの名無しさんsage2008/04/13(日) 23:28:31
>>207
英語版はLaTeXだけど、日本語版は組版でやってるからちょっとした修正が出来ない。
もとの単語を書くと文字数が増えるからページ数を抑えるためにポイント数を抑えざるを得ない。
でもそれは技術的に難しい。かといってページ数を増やすと\5,000以上になってしまう。
つまりピアソンがコストダウンできる技術力を持っていないことにもそういう工夫を出来ない原因がある。
かといってムリをすればマグロウヒルみたいに倒産して書物が入手できなくなってしまう。
良い本なら買い支えるというのも消費者の選択なんジャマイカ?
210デフォルトの名無しさんsage2008/04/14(月) 00:28:47
>>152
total functionは、全ての実引数に対して値が定義されている関数。
partial functoinは、値の定義されてない実引数のある関数。

具体例は、
(define (f x)
 (if (= x 1) 1
   (f (- x 1))))

定義域を自然数だとするとtotal function。
整数だとするとpartial function。
負の数の時に停らないあるいは値が未定義だから。

(define (f x) (/ 1 x))もxが0だと駄目だからpartial function。
211デフォルトの名無しさんsage2008/04/14(月) 01:22:42
それじゃ数学関数の定義で駄目。152はそこは判ってるようだ。これを関数型での関数の引数でイパーン的に説明汁
212デフォルトの名無しさんsage2008/04/14(月) 01:25:17
>>152
>>155が説明して>>156で納得して終了済。
213デフォルトの名無しさんsage2008/04/14(月) 01:44:48
>>210の方が合ってるぞ。
http://foldoc.org/?partial+function

> 関数が計算を終了するかどうかでpartialと区別する。

これは間違い。例えばSMLのような例外のある計算系では、
関数の値が未定義の場合も停止する。Liftされているから。
表示的意味論の本を読めばちゃんと書いてあるよ。
214デフォルトの名無しさんsage2008/04/14(月) 01:56:14
Dを意味関数だとしたら、
∃x (x≠⊥ & D[f(x)] = ⊥) なら、fはpartial functionってことだよな。
215デフォルトの名無しさんsage2008/04/14(月) 02:03:05
>>214を見た漏れの脳にはテトリスが浮かんだ
とりあえず泣いてくる
216デフォルトの名無しさんsage2008/04/14(月) 02:03:58
>>215
ああ俺もギャル文字を思い出した。一緒に泣こうぜ。
217152sage2008/04/14(月) 02:08:46
>>210
なんかいろんな意見が飛んでますが、、ありがとう。

>>215-216
漏れもれも。
218デフォルトの名無しさんsage2008/04/14(月) 05:09:54
戸田山和久の「論理学を作る」はよかったな
大学に対しては良書を教えてくれた事に関しては感謝してる
219デフォルトの名無しさんsage2008/04/14(月) 06:46:38
そういう感じで「計算論 計算可能性とラムダ計算 著高橋 正子」とかが
self-containedで読めるようになる本教えてください。
220デフォルトの名無しさんsage2008/04/14(月) 12:54:26
他言語で書かれたプログラムのメタ制御したいのだけど
適切なbindingがない場合はxml-rpcが一番簡単なのかな?
221デフォルトの名無しさんsage2008/04/14(月) 13:30:46
いいえ
222デフォルトの名無しさんsage2008/04/14(月) 17:56:28
計算理論の基礎 シプサ
てのが気になってる。
アマゾンによると翻訳がすこぶる良いという。
223デフォルトの名無しさんsage2008/04/14(月) 19:17:52
>>218-222
スレチ。移動ヨロ。
ttp://pc11.2ch.net/test/read.cgi/tech/1202273631/
224デフォルトの名無しさんsage2008/04/14(月) 21:58:52
こっちじゃない?
http://science6.2ch.net/test/read.cgi/informatics/1160740645/
225デフォルトの名無しさんsage2008/04/14(月) 22:23:08
すまんがちょっと教えてくれ。

Chiken Schemeは簡単に実行形式ファイルが作れるんかの?
226デフォルトの名無しさんsage2008/04/14(月) 22:29:51
Reasoned SchemerのPrologもどきって、本当に動くんだなw
ttp://codepad.org/6uu28twJ

KANREN : a declarative logic programming system
ttp://kanren.sourceforge.net/#mini
227デフォルトの名無しさんsage2008/04/14(月) 22:48:17
>>225
お前のことなんぞ知らんからお前にとって簡単かどうかはお前が判断しろ。
マニュアル通りやってみてできたならお前にも簡単にできるってことだ。
そうでなければ難しいんだろう。
228デフォルトの名無しさんsage2008/04/14(月) 22:52:39
KANRENって「関連」なのかな。
Oleg Kiselyovって日本と研究してるのか?
http://okmij.org/ftp/
229デフォルトの名無しさんsage2008/04/14(月) 23:26:02
Reasoned Schemer
1. Playthings
ttp://codepad.org/buHFpoPQ
230デフォルトの名無しさんsage2008/04/15(火) 01:58:12
HtDPの目次見たけど継続とかlet、letrecは出てこないんだね。Schemerシリーズのほうが
難しそうだ。
231デフォルトの名無しさんsage2008/04/15(火) 03:03:41
>>227
ふむ、chicken schemeっての初めて見てみたけど簡単に実行ファイルが作れるんだな。
232デフォルトの名無しさんsage2008/04/15(火) 06:20:53
>>207
そうそう、和田先生が翻訳メモとして技術用語の翻訳対照表をつけてくれれば、
読みやすかったのに。
233デフォルトの名無しさんsage2008/04/15(火) 11:15:30
schemeをC++プロジェクトに組み込みたいのですが、
組み込みやC++クラスのエクスポートが簡単にできる
ポータブルな処理系ってありますか?
234デフォルトの名無しさんsage2008/04/15(火) 12:10:18
libgaucheとCで書いてextern "C"ってすればいいんじゃね
俺もほとんど知らない。教えてほしい
235デフォルトの名無しさんsage2008/04/15(火) 14:27:24
Chickenはsyntax-caseが使えるんだけど
有理数がないのと多倍長数がないのが残念。
biglooもそうだったような気がするけど
Cにコンパイルする処理系はCの整数型、浮動小数型に縛られる物が多い。
Gambit-CはCコンパイルタイプには珍しく
多倍長数、有理数と正確数表現の複素数(これはGaucheにもない!)があるんだけど
SRFI周りが互換性の無い独自の実装なのが残念。
(たとえばSRFI-22の引数にスクリプトファイル名を含めない、文字列ポートを読み込むと空になる等)
>>233
組み込み系UnixライクOSでも動くとなればguileかScheme48でしょう。
Cでプログラムを書くのも容易だし
ソースに手を入れなくてもターゲットで動く。
但し前者は遅い上にR5RS準拠ではない。(R5RS手続きは網羅してるけど)
後者はR5RS準拠で完成度は高いけどやや重くてやや遅い。
処理系ソースに手を入れる事を厭わないのであればGaucheかGambit-C。
前者は軽くてそこそこ速い。後者はそこそこ軽くて(コンパイルすれば)かなり速い。
PLTScheme(MzScheme)がUnix系全般で動くようになれば最強っぽいんだけど
BoehmGCを移植しただけじゃ動かないのが×。
さらにコンパイルしなくても速いのにコンパイルしても(そんなに)速くならないのはご愛嬌。
236デフォルトの名無しさんsage2008/04/15(火) 15:16:12
>>235
>複素数(これはGaucheにもない!)

あるっしょ
237デフォルトの名無しさんsage2008/04/15(火) 15:18:45
正確数表現の複素数(これはGaucheにもない!)
238デフォルトの名無しさんsage2008/04/15(火) 15:52:35
> (exact? (sqrt -1024))
#t

これはいいsqrt
239デフォルトの名無しさんsage2008/04/15(火) 16:03:30
R5RS-6.2.3
sqrtのような潜在的に不正確な演算は、正確引数に適用されたとき、
可能ならばいつでも正確な答えを算出することが望ましい(が要求はされていない)。
なので処理系依存。
240225sage2008/04/15(火) 20:40:37
>227
参考になった。ありがとう。
241デフォルトの名無しさんsage2008/04/15(火) 23:24:29
>>225
Linuxだと簡単にバイナリ作れた。
winだとコンパイルも通らなかった orz
mingwin32嫌いだ!
242デフォルトの名無しさんsage2008/04/15(火) 23:35:56
>241
あれ、出来なかったっけ?
ちょっと今MinGW環境壊しちゃったので手元で確認できないけど
243デフォルトの名無しさんsage2008/04/15(火) 23:40:20
>>242
できたらgccのバージョンとかライブラリのバージョンさらしてください。

しょぼーん。

#共通環境はsbclが一番良いんじゃないかと思うようになっちゃったのでscheme嫌いになりそう
244デフォルトの名無しさんsage2008/04/16(水) 00:14:09
>>243
Makefile.mingwを使うとchicken-config.hの作成に失敗する。
そこだけ手作業でやったらあとは普通にmakeが走ってる。
今ビルド中。っていうか本家に最新版のWindowsバイナリ置いて無いな。
245デフォルトの名無しさんsage2008/04/16(水) 00:30:12
みんな苦労してでもWindowsdで使いたいんだな。
Windowsは偉大だな。
246デフォルトの名無しさんsage2008/04/16(水) 00:43:18
自分が使いたいというより、より広く使われるものを作りたい、そういうものを作る
ために使いたい、という動機が大きいのでは?
趣味にしても、仕事にしても。
247デフォルトの名無しさんsage2008/04/16(水) 00:53:25
>>228
ttp://scheme2006.cs.uchicago.edu/12-byrd.pdf

KANRENって「関連」みたいだけど中国語。
Chung-chieh Shan(單中杰)というハーバード出身でラトガース大学のAssistant Prof.の人とやった仕事。
248244sage2008/04/16(水) 00:55:30
よくみたらMakefile.mingw-msysってのがあったな。
こっちでやれば一発でいけたのかも。
まぁ、gcc3.4.5で普通にコンパイルはできたよ。
249242sage2008/04/16(水) 02:07:59
>248
漏れもgcc4.3.0 & Makefile.mingw-msysでやってみたけど問題なさそう
250デフォルトの名無しさんsage2008/04/16(水) 02:18:42
>>246
処理系はとりあえずUNIX系の上でつくられて、
そういう尊い方々がWinに移植なさるのですね。
感動しました。
漏れはWinでないと使う気にならないから使ってるだけだが、
いつかそうなりたいね。
251デフォルトの名無しさんsage2008/04/16(水) 02:23:10
とりあえずUNIX上に作られるのはそのほうが楽だからだな。
WindowsのAPIってなんか例外事項が多くてごちゃごちゃしてる感じ。
252231sage2008/04/16(水) 03:00:47
>>248
俺はgcc3.4.2+msysでうまくいったみたい
253デフォルトの名無しさんsage2008/04/16(水) 12:42:00
>簡単に実行形式ファイルが作れる
という観点では
エンドユーザが自分でMinGWを入れるという前提はおかしい

普通の人はVisual C++とMzSchemeを使えばいい
254デフォルトの名無しさんsage2008/04/16(水) 13:28:11
>>253
「エンドユーザ」はMinGWを入れる必要は無いだろ
255デフォルトの名無しさんsage2008/04/16(水) 13:47:15
じゃあ「簡単に実行ファイルを作りたいWindowsユーザ」に訂正
256デフォルトの名無しさんsage2008/04/16(水) 13:54:12
簡単だけど話題としてはスレ違いだね。
257デフォルトの名無しさんsage2008/04/16(水) 15:26:31
簡単だから得意げに説明するのが恥ずかしい気がするけど、注意点を

・ソースファイルと同じ名前のモジュールで包む
 たとえば hello.scm なら
(module hello mzscheme
 (display "Hello, world!")
 (newline))
・--exeオプション
 たとえば mzc --exe hello hello.scm
・bccに対応していると書いてあるが無償版のbccでは失敗するみたい
258デフォルトの名無しさんsage2008/04/16(水) 19:15:29
>>235
とりあえず、いろいろ試してみました。

guile)
・GPLライセンス
・試してないがVCでコンパイルできなさそう

Scheme48)
・VCでもコンパイル可能
・ただ、実行の際に〜.imageファイルが必要なのと、
 その作成にScheme48インストールディレクトリのフルパスが必要・・・
・(美学の問題だが)関数名がおかしいのと、コンパイル時に
 「○○関数は未定義です」「○○は初期化されていません」みたいな警告が普通に出てくる。

chiken)
・VCでもコンパイル可能のはず。自分には無理だった。
・(pcreを使っているので多分)正規表現がマルチバイトをサポートしていない。

Gauche)
・コアはVCでコンパイル可能だが、拡張ライブラリが全滅
・クラス登録機構がGNUのリンカの実装に依存している。VCだと拡張ライブラリを作ること自体が難しそう。
・基本的にposixべったり
・デフォルトで日本語が使える。ドキュメントも日本語
259デフォルトの名無しさんsage2008/04/16(水) 19:16:14
Gambit-C)
・VCでコンパイル可能
・自動生成されたソースが長すぎるため、IntelliSenseの更新に長大な時間がかかる。たまに開発環境自体が落ちる
・(サイズが)すごく大きいです・・・

総括)
こうやって並べてみると、日本語が使えるGaucheか、Gambit-Cが問題が少なさそうですね。
自分は多分、gaucheをstatic libraryで使うことにすると思います。
個人的にはluaのようにもっと手軽に組み込める処理系があると嬉しいのですが、文句ばっかり言ってもしょうがないですよね。
>>235さん、ライブラリの紹介どうもありがとうございました。
260デフォルトの名無しさんsage2008/04/16(水) 21:36:34
Windowsで動かしたいというのは判るが、VCでコンパイルしたいという理由がよくわらかん。
MinGWじゃ駄目なのかい。
261デフォルトの名無しさん2008/04/16(水) 21:42:41
IntelliSenseが使いたいのか
頭のとんがった上司がいるのか
その両方か
262デフォルトの名無しさんsage2008/04/16(水) 22:09:15
>>259
Gauche-win32-0.8.13.exeじゃだめなの?
263デフォルトの名無しさんsage2008/04/16(水) 22:16:20
exeがつくれないとプログラムをしている気にならないんじゃないかな?
Windowsしか知らなかったころはexeをつくれて一人前の開発環境というイメージだった。
264デフォルトの名無しさんsage2008/04/16(水) 22:21:32
>>263
自分で使うコードなら別にexeにする必要ないんだけど、ちょいと配布したりするのに実行環境必要とか言うと困るからじゃないの?

どんなプログラムだかしらないけど。
265233sage2008/04/16(水) 22:28:13
>>260
理由1、VCの便利な機能が使いたい
理由2、schemeという小さな言語がVCでコンパイルできない理由がわからない
仕様も小さいんだしVCでもコンパイルさせてくれよ・・・
というのが本音です。

>>261
> IntelliSenseが使いたいのか
どちらかというとこっちです。
でも後者の方が面白いので、できればこっちを強弁したいですねw

>>262
すみません、書いてませんでしたが自分は>>233です。
C++に組み込むので、別途インストールというのはちょっと考えられないのです。
266デフォルトの名無しさんsage2008/04/16(水) 22:33:41
>>260
MinGWはMSYSが要るのか要らないのかはっきりしてほしいw
267デフォルトの名無しさんsage2008/04/16(水) 22:39:02
POSIX べったりという表現が面白かった
確かに逆から見たらそう感じても不思議じゃないね
268デフォルトの名無しさんsage2008/04/16(水) 22:47:21
>>266
実行だけなら要らない。ランタイムのDLLさえも要らない場合が多い。
最近のVCはRuntime(もちろん自由に再配布できるが)を入れないといけないことが多い。
VCじゃなきゃ嫌んの人はMinGWをよく知らないだけではないかと思う。
269デフォルトの名無しさんsage2008/04/16(水) 22:51:25
Schemeは実はC及びC++(のスタックフレーム)とは相性が悪い。
ファーストクラスの継続があるため
関数からreturnする時に
単純にスタックフレームを開放できない。
また、末尾呼び出しの最適化は
C及びC++では行えない。
(だからSchemeの場合はバイトコードインタプリタの方が
効率が良かったりする。)
これらの理由により、ネイティヴコードをポータブルに吐く方法がない為
GCC用のソースは手を入れない限り他の処理系でコンパイルできない場合が多い。
270デフォルトの名無しさんsage2008/04/16(水) 22:58:01
>>265
> 理由2、schemeという小さな言語がVCでコンパイルできない理由がわからない
> 仕様も小さいんだしVCでもコンパイルさせてくれよ・・・
君がScheme処理系を書けば良いのでは?
271デフォルトの名無しさんsage2008/04/16(水) 23:43:31
ちなみにschemeは仕様がすっきりしているだけで、
実行環境はさほど小さくない。処理系もけっこう大きい。
272デフォルトの名無しさんsage2008/04/17(木) 00:18:53
書けねえよ
273233sage2008/04/17(木) 00:22:42
>>268
自分のプログラムでは外部ランタイムは無用です。
あと全く別の問題として、schemeのために開発環境を変えるということ自体がちょっと嫌なんです。

>>269
・ネイティブスタックを使わず、自前のスタックかメモリを確保すれば
 継続でもコルーチンでもポータブルに作れます(作れるはずです)
・バイトコードを採用すれば、処理系のコードは自然とポータブルになります
・ネイティブコードをポータブルに吐く方法なんて自分は一つも知りません

って、あまり面白くないツッコミですみません。
あと、schemeがポータブルに実装できないわけではですよ。
実際、明らかにwindowsのようなマイナーな環境(?)を無視した作りのgaucheでも、
コア部分はコンパイルできるわけですし。

>>270
今までは、あまり実用にならなそうなマイ言語を作っている人を、
内心バカにしたりもしていたのですが(すみません)
schemeでも他の言語でも、自作の処理系が一つあると意外なところで使えたりするのかもしれませんね。
scheme作るのも面白そうなので、時間があれば是非やってみたいです。
274デフォルトの名無しさんsage2008/04/17(木) 00:27:05
スキルないのが丸分かりの自己紹介ありがとう。
275デフォルトの名無しさんsage2008/04/17(木) 00:44:29
漏れも学生時代はMacではHyperCardを必要とするスタックは軟弱物。Pascal or Cで実行形式をつくるのがカコイイだと思っていたし、
Win32でもランタイムを必要とするVBを見下し、CをつかってもMSVCRTの依存すら排除しようとしていた経験のある俺には233の気持がわかる気がする。
276デフォルトの名無しさんsage2008/04/17(木) 01:44:38
ゲーム作るときはマシン語モニタをBASICで自作することから始める時代の話だな。
そんなMSXが許されるのは小学生までだよねー
277デフォルトの名無しさんsage2008/04/17(木) 01:49:42
>>273
GaucheはWindowsを無視はしてないよ。
多少なりともVC++を意識した変更が入っていたはず。

ttp://practical-scheme.net/wiliki/wiliki.cgi?Gauche%3aWindows%2fVC%2b%2b

を参照するといいと思う。マンパワーが足りないから進捗が遅いだけで。

成果をフィードバックしてくれるなら、向こうにとっても渡りに船だろうし、
本気でやる気があるなら、WiLiKiに書き込んでみればいいんじゃない?
上手く協力できれば、双方にとって良い結果になると思うけど。
278デフォルトの名無しさんsage2008/04/17(木) 02:12:31
スキームの質問

今、手元にThe Little Schemerがあるんだけど
この本に書いてある例題は全部
Dr.schemeで実行できるの?
279デフォルトの名無しさんsage2008/04/17(木) 03:33:26
1行で全部の処理をするんでなくて、
まずcdrする
次にcarする、
最後にcdrする、
と3段階に分けて処理をしたいんだけど、
どうすればいいの?
BASICみたいに
a=(a,b,c)
みたいにリストを変数に代入して、
ってできるの?
280デフォルトの名無しさんsage2008/04/17(木) 04:21:40
(let* ((a '(a b c))
(a (cdr a))
(a (car a))
(a (cdr a)))
a)
281デフォルトの名無しさんsage2008/04/17(木) 04:27:41
(progn
(setq a '(a b c))
(setq a (cdr a))
(setq a (car a))
(setq a (cdr a))
)
Lispならこんなのでいいんでないの
282デフォルトの名無しさんsage2008/04/17(木) 06:53:06
CL全然知らないんだけど手続きぽく書きやすいのかな。
283デフォルトの名無しさんsage2008/04/17(木) 07:11:22
端っこに括弧がいるから慣れない人は書きにくいと思う。
Lisp脳が育つと括弧を空気のように感じるようになる。
284デフォルトの名無しさんsage2008/04/17(木) 07:41:53
いや、Schemeにくらべてってこと。
285デフォルトの名無しさんsage2008/04/17(木) 07:43:50
再帰じゃなくloop使うと手続き型っぽくなるよ。(カッコだらけだけど)
286デフォルトの名無しさんsage2008/04/17(木) 08:00:11
>>273
> あと全く別の問題として、schemeのために開発環境を変えるということ自体がちょっと嫌なんです。
いずれEmacs+Schemeに慣れればVisual Studioには戻りたくなくなる。
そうでなければそもそもSchemeには縁がない。
287デフォルトの名無しさんsage2008/04/17(木) 08:21:30
>>284
SICPやSchemerシリーズやっている人は、
schemeが手続き型っぽく書けないと思い込んでいる人が多い。
ただそれらのテキストが関数型っぽく書いているというだけなのに。
Common Lispとさほど変わらない。
288デフォルトの名無しさんsage2008/04/17(木) 08:57:25
>>287
本当?かなり違うと思ってた。

例外とかgotoとかを手続型と
さほどかわらないように書くにはどうするの?
289デフォルトの名無しさんsage2008/04/17(木) 09:32:52
手続き型っぽいのがgoto?
290デフォルトの名無しさんsage2008/04/17(木) 09:34:13
つ loopマクロ
291デフォルトの名無しさんsage2008/04/17(木) 09:43:41
つ 継続
292デフォルトの名無しさんsage2008/04/17(木) 10:06:59
; f(g(h(x)))
(apply (fcompose f g x) x)
みたいなものができる筈なんで>>279の処理も
(fcompose-and-apply cdr car cdr a)
みたいにできるfcompose-and-apply(仮)が書ける気がせんでもない

293デフォルトの名無しさんsage2008/04/17(木) 10:08:35
tagbody は?
294デフォルトの名無しさんsage2008/04/17(木) 10:13:13
emacs lispならconditon-case(try..catch)とかsignall, error(throw)とか
unwind-protect(finally)とかあるから殆んど手続き型と同じように書けるよ
R6RSにも似たようなものがあるはず
295デフォルトの名無しさんsage2008/04/17(木) 11:43:51
>>288
例外はr6rsに入ってただろ。手軽にやりたいなら継続呼べばいいし。
goto相当のジャンプも継続が使えるけど、
継続はラベルじゃなくてオブジェクトなので使い勝手をgotoみたいにしたいなら
自前でラップしなきゃ駄目かもな。
296デフォルトの名無しさんsage2008/04/17(木) 13:01:50
S式でいいならマクロでなんでもできる。CLならCインタープリタの実装まであるくらいだ。
297デフォルトの名無しさんsage2008/04/17(木) 14:51:41
Google Apps APIs をlispから使う方法ないのでしょうか?
298デフォルトの名無しさんsage2008/04/17(木) 17:02:27
>>297
使えよ
299デフォルトの名無しさんsage2008/04/17(木) 17:08:01
ないならnilを、あるなら使い方を返していただきたいのですが。
300デフォルトの名無しさんsage2008/04/17(木) 17:32:41
>>299
(values nil
"ttp://www.cliki.net/web%20API"
"Clikiにはズバリはないみたいだけど、
cl-ajaxとかでできるのかな。"
"よくわからない。")
301デフォルトの名無しさんsage2008/04/17(木) 21:12:46
>>247
d。miniKANRENは徐々に進化しているようでした。
leanTAP⇒KANREN⇒miniKANREN⇒alphaKANREN
ttp://www.cs.indiana.edu/~webyrd/alphamk/alphamk.pdf
ttp://kanren.sourceforge.net/

ParentheCというパーサー(c⇒scheme)を見つけました。
パターンマッチはolegのものを流用してます。
ttp://www.cs.indiana.edu/classes/b521/newpc/ParentheC.pdf
ttp://www.cs.indiana.edu/classes/b521/notes.html

Prologもどきと軽く思ってたけどReasoned Schemerって意外に深いのかな。
型推論のHindley-Milner type inferenceとかOCAMLみたいw
302デフォルトの名無しさんsage2008/04/17(木) 21:27:16
CPSによるパターンマッチのマクロ by Oleg Kiselyov.
ttp://www.cs.indiana.edu/l/www/classes/b521/pmatch.pdf
303277sage2008/04/17(木) 23:07:24
>>233の人ー、WiLiKiで、VC++の項目とか、
Windows向けインストーラの話とか、
色々更新されたから行っといでー。

釣りじゃないなら、話し合う絶好の機会だよー。
304デフォルトの名無しさんsage2008/04/17(木) 23:33:37
>>286
schemeの処理系を書く環境と
schemeを書く環境はちょっと違うと思うぞ。
305デフォルトの名無しさんsage2008/04/17(木) 23:35:06
>>304
SchemeでSchemeを書けばいいジャマイカ
306デフォルトの名無しさんsage2008/04/17(木) 23:42:20
いまおれいいこといった
と思ってるに違いない
空気読めない奴の発言は反吐が出る
307デフォルトの名無しさんsage2008/04/17(木) 23:49:17
>>306
何でそんな事でいきなりヒートアップするんだよ。

まあ、元の話題はC++にSchemeを組み込みたい、って話だったから、
>>286のレスが明後日の方向を向いてるとは、俺も思うけどさ。
308デフォルトの名無しさんsage2008/04/18(金) 00:21:32
>>307
きっと胃が悪いんだよ<反吐が出る
309デフォルトの名無しさんsage2008/04/18(金) 00:53:51
SchemeでSchemeの処理系を書いてParentheCでCにポートすればC++にSchemeを組み込めるな。
Cで書かれたTinySchemeをマージするほうが簡単かもしれないがw
310デフォルトの名無しさんsage2008/04/18(金) 00:59:13
SchemeでSchemeの処理系を書くならLisp in Small Piecesのサポートページに色々情報がある。
ttp://pagesperso-systeme.lip6.fr/Christian.Queinnec/WWW/LiSP.html
311デフォルトの名無しさんsage2008/04/18(金) 01:12:59
なんか知らんが1人イラついてる人が居るな。
本当に自分の方がレベルが高いなら、
別に同じレベルと思われても構わないという態度で
淡々としてれば良いのさ。

あるいはそんなものスルーして自分の興味のある別の、
レベルの高い話を振ればいいよ。
312デフォルトの名無しさんsage2008/04/18(金) 01:15:14
(eval (read))ですね、わかります
313デフォルトの名無しさんsage2008/04/18(金) 01:16:33
>>278
本の中に動かない例があるけどw
それ以外は全部動くよ。当然だけど。


DrSchemeのライブラリって面白いのが結構あるなぁ
ttp://planet.plt-scheme.org/

HtDPやEOPLだけじゃなくSICPやSimplyのためのpltがちゃんとある。
でもLittle用はない。なくても動くから。
314sage2008/04/18(金) 11:25:53
MOP レシピ集みたいなページはありませんか?
315デフォルトの名無しさんsage2008/04/18(金) 12:00:39
XML-MOPのコードはどうよ?
316デフォルトの名無しさんsage2008/04/18(金) 17:50:13
ソケット関係で挫折しそうなんだけど、苦労するといいことあるのかな
同じ内容のpythonのプログラムは動くこと確認したんだけど
317デフォルトの名無しさんsage2008/04/18(金) 18:04:18
仕事じゃないなら好きにすればいい。
318デフォルトの名無しさんsage2008/04/18(金) 18:36:08
>>316
pythonでやれば?
319デフォルトの名無しさんsage2008/04/19(土) 01:40:56
http://www.cs.indiana.edu/classes/c311/pmatch.scm
ここのpmatchを、define-macroで書き直すとどうなるでしょうか。
syntax-rules内の'...'の展開のされ方がよく判らんのです。
1つのパターン内に'...'が複数使われているのがあって、
これは残りの同一のパターンにマッチするという事なんでしょうか。

例えばこの部分とか
((_ (rator rand ...) cs ...)
(let ((v (rator rand ...)))
(pmatch v cs ...)))
320デフォルトの名無しさんsage2008/04/19(土) 01:53:38
それぞれに(別々に)マッチするって感じだね。
これだから衛生的なマクロは嫌いなのだ。
321デフォルトの名無しさんsage2008/04/19(土) 01:54:12
質問が判りにくいですね。つまり上のrandの後の ...と、
csの後の ... の中身は違っててもいいのかどうか?
ってことです。
'...'はその文脈の残り((car . cdr)のcdr)という意味しかない
と考えてよいのでしょうか?
322デフォルトの名無しさんsage2008/04/19(土) 01:54:44
>>320
やはりそうですか。
だとするとまぎらわしいですね。
323デフォルトの名無しさんsage2008/04/19(土) 02:00:14
あと1つ確認したいのですが、>>319の意味を変えずに
((_ (rator rand . rest1) cs . rest2)
(let ((v (rator rand . rest1)))
(pmatch v cs . rest2)))
こういう風に書き直す事は可能でしょうか?
リストじゃないからできないとか昔どこかで見たような気がするのですが。
324デフォルトの名無しさんsage2008/04/19(土) 02:21:56
rand ... の部分は0個でもマッチする
rand . rest1 と書くと1個以上になるから意味が変わってしまう
325デフォルトの名無しさんsage2008/04/19(土) 02:30:39
そうだったんか…
キモイなそれ
326デフォルトの名無しさんsage2008/04/19(土) 02:53:15
>>324
つまり書き直すなら
((_ (rator . rand) . cs)
(let ((v (rator . rand)))
(pmatch v . cs)))
という事でしょうか?
327デフォルトの名無しさんsage2008/04/19(土) 03:00:02
そうだけど実際に使って確認するのが一番いいね

(define-syntax hoge
(syntax-rules ()
((_ x ...) (list x ... x ...))))
デフォルトで ,@ がついてるようなイメージ

(defmacro hoge (&rest x)
`(list ,@x ,@x))
328デフォルトの名無しさんsage2008/04/19(土) 03:15:54
((_ ((symbol value) ...) . body)
((lambda (symbol ...) . body) (+ value 1) ...))

とか、すごい展開をするんだよね、 ... って。
329デフォルトの名無しさんsage2008/04/19(土) 11:00:44
Commom LISPの方はSchemeのそういうコードを移植したい時
どうしてます?defmacroに変換するようなのないかな。
330デフォルトの名無しさんsage2008/04/19(土) 13:00:59
これですね
Scheme Macros for Common Lisp
http://www.ccs.neu.edu/home/dorai/mbe/mbe-lsp.html
331デフォルトの名無しさんsage2008/04/19(土) 22:50:21
TinyScheme
ttp://tinyscheme.sourceforge.net/

TinyScheme Extensions
ttp://heras-gilsanz.com/manuel/tsx.html

OOPS Tiny Scheme Extension
ttp://aladdin.sourceforge.net/oops.php

TinyScheme for Zaurus
ttp://www.alphageeksinc.com/tinyscheme/
332デフォルトの名無しさんsage2008/04/19(土) 22:53:44
>>309
ParentheCってlambdaすら処理できないみたいだよ。
これでCにポートしろなんて詐欺もいいとこ。
333デフォルトの名無しさんsage2008/04/19(土) 23:29:28
使い方を理解しないで使うからジャマイカ?
334デフォルトの名無しさんsage2008/04/19(土) 23:56:39
トランスレータに使い方も糞もあるか
335デフォルトの名無しさんsage2008/04/20(日) 00:29:25
Scheme処理系は腐るほどある
ライブラリも (C/C++なら) たくさんある
後はそれを組み合わせることを考えよう
336デフォルトの名無しさんsage2008/04/20(日) 00:34:22
コイツ>>334、なんでこう喧嘩腰なんだろな。氏ね。
337デフォルトの名無しさんsage2008/04/20(日) 00:36:49
糞チョンとシナチク氏ね。
338デフォルトの名無しさんsage2008/04/20(日) 01:09:37
ジャマイカ発言の後は荒れるんだよ。
339デフォルトの名無しさんsage2008/04/20(日) 01:32:46
とりあえず>>334はいっぺん氏ね
340デフォルトの名無しさんsage2008/04/20(日) 03:36:46
>>333
あれって使い方でどうにかなるもんなの?
341デフォルトの名無しさんsage2008/04/20(日) 09:17:16
DRAKMAがubuntu 7.10 sbclのasdf-installでこけて止まる
342デフォルトの名無しさんsage2008/04/20(日) 12:11:37
>>341
SBCL 1.0.16
DRAKMA 0.11.5
ubuntu 7.10
で今試したけど大丈夫だった。
343デフォルトの名無しさんsage2008/04/20(日) 18:55:28
psyntaxがGaucheでも使えるって書いてあるけど、使い方わかんねー。
と思ってたら一発で使えるように同梱されたビルドがあった。
http://saito.s4.xrea.com/wiliki.scm?Gauche
psyntax.exeってのがそうみたい。
exeにするのってどうやったんだろ?
344デフォルトの名無しさんsage2008/04/20(日) 20:35:00
どうでもいい
345デフォルトの名無しさんsage2008/04/20(日) 20:42:29
またexe厨か…
346デフォルトの名無しさんsage2008/04/20(日) 21:38:38
schemeでなくてlispでexe作ったら?
newlispなんかだと簡単だよ
SBClやCormanLispなんてのもあるけど
347デフォルトの名無しさんsage2008/04/20(日) 22:05:06
別に言語まで変える必要もないと思うけど。
処理系のソースがあるんならschemeのソースを埋め込んで
スタートアップで呼び出すようにすれば完成でしょ。
VMで動くようなのはコンパイル後のやつ入れとく。
これだからオプソって意味ないんだよな。
348デフォルトの名無しさんsage2008/04/20(日) 22:10:07
>>343
Gaucheのtarball落としたら中にgencompってのがある。
それでVM用コードにして適当なmainだけ書いてgccでコンパイル。
349デフォルトの名無しさん2008/04/20(日) 22:24:02
「プログラミングGauche」でSchemeデビューしようとしていきなりつまずいてます。
(define 'a #f)
(set! a 1)
(display a)

これは

gosh> quote
gosh> 1
gosh> 1#<undef>

となって動くんですが

(define 'line #f)
(set! line "foo\n")
(display line)

と変えるとエラーになります。

gosh> quote
gosh> *** ERROR: symbol not defined: #<id 0x80eb100 user::line>
Stack Trace:
_______________________________________
gosh> *** ERROR: unbound variable: line
Stack Trace:
_______________________________________

どこが間違ってるんでしょうか?
350デフォルトの名無しさんsage2008/04/20(日) 22:32:39
ワロタ
(define 'a
(define 'line
ここが間違ってる。それぞれ
(define a
(define line
が意図するものだと思う。

(define 'a

(define quote (lambda(a)〜
と解釈される。
351デフォルトの名無しさんsage2008/04/20(日) 22:38:57
>>350
多分 *scheme* バッファの中で一度 (define a なんとか) を
実行してたから、a が定義されていたんですね。
*scheme* バッファを再起動してたら両方とも動かなくなって
気付いたと思うのですが。

ありがとうございました。
352デフォルトの名無しさんsage2008/04/20(日) 22:46:14
こういう記述間違いは処理系作者からは斜め上で予測不可能なんだよな。
quoteを再定義したいなんて思わんし、エラーにすべきか。
353デフォルトの名無しさん2008/04/20(日) 23:51:39
Gauche scheme interpreter, version 0.8.3 [utf-8,pthreads]
という環境で、
#!/usr/bin/gosh
(define (main args)
  (while (not (eof-object? (set! line (read-line))))
  (print line))
  0)
というスクリプトを書いて euc-jp なテキストファイルを読み込ませたら
~$ gosh test.scm <text.txt
*** READ-ERROR: Read error at "(stdin)":line 2: read-line: encountered illegal byte sequence: #*"\xc1\xcf\xc0\xa4\xb5\xad\t1\t1\t"
Stack Trace:
_______________________________________
  0 (read-line)
  At line 3 of "./test.scm"
  1 (letrec ((do (lambda () (if (not (not (eof-object? (set! line (rea ...
  [unknown location]
というエラーになりました。
euc-jpなままで読んでeuc-jpのまま書き出すにはどうすればいいのでしょうか?
354デフォルトの名無しさんsage2008/04/21(月) 00:20:03
>>353 gauche.charconv
355デフォルトの名無しさん2008/04/21(月) 00:46:50
こうなりました。with-ports を使おうとしたら、
*** ERROR: unbound variable: with-ports
となりました。何故?

#!/usr/bin/gosh
(use gauche.charconv)

(define raw-in (current-input-port))
(define raw-out (current-output-port))
(define in (wrap-with-input-conversion raw-in "eucjp"))
(define out (wrap-with-output-conversion raw-out "eucjp"))

(define line #f)

(define (main args)
  (while (not (eof-object? (set! line (read-line in))))
  (display (string-append line "\n") out))
  0)
356デフォルトの名無しさんsage2008/04/21(月) 03:59:58
何故?とか言う前にフォルダ内検索しろよ
357デフォルトの名無しさんsage2008/04/21(月) 05:06:07
slimeで対応する() に自動で色がつかなくなることがあるのだけど
どうすればもどるの?
他に開いてるlispのバッファーを全部kill bufferすれば直るけど
buff殺さないで直したい
358デフォルトの名無しさんsage2008/04/21(月) 05:38:24
>>357
どういう環境だとそうなるの?
漏れはそんな現象に遭遇したことない。
show-paren-modeがなんらかのタイミングでoffになったとか?
359デフォルトの名無しさんsage2008/04/21(月) 06:30:08
C-c C-p
を何度もしてるといつのまにかなる
360デフォルトの名無しさん2008/04/21(月) 08:21:48
>>356のヒントをもとに検索してみた。
/usr/share/gauche/0.8.3/lib$ find . -type f | xargs grep with-ports
/usr/share/gauche/0.8.3/lib$
なにもみつからなかった。
361デフォルトの名無しさんsage2008/04/21(月) 13:05:06
lispの場合、どのぐらいの大きさのprogramになったらファイルを分けるの?
362デフォルトの名無しさんsage2008/04/21(月) 14:45:07
大きさを基準にしては分けない
363デフォルトの名無しさんsage2008/04/21(月) 16:52:39
>>361
package毎に分割しない?
364デフォルトの名無しさんsage2008/04/21(月) 19:36:23
日本語の正規表現処理はできないと思っていいのでしょうか?
sbclなのですがどの日本語コードを使うのがお勧めなのでしょうか?
365デフォルトの名無しさんsage2008/04/21(月) 20:48:56
cp932と言ってみるテスト
366デフォルトの名無しさんsage2008/04/21(月) 21:02:05
Schemeのオブジェクト指向

BOS (Bryan's Object System)
MEROON ・・・Christian Queinnecによる。情報があまり無いけど有限要素法とかつかえるらしい。runge-kutta-4にあきたらやってみる。
SCOOPS (Scheme Object Oriented Programming System)
Tiny CLOS ・・・なんとたったの850行!"The Art of the Metaobject Protocol"に出てくるsimple CLOSよりコンパクトな学習用。
YASOS (Yet Another Scheme Object System)
367デフォルトの名無しさんsage2008/04/21(月) 21:16:55
>>364
UTF-8で普通に使える処理系が多い(または増える)と思う
368デフォルトの名無しさんsage2008/04/21(月) 21:26:01
>>367
BOMあり?8Nでおk?
369デフォルトの名無しさんsage2008/04/21(月) 21:29:06
処理系によるんじゃね?
370デフォルトの名無しさんsage2008/04/21(月) 21:49:45
>>355
with-portsは組み込み手続きだから見つからないって変だな。
プラットフォームは何? インストールはどうやった?
371デフォルトの名無しさんsage2008/04/21(月) 22:38:45
一方exe厨はバイナリを配った
372355sage2008/04/21(月) 22:53:03
>>370
Debian sarge(3.1)で、aptitudeからインストールしました。
Gaucheのバージョン(0.8.3)が古過ぎるんでしょうか。

~$ aptitude show gauche
パッケージ: gauche
ステータス: インストール済み
自動的にインストールされる: no
バージョン: 0.8.3-3
優先度: 任意
分類: interpreters
保守担当者: Hatta Shuzo <hattas@debian.org>
展開サイズ: 4096k
依存: libc6 (>= 2.3.2.ds1-4)
提案: slib
推奨: r5rs-doc, gauche-doc
詳細: A Scheme implementation designed for script writing
Gauche is a Scheme implementation developed to be a handy script interpreter, which
allows programmers and system administrators to write small to large scripts for their
daily chores. Quick startup, built-in system interface, native multilingual support are
some of the author's goals.
~$ gosh -V
Gauche scheme interpreter, version 0.8.3 [utf-8,pthreads]
~$ gosh -i
gosh> with-input-from-port
#<subr with-input-from-port>
gosh> with-ports
*** ERROR: unbound variable: with-ports
Stack Trace:
_______________________________________

373デフォルトの名無しさんsage2008/04/22(火) 00:09:50
Gaucheスレ別に立てて関係者がサポート汁。
374デフォルトの名無しさんsage2008/04/22(火) 00:28:56
0.8.13のtypoかと思ってたらほんとに0.8.3か。古すぎるだけだと思う。

>>373 ごもっとも。WiLiKiの初心者の質問箱とかの方がふさわしい。
375デフォルトの名無しさんsage2008/04/22(火) 01:22:53
よくあるまとめwikiサイトみたいなの作れば良いのに。
376デフォルトの名無しさんsage2008/04/22(火) 01:25:54
Schemeのループの構文がわからないので教えてください。
下に書いたコードのbreakがうまく動かないのですがどう書いたら正しいのでしょうか?
大元はRnRSに載っているrunge-kutta-4の計算で、元々は無限ループです。

(letrec (
(n 100)
(ls '())
(loop (lambda (s)
(if (not (= n 0))
((set! n (- n 1))
(newline)
(write (head s))
(loop (tail s))))
(break the-states))))
(loop the-states))
377デフォルトの名無しさんsage2008/04/22(火) 01:45:25
((set!
こんな使い方はない
(break
breakはどこにも定義されてない
378デフォルトの名無しさんsage2008/04/22(火) 03:11:42
そのbreakはどこを参考にして持ち出してきたの?
379364sage2008/04/22(火) 10:06:06
CL-PPCREで日本語を含むパターンを見つけたかった

( scan [ホゲ(プログラム中に直接書いた日本語)]+   , ホゲ(ファイルから読み込んだ日本語) )

同じ ホゲ という単語が入ってるのに認識しなかった
380364sage2008/04/22(火) 10:10:58
(print ホゲ(ファイルから読み込んだ日本語))

をslimeでC-C C-P すると動くが C-C C-Cすると動かない(sbcl)

sbcl --load nihongo.lisp
でも動かない
381デフォルトの名無しさんsage2008/04/22(火) 10:28:40
>>379
sbclはエンコーディング設定が良くわからないけど、
CLispではCL-PPCREで日本語が問題なく使えた。
382デフォルトの名無しさんsage2008/04/22(火) 14:23:17
最近, あちこち SICP だらけなのは SICP の邦訳だ出たせい?
こんなん有り難がって読むくらいだったら, ファイン万物理学読めよorz
383デフォルトの名無しさんsage2008/04/22(火) 14:36:12
最近?
384デフォルトの名無しさんsage2008/04/22(火) 14:42:04
両方読めばいいじゃん。
385デフォルトの名無しさんsage2008/04/22(火) 14:44:21
>>380
ファイルのエンコーディングもsbclの設定もどうなっているか分からないけど、
漏れの手元のutf-8に対応している処理系なら軒並みできている。
設定は各処理系のマニュアルを参照するのが一番確実。
386デフォルトの名無しさん2008/04/22(火) 16:13:01
Expected class definition, found ( which may not be written here
ってどういうエラー?
387デフォルトの名無しさんsage2008/04/22(火) 16:14:33
>>386
エラー原因書いてあるじゃん。
388デフォルトの名無しさんsage2008/04/22(火) 16:17:25
教科書もなくはじめて実行してるのでわからないのです。
どっかのサイトからコピペしたらこういうエラーが
389デフォルトの名無しさんsage2008/04/22(火) 16:19:56
何の処理系とかどういうコードかとかどのサイトからとかを書かないのは何故?
390デフォルトの名無しさんsage2008/04/22(火) 16:24:40
例えばこういうのだったら
(define my-abs
(lambda (x)
(cond ((< x 0) (-x))
((= x 0) 0)
(else x))))

一番前の(にマーカがついててエラーメッセージがでます
どのプログラムはってもこういうメッセージがでるんですけど
391デフォルトの名無しさんsage2008/04/22(火) 18:00:25
>>390
君の場合は、もう少し他人とのコミュニケーションの取り方から
勉強した方が良いよ。
392デフォルトの名無しさんsage2008/04/22(火) 18:00:35
>>389
人の善意を当てにしてるんじゃない?
なんかそういう質問の仕方増えてきたよね。
ここ親切だからなー。
393デフォルトの名無しさんsage2008/04/22(火) 18:06:07
>>386
それただの英語だと思って読んでみな。
394デフォルトの名無しさんsage2008/04/22(火) 18:32:46
>>376-378
Schemeでbreakを使ってる例:
ttp://www.geocities.co.jp/SiliconValley-PaloAlto/7043/
ttp://www.cs.grinnell.edu/~stone/events/scheme-workshop/quicksort.html
ttp://merd.sourceforge.net/pixel/language-study/various/callcc/scheme.html

(letrec (
(n 100)
(loop (lambda (s)
(if (not (= n 0))
(begin (set! n (- n 1))
(newline)
(write (head s))
(loop (tail s)))))))
(loop the-states))

これで動くでしょう。breakいらないよ。
395デフォルトの名無しさんsage2008/04/22(火) 18:43:09
>>376-378

ttp://practical-scheme.net/gauche/man/gauche-refj_102.html

SRFI−1にもbreakは入っている。
396デフォルトの名無しさんsage2008/04/22(火) 18:44:59
でも、Schemeでbreakなんて使わないよなJK。www
397デフォルトの名無しさんsage2008/04/22(火) 18:45:02
まあ、紛らわしいよなw
398デフォルトの名無しさんsage2008/04/22(火) 20:28:16
runge-kutta-4を実際に走らせた。

ttp://codepad.org/gSEoxetW
399デフォルトの名無しさんsage2008/04/22(火) 22:10:25
>>382
Feynman Lectures on Computationも読んだけどけど何か?
SICPにはrunge-kuttaが載ってるけどFeynmanには載ってない。
Feynman厨ウザ
400デフォルトの名無しさんsage2008/04/22(火) 22:45:12
「Lisp文化にはLisp 1.5 → MacLisp → CommonLisp の『MIT系Lisp文化』・・・」という文書に出会った。
ほかの系統にはどんなのがあるのでしょうか?GNU系とかかな?w
401デフォルトの名無しさんsage2008/04/22(火) 22:51:50
それと対比するならInterlispで代表されるXerox系Lisp文化じゃね?
GNUとか出てくるよりずっと前の話だよ
402デフォルトの名無しさんsage2008/04/22(火) 22:56:39
>>400
文化じゃなくて処理系のダイアグラムならあるよ
http://www.softwarepreservation.org/projects/LISP/
http://www.dreamsongs.com/NewFiles/Hopl2Slides.pdf

文化って意味だと PARC が別系統の最有力なのかな?
良く知らんけど。
403デフォルトの名無しさんsage2008/04/22(火) 23:27:15
Lisp 1.5 Programmers Manual
ttp://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf
404デフォルトの名無しさんsage2008/04/23(水) 02:43:06
GNUなんてただのパクリ集団じゃん
405デフォルトの名無しさんsage2008/04/23(水) 02:46:52
よくわからないなら書かないほうがいいよ
406デフォルトの名無しさんsage2008/04/23(水) 03:22:16
いや、本質をよくとらえている。
407デフォルトの名無しさんsage2008/04/23(水) 03:24:13
自画自賛乙
408デフォルトの名無しさんsage2008/04/23(水) 03:45:33
GNUを擁護したがるのは都合の良い解釈ばっかり見てる
最近知ったやつだけだろ
409デフォルトの名無しさんsage2008/04/23(水) 04:06:16
どうしてもGNUが叩きたいという奴以外にとってはどうでもいいだろ。
410デフォルトの名無しさんsage2008/04/23(水) 04:14:24
まぁ、GNU知りたての学生さんは
「GNUを叩いてる俺って、なんてわかってる奴なんだろう♪」
ってなもんだわな。
411デフォルトの名無しさんsage2008/04/23(水) 05:21:09
>>408
都合の良い解釈もなにも、GNUのポリシーは単純だし、
嫌ならGNUのソフトは使うべきじゃないってくらい単純な話だと思うんだよね。
スレ違だから、他んとこ行って欲しいんだけどw
412デフォルトの名無しさんsage2008/04/23(水) 05:25:58
なあ、既成の言語の機能をlispやschemeで
実装してしまうスレ立てないか?
413デフォルトの名無しさんsage2008/04/23(水) 06:30:06
>>412
lisp発祥でない機能で、面白いのってどういう機能があるんだろうね。
昔にlispでやってたら駄目なわけだよね?
414デフォルトの名無しさんsage2008/04/23(水) 07:27:59
なんで?
多分スレの目的は既成の言語を馬鹿にして諭す事だから
lisp視点で面白いのかは判らないけど
415デフォルトの名無しさんsage2008/04/23(水) 08:00:15
>>412
こういうのか?
(define alias define)
416デフォルトの名無しさんsage2008/04/23(水) 08:03:33
>>414
なんで、って言われても、そうなの? >413
まあ、なんらかの確信があるんだろうなwww
417デフォルトの名無しさんsage2008/04/23(水) 08:10:20
人を見下したかのような人しかいないから、ぴったりだと思って
418デフォルトの名無しさんsage2008/04/23(水) 08:37:36
回りくどいスレタイより「lisperが他の言語を馬鹿にして諭すスレ」
でいいよ。
419デフォルトの名無しさんsage2008/04/23(水) 09:18:52
…春だなあ。
420デフォルトの名無しさんsage2008/04/23(水) 09:20:04
逆に馬鹿にされるのがオチ。
421デフォルトの名無しさんsage2008/04/23(水) 09:25:07
>>413
他言語の構文をread macroでやらかすスレとかならおもしろいかもね
422デフォルトの名無しさんsage2008/04/23(水) 09:38:51
>>417
コンプレックスがひどいと、そう見えるらしいよ。
423デフォルトの名無しさんsage2008/04/23(水) 09:41:28
>>404
元々、プロプラの物をオプンで代替する活動だからね
新規性が売りじゃないから GPL のラベルを付ければ何でもオケ
424デフォルトの名無しさんsage2008/04/23(水) 09:45:56
>>421
そいういうんだったら逆になんでもS式に変換してみてほしい。
S式Rubyなunacceptable acceptable lispとか見てみたい。
425デフォルトの名無しさんsage2008/04/23(水) 11:08:09
>>424
たしかRuby1.8では、ソースから変換した構文木を直接evalしてたはずだから
それを括弧で囲めばS式になるんじゃないか?
426デフォルトの名無しさんsage2008/04/23(水) 13:16:50
今のところRubyは食わず嫌いだが、ソースがS式になるなら使ってやってもいいな
427デフォルトの名無しさんsage2008/04/23(水) 14:29:05
RubyはMatzLispでPythonはGuidoLispなんだよ!とかなんとか
428デフォルトの名無しさんsage2008/04/23(水) 15:46:41
lispuser.netだかどこかで見せてくれた最高にキモイlispコードってのがまさにそれじゃないの?>> read macroでホゲ
429デフォルトの名無しさんsage2008/04/23(水) 18:13:54
春めいた流れになってきたなw
430グラハムsage2008/04/23(水) 19:14:42
君達、LispとRubyのいいとこ取りの言語があるのを知らないのかい?
431デフォルトの名無しさんsage2008/04/23(水) 19:26:13
>>430
ポールグレアムなら知ってるが、あんた誰?w
http://pc11.2ch.net/test/read.cgi/tech/1202098949/
432デフォルトの名無しさんsage2008/04/23(水) 19:32:06
>>431
チャップマンかカーかどっちかじゃね?
433デフォルトの名無しさんsage2008/04/23(水) 19:40:11
ろくなライブラリーも無いうちからLispとRubyのいいとこ取りの言語を名乗るから評判悪いんだよなw
むしろGaucheがArcのいいとこ取りすれば解決しそうだ。
434グラハムsage2008/04/23(水) 19:58:23
思い出せば私のエッセイもいつも最初は不評だったものだ。
435デフォルトの名無しさんsage2008/04/23(水) 20:04:33
世界の料理ショーの人頑張ってライブラリ作れよw
436デフォルトの名無しさんsage2008/04/23(水) 20:05:27
ふーむ、、、何故あなたはそう確信するのですか?
437デフォルトの名無しさんsage2008/04/23(水) 20:07:01
ニヤニヤ
438デフォルトの名無しさんsage2008/04/23(水) 20:11:02
Matz>Graham だな。Lisp厨涙目w
439デフォルトの名無しさんsage2008/04/23(水) 20:12:05
何の話だ
440デフォルトの名無しさんsage2008/04/23(水) 20:16:10
他の言語にいちゃもんつけるお仕事、ご苦労様です
Ruby厨の人も大変だな
441デフォルトの名無しさんsage2008/04/23(水) 20:18:03
Ruby厨さえ居なけりゃ、Rubyも良い言語なのにな。w
442デフォルトの名無しさんsage2008/04/23(水) 20:20:28
Lisp On Railsってあるの?
443デフォルトの名無しさんsage2008/04/23(水) 20:24:55
それなんて Kahua
444デフォルトの名無しさんsage2008/04/23(水) 21:04:35
Kent Dybvigの本と迷ったが一番定評があるコッチをやることにした。

Programmation fonctionnelle en scheme
by Jean-Michel Hufflen, Masson, Paris, 1996
EUR 26.13

日本語版があればDybvigのを読みたかった。
読み終わったらStruktur und Interpretation von Computerprogrammenを読む予定。
でもLittleが流行ってるから先に読みたいな。でも英語がちょっと orz
445デフォルトの名無しさんsage2008/04/23(水) 21:11:00
仏蘭西語と独逸語が堪能なら英語くらいなんとかなるだろ
446デフォルトの名無しさんsage2008/04/23(水) 21:34:28
独仏国境だから二ヶ国語は馬鹿でも生活の中で自然に覚える。
英語は勉強が必要。でも勉強するならProgrammationの方が楽しい。
447デフォルトの名無しさんsage2008/04/23(水) 21:38:34
このスレに常駐したらLispとSchemeが堪能になるようなもんかw
448デフォルトの名無しさん2008/04/23(水) 21:42:12
>>441
厨が集まる言語の条件:
・誰でも演習レベルまでは直ぐいける。
・ハイレベルに移行するには何らかのセンスor適切なガイドが必要
・エキスパートによって成果が出ている。
449デフォルトの名無しさんsage2008/04/23(水) 21:42:51
(* 164.042160 26.13)
⇒4286.421640799999

ぐは、結構高い!
450デフォルトの名無しさんsage2008/04/23(水) 22:41:47
>>400-402
Lispには大きく分けて東のMACLISP系と西のInterlisp系の二つの主流が存在。
MACLISP系:Lisp 1.5 → MacLisp → CommonLisp の『MIT系Lisp文化』
Interlisp系 :Interlisp-10→Interlisp-Dの対話型環境の『Xerox PARC系Lisp文化』
GNU EmacsはMacLispから分かれて来てるからMACLISP系に入れる。
451デフォルトの名無しさんsage2008/04/23(水) 22:59:22
schemeはその流れに入ってないの?
452デフォルトの名無しさんsage2008/04/23(水) 23:39:39
>>451
schemeは当初maclispで実装されたし、影響もそれなりにあるからmaclisp系っていえば
そうとも言えるんじゃないかな。
MIT系であるのは確かだよね。
453デフォルトの名無しさんsage2008/04/24(木) 00:12:24
πの計算をストリームを使ってやってみた。
けど、なぜかあまり近づかない。なんでだろ。教えて。

ttp://codepad.org/0iV02ShG
454デフォルトの名無しさんsage2008/04/24(木) 00:13:28
収束の遅い公式を使うからでしょ
455デフォルトの名無しさんsage2008/04/24(木) 00:16:33
>>454
ここでは10ぐらいでかなり近くなってる。どして?
ttp://www.aomori-u.ac.jp/lab/inform/horibata/Scheme4.html
456デフォルトの名無しさんsage2008/04/24(木) 00:27:29
わかった方教えてください。あしたまた来ます。お願いします。
457デフォルトの名無しさんsage2008/04/24(木) 01:00:10
最後の行ですね、わかります
458デフォルトの名無しさんsage2008/04/24(木) 01:21:21
>>457
有り難う御座いました。そのヒントで見つかりました。
ttp://codepad.org/sCNx3Zlh

でも微妙に値が違ってるようです。3つ目の末尾から。
まだ、他にも間違いがあるんでしょうか?
それとも精度の問題なんでしょうか。
459デフォルトの名無しさんsage2008/04/24(木) 01:31:18
write時の問題かな。2進的には同じ数値になってるんじゃないか?
460デフォルトの名無しさんsage2008/04/24(木) 01:33:38
3.14159265358979 までは合ってる。
どう見ても問題ありません ><
461デフォルトの名無しさんsage2008/04/24(木) 01:40:10
やっぱり合ってそうですか。
計算以外のところが原因なのかな?
ますます原因不明ですが今日のところは落ちます。
有り難う御座いました。またあした。
462デフォルトの名無しさんsage2008/04/24(木) 01:42:36
11個目から+nan.0なのか。ストリームの意味無いじゃん。ちょっとワロタ。
463デフォルトの名無しさんsage2008/04/24(木) 01:58:14
眠いしよく見てないんで直感だけで書くけど、
euler加速の計算のdenominatorが0になってるんじゃないの?
464デフォルトの名無しさんsage2008/04/24(木) 03:00:40
無限ストリームでスマートに多倍長の演算でもしてるのかと思ったら
違うのかよ
465デフォルトの名無しさんsage2008/04/24(木) 04:23:07
Amazon.co.jpのプログラミングGaucheのカスタマーレビュー書いたバカ誰よ?
On Lisp書いたの誰だかわからないようなのが何書いても信憑性ないんだけど。
折角いい本なのに余計なことしやがって(-_メ)
466デフォルトの名無しさんsage2008/04/24(木) 04:48:55
藻前が書けばいいジャマイカ。
まあ、こんなところでちくちく攻撃してるやつの書評なんか読みたくもないがww
467デフォルトの名無しさんsage2008/04/24(木) 04:51:05
Amazonの書評って、分野によらず全然アテにならん。
鋭いこと書ける人は、ブログやら何やらで幾らでも「読者」を獲得できるこの時代、
大企業の威光を借りて「ここならボクちんの鋭いヒヒョウを皆に聞いてもらえるるる〜」と興奮しちゃうのは、
「自分では自分の鋭さを信じているが、どういうわけか(笑)他人にはそう思ってもらえない人」
だけになっちゃったんだ。
468デフォルトの名無しさんsage2008/04/24(木) 05:00:31
アテになるかはともかく、とっかかりぐらいにはなるぞ
Amazonに限らずネットの情報なんて大部分はそんなものだろう
469デフォルトの名無しさんsage2008/04/24(木) 05:39:45
アマゾンレビューなぞ大抵は書きっぱなしの自己満だから気にすんな。
470デフォルトの名無しさんsage2008/04/24(木) 09:59:58
GaucheはSchemeの方言(笑)
まあ尼のレビューの意義なんて内容よりも書く事自体にあるんじゃないのか。
文句があるならもっと良いレビューを書けばいいだけの話。
471デフォルトの名無しさんsage2008/04/24(木) 10:24:40
自分が思ったことレビュー蘭に書いたくらいでこんだけ叩かれるんだから
Gauche本のレビュー書くのも大変だよなwww
一体、誰が書けば納得すんだよw
472デフォルトの名無しさんsage2008/04/24(木) 10:36:43
思ったことを書いたから叩かれるのではなく、その内容がアレだから叩かれるんだよ。
誰が書けば納得するのか、じゃなくて、誰が書いても、内容がまともなら納得するんだよ。

馬鹿じゃないことがその人にとって大変なことなら、レビューを書くのは確かに大変だ。
473デフォルトの名無しさんsage2008/04/24(木) 10:41:38
perl,ruby,pythonのようなLL系やHaskellやOCamlのようなML系も独自のmakefile形式を持ってるけど
scheme版のmakeみたいなの無いの?
S式で依存関係とか生成規則をガリガリ書けるようなもの
474デフォルトの名無しさんsage2008/04/24(木) 11:52:19
うちの研究室の先輩が作って代々受け継がれているものならある。
結構便利。公開してないけど。
475364sage2008/04/24(木) 13:12:26
>>380
自分のバグでした
正規表現で文字の置き換えしようとして
全角文字の後ろ半分のバイトだけ置き換えてたみたいです
476デフォルトの名無しさんsage2008/04/24(木) 13:13:21
>>473-474
lispで動くシェルじゃだめなの?
477デフォルトの名無しさんsage2008/04/24(木) 14:22:17
>>450
elispはshallow bindingじゃないから、
MacLisp系というのには難がある。
基本関数名もあまりMacLispMacLispしてない。
478デフォルトの名無しさんsage2008/04/24(木) 14:32:10
>>477
少なくとも、InterlispよりはMaclisp系だよ。とりあえず defun だし。w
479デフォルトの名無しさん2008/04/24(木) 14:38:07
>>450
http://www.levenez.com/lang/ みたいに系統樹にしてみると面白いかもな
480デフォルトの名無しさんsage2008/04/24(木) 16:57:13
>>477
emacsのリファレンスにもmaclispに強く影響を受けてるって書いてるじゃん。
rmsがmaclispで育ってるんだから当然っていえば当然だと思うけど…。
481デフォルトの名無しさんsage2008/04/24(木) 18:48:35
>>479
MirandaとかErlangとかLuaとかAliceとかCgとかHyperTalkとか載ってない。 orz´
482デフォルトの名無しさんsage2008/04/24(木) 18:51:13
>>462-464
それSICPに載ってるやん
483デフォルトの名無しさんsage2008/04/24(木) 18:54:59
>>479,>>481
最近話題のOzもない。Orz
484デフォルトの名無しさんsage2008/04/24(木) 20:10:19
>>482
p.334からp.337の "3.5.3 Exploiting the Stream Paradigm" !
485デフォルトの名無しさんsage2008/04/24(木) 20:31:56
>>484
日本語版ではp.198からp.200にあった。
486デフォルトの名無しさんsage2008/04/24(木) 21:19:45
Gauche本を読んでcontinuationを理解した春の夕暮れ。
今日は良い日だった。
487デフォルトの名無しさんsage2008/04/24(木) 21:24:03
希望の精度まで計算するstream-limitを使った計算例。
>>484-485に書いてあるsqrtの計算をやってみた。πの計算にも使えるハズ。ヤッテナイケドw
ttp://codepad.org/8guLZUTv
488デフォルトの名無しさんsage2008/04/24(木) 21:34:38
>>478
適当なこと言いました。やってみたら計算負荷が高いようです。timeoutしましたw
ttp://codepad.org/a4j62JqK
489デフォルトの名無しさんsage2008/04/24(木) 21:36:23
ここは学坊しかいないのか?
490デフォルトの名無しさんsage2008/04/24(木) 21:55:46
いや、声が大きいだけ
491デフォルトの名無しさんsage2008/04/24(木) 22:16:21
ln2 の計算。ループ10回で精度ギリギリなのはおんなじ。
ttp://codepad.org/sZyPIi4v
492デフォルトの名無しさんsage2008/04/25(金) 00:24:38
今日の勉強の成果。SICP p.328-334
Ex 3.59
exp-series
cosine-series
sine-series
Ex 3.60
mul-series
Ex 3.61
invert-unit-series
Ex3.62
div-series
tan-series

ttp://codepad.org/Lh7m712l
493デフォルトの名無しさんsage2008/04/25(金) 00:44:39
Exploiting the Stream Paradigm !

>>398 runge-kutta ttp://codepad.org/gSEoxetW
>>458 Pi ttp://codepad.org/sCNx3Zlh
>>491 ln2 ttp://codepad.org/sZyPIi4v
>>492 exp-series cosine-series sine-series tan-series ttp://codepad.org/Lh7m712l
494デフォルトの名無しさんsage2008/04/25(金) 01:53:53
>>473
ASDFをGaucheに移植すればいいんジャマイカ?
495デフォルトの名無しさんsage2008/04/25(金) 01:59:21
ASDFはCLだす
496デフォルトの名無しさんsage2008/04/25(金) 02:37:36
だから移植なんじゃねーの?
497デフォルトの名無しさんsage2008/04/25(金) 02:50:04
まずGaucheでCommon Lispを書いて、その上で動かせば桶
498デフォルトの名無しさんsage2008/04/25(金) 03:09:06
よしまかせた!
499デフォルトの名無しさんsage2008/04/25(金) 13:06:34
>>494
Gaucheに移植→Schemeに移植
500デフォルトの名無しさんsage2008/04/25(金) 20:47:51
>>493
内蔵関数の計算精度の比較。
expの場合、テーラー展開の202項目まで計算していた。
ttp://codepad.org/fmkvRZu2
501デフォルトの名無しさんsage2008/04/25(金) 21:11:53
>>500
なんか遅すぎねえか、それ。
502デフォルトの名無しさんsage2008/04/25(金) 23:03:24
>>500
Excel2003は190項までで打ち切ってる。
503デフォルトの名無しさんsage2008/04/25(金) 23:18:55
>>501
accelerated-sequence euler-transform みたいなの使うんかな?
504デフォルトの名無しさんsage2008/04/25(金) 23:29:01

テーラー展開って geometric-series power-series calc-series mul-stream を組み合わせると作れるのか。
SICPには書いてなかった。ネット上にも geometric-series power-series calc-series なんてなかった。
505ムー子2008/04/26(土) 15:12:34
Scheme に let と let* という2種類の構文がありますが、
2種類を用意する必要性ってあるの? let* だけでいいのでは?
506デフォルトの名無しさんsage2008/04/26(土) 16:14:30
>>505
(lamnda (x)
(let ((x (car x) (y (cdr x))))
...
が, 出来なくなるじゃないか.
507デフォルトの名無しさんsage2008/04/26(土) 16:22:44
必要性はありません。
define、set!、if、lambda、quote(とマクロ定義構文)さえあればいいのです。
letもlet*もlambdaに展開されるマクロです。
letrecはlambdaとset!に展開されるマクロです。
ただしlet*はletで記述できますが
letはlet*では記述できません。
たぶん。
508ムー子2008/04/26(土) 17:04:01
> letはlet*では記述できません。

(let
    ((name1 value1)
     (name2 value2))
  ...)

(let*
    ((name1 value1))
  (let*
      ((name2 value2))
     ...)
のように変換できるのでは。。。
509ムー子sage2008/04/26(土) 17:05:57
>>508
すいません、間違いました。 >>505 さんの言うとおりですね。
510ムー子sage2008/04/26(土) 17:10:10
>>507
> letはlet*では記述できません。
再挑戦。
(let
    ((name1 value1))
  ...)

(let*
    ((_name1 value1))
  (let*
      ((name1 _name1))
    ...
に変換できそう。
ここで _name1 はユニークな識別子とする。
511デフォルトの名無しさんsage2008/04/26(土) 17:31:26
>ムー湖
黙ってろ
512デフォルトの名無しさんsage2008/04/26(土) 17:38:49
束縛する識別子が1つならletもlet*も等価。
2つ以上ならそれぞれが同じ環境に属し
かつそれぞれが互いに不可視でなければならない。
let*の入れ子にしても1つのlet*で束縛しても
実現できない。
(と思う。たぶん。)
513デフォルトの名無しさんsage2008/04/26(土) 17:51:40
(let ((name1 value1)(name2 value2))...)
=>((lambda (name1 name2) ...) value1 value2)

(let* ((tmp1 value1)(tmp2 value2)(name1 tmp1)(name2 tmp2)) ...)
=>((lambda (tmp1) ((lambda (tmp2) ((lambda (name1) ((lambda (name2) ...) tmp2)) tmp1)) value2)) value1)
514デフォルトの名無しさんsage2008/04/26(土) 22:29:04
>>513
それは可愛そうだろ、せめて中間式くらい書いてやれよ
(let* (x x) (y x)...) => (let (x x) (let (y x)...
とか
515デフォルトの名無しさん2008/04/27(日) 01:18:10
MzSchemeのダウンロードって↓

http://www.plt-scheme.org/software/mzscheme/

でいいんですか?したんですけど起動の仕方から分からない始末でして、
教えていただきたいんですよ
516デフォルトの名無しさんsage2008/04/27(日) 01:41:40
>>515
Windows版ならMzScheme.exeを実行するだけです
インストーラはファイルを解凍するだけなので
ショートカットやpathの設定は自分でやってください
517デフォルトの名無しさん2008/04/27(日) 03:03:56
>>516
ありがとうございます。
実行ってそのファイルを直接クリックすればいいんですか?

http://www.sampou.org/scheme/t-y-scheme/t-y-scheme-Z-H-3.html#node_chap_1

↑やつをチャプター7までをゴールデンウィークあけまでに
やっとっけって授業でいわれまして・・・
ダウンロードして↑のやつの通りにやろうとしたらできなかったんですよ。
518デフォルトの名無しさんsage2008/04/27(日) 11:27:38
宿題ならそういうこまごました「実行のしかた」とかそういうのは
授業でやってるはずだと思うが?
519デフォルトの名無しさん2008/04/27(日) 14:57:56
たぶん言ってたと思います(-_-;)

「あっダウンロードすればいいのね」くらいにしか聞いてなくて
他のことしていて・・・

自業自得なんですけど、実行できないと何もできないんですよ(>_<)

どうか、助けてくださいm(_ _)m
520デフォルトの名無しさんsage2008/04/27(日) 15:25:43
>>519
ttp://www.plt-scheme.org/software/drscheme/
ttp://www.shido.info/lisp/scheme1.html
ttp://www.db.is.kyushu-u.ac.jp/kiso/f2/
ttp://www.score.is.tsukuba.ac.jp/lectures/STEC/DrScheme/index.html
ttp://www.csg.is.titech.ac.jp/~kourai/lecture/drscheme/drscheme.html
521デフォルトの名無しさんsage2008/04/27(日) 15:27:55
>>520…乱世で生き抜くには余りに優しすぎる男よ…
522デフォルトの名無しさんsage2008/04/27(日) 15:45:55
DrSchemeを無事にインスコできたら下のプログラムを実行できることを確認せよ。
そうすれば、言語設定とかをいじる練習になる。

(require (lib "turtles.ss" "graphics"))
(turtles #t)
(define (dr n)
(if (< n 0) (display "終了\n")
(begin
(draw (* n 4))
(turn n)
(dr (- n 1)))))

(dr 100)
523デフォルトの名無しさんsage2008/04/27(日) 16:00:51
515さんみたいに授業でLispに触れる人は少なくないでしょう。
しかしLisperはその数に比べてあまりに少なく感じる。
なぜだろう。
マッカーシズムの嵐でも吹き荒れていて
Lisper狩りが行われているのだろうか。
(マッカーシズムっていうとLispの場合は逆の意味みたいだけど)
524デフォルトの名無しさんsage2008/04/27(日) 16:16:47
>>523
母国語として(無理してでも)使う人が少ないからじゃない?
教養として学んでる人は沢山いるとは思うけど、実際書くのはRubyとか…。
そういうギャップを埋めようとしているGaucheは素晴らしいと思う。
525デフォルトの名無しさんsage2008/04/27(日) 16:48:05
>>524
Arcも書き捨て用スクリプト言語を意識した構文が入ってるCLという感じ。
GaucheもLibraryのSRFIサポートがもう少しCPANみたいに使い易くなればなぁ。
526デフォルトの名無しさんsage2008/04/27(日) 17:05:16
ギャップを埋めたいなら埋め込みScheme
SchemeをCのライブラリとして使えば、GUIもシステムコールも使い放題です

「ライブラリをラップするライブラリがない」

この閉塞感を打ち破るにはC言語の力が必要なのです
527デフォルトの名無しさんsage2008/04/27(日) 17:29:00
>526
今日も乙です
528デフォルトの名無しさんsage2008/04/27(日) 17:38:53
春だなぁ。
529デフォルトの名無しさんsage2008/04/27(日) 17:43:34
Arcで作られたスパムフィルターを使うと>>526のような香具師が社会から完全にフィルタリングされてしまうようです。
530デフォルトの名無しさんsage2008/04/27(日) 17:55:47
>>527-529
バカにする暇があったらバカになれ
531デフォルトの名無しさんsage2008/04/27(日) 19:52:06
CUDAみたくGPUで汎用コンピューティングを通常の3倍の速度で実行できるLisp系の処理系ってないの?
532デフォルトの名無しさんsage2008/04/27(日) 19:59:14
やってみたいなあ
533デフォルトの名無しさんsage2008/04/27(日) 20:03:42
Lisper同士でも3倍速で実行したらネ申だな。
534デフォルトの名無しさんsage2008/04/27(日) 20:04:25
おどるあほうにみるあほう
どうせあほうならみないほうがましさ
535デフォルトの名無しさんsage2008/04/27(日) 20:10:48
NVIDIAの並列コンピューティングプラットフォームか。
CUDAは今のところC言語しかないからLisp/SchemeをC言語にパースするしかないんジャマイカ?
536デフォルトの名無しさんsage2008/04/27(日) 20:26:43
>>531
詳細不明だけど、
http://people.csail.mit.edu/jrb/Projects/gpugooze.htm
みたいな研究はあるみたいよ。
537デフォルトの名無しさんsage2008/04/27(日) 21:01:50
>>525
> GaucheもLibraryのSRFIサポートがもう少しCPANみたいに使い易くなればなぁ。
どういう意味? 標準で同梱されてないSRFIを使う場合ってこと?
538デフォルトの名無しさんsage2008/04/27(日) 21:06:50
>>535
パース?
539デフォルトの名無しさんsage2008/04/27(日) 21:08:59
Gauche-glはOpenGL 1.0〜2.0のだいたいのAPI と、 GLUとGLUTの一部をサポートしています。
NVidia GLX 1.0-7174で動作します(nVidiaのOpenGLドライバ)。
こういったものが作成されないと使えるようにならないでしょう。
現状ではCgやHLSL、GLSLといった高級シェーディング言語もC言語経由で使用してます。
今までに3つGPGPU専用のプログラミング言語が登場してます。
・ Sh:ウォータールー大学
・ Scout:並列コンピュータメーカのThinking Machines社(1999年オラクルが買収)
・ Brook:スタンフォード大学
540デフォルトの名無しさんsage2008/04/27(日) 21:14:06
>>538
ソースをパースし解析木を作った後、 バイトコードをメモリ上に生成、
そしてそのメモリ上のバイトコードを、 GPUドライバが実行します、ってことだろ。
541デフォルトの名無しさんsage2008/04/27(日) 21:19:30
>>537
たしかにSICPやってた頃におれも、SRFIのstreamとか使いにくいと思った。
複数のファイルに分散してるのがわかりにくいと思う。
542デフォルトの名無しさんsage2008/04/27(日) 21:26:15
CPUの性能向上率は18ヵ月で2倍、いわゆるムーアの法則に従うが、GPUにおけるムーア則は12ヶ月といわれている。
PUに比べて単純なアーキテクチャを持ち、伸びしろの上限もまだ見えていないGPUとCPUとの性能格差はますます広がるだろう。

単体の処理性能は理論値で300Gflopsを超え、1システムに4台のボード*1を組み込めるため、
スパコン並みの1Tflopsの処理性能が100万円以下のシステムでも実現可能である。
こんな安価で高性能のプロセッサを使わない理由はない。
Lisp系言語でもサポートするべきだと思う。
543デフォルトの名無しさんsage2008/04/27(日) 21:26:18
SRFIはRFCみたく番号付けるのはいいんだけど、別名が欲しい
毎回無駄にfindが大活躍だぜ
544デフォルトの名無しさんsage2008/04/27(日) 21:30:32
GeForce8800では128個あるプロセッサに同時に数千のスレッドを流すことができ、相互に通信可能。
処理能力は、500Gflops程度で、新しいアーキテクチャの出現でテラフロップスを突き抜ける日は目前に迫っている。
545デフォルトの名無しさんsage2008/04/27(日) 21:32:40
>>542
サポートがなくても2割をCで書いて8割をLispで書くとか
できるんじゃないの
546デフォルトの名無しさんsage2008/04/27(日) 21:39:40
>>542
条件分岐のペナルティが無茶苦茶でかくて、lispらしい
プログラムはまず書けないだろうけどそれでもいいの?
lispらしいプログラムを書かないのなら言語ブリッジがあれば
十分じゃないかと思うんだけど。
547デフォルトの名無しさんsage2008/04/27(日) 21:49:48
>>546
BrookあたりもStream Computingにあわせるようにコードを吐くから、Lispでも最適なコードへ変換してコードを吐き出す必要はある。
最初はベクターとかストリームだけでも早くなればありがたいと思う。
548デフォルトの名無しさんsage2008/04/27(日) 21:55:48
>>546
コンパイラが賢くなりゃいいんじゃね
もしくは *Lisp とか CM Lisp とかの方向だってある
549デフォルトの名無しさんsage2008/04/27(日) 22:01:51
Connection Machine
550デフォルトの名無しさんsage2008/04/27(日) 22:10:00
今すぐに出来ることはないの?
551デフォルトの名無しさんsage2008/04/27(日) 22:13:35
>>550
自分が手を出せばいいんじゃね?
552デフォルトの名無しさんsage2008/04/27(日) 22:20:01
>>547
了解。部分的でもGPUに振りたいものはあると。

>>548 >>549
*Lispは知らなかった。thx
553デフォルトの名無しさんsage2008/04/27(日) 22:30:18
GPU Gems 2 でも読んでみるか。内容がピンと来ない。
デスクトップも1Tflopsの時代なのか・・・
554デフォルトの名無しさんsage2008/04/27(日) 22:39:10
GPUには得意、不得意がある。大規模な並列演算は高速に処理できるが、複雑な分岐や判断が必要といった処理は効率が悪くなる。
nVidiaのTesla向けプログラムでも、NVIDIAが用意しているツールとライブラリ「CUDA」を使って、並列処理を意識した実装が必要。
Lisp系でも同様の配慮は必要。何にでも使えるという幻想は棄てた方が良い。
555デフォルトの名無しさんsage2008/04/27(日) 22:41:16
>>553
汎用で出る速度な訳じゃないところがミソなので普通の生活してると役に立たない。
556デフォルトの名無しさんsage2008/04/27(日) 22:41:39
理論値ではそうだが・・・・実効性能でどこまで出るやら
ムーアで伸びた分も、ちょっと油断するとアムダールで潰されそう
分野によってはまず計算機屋さんに超並列向きのアルゴリズムを考案してもらわないと
557デフォルトの名無しさんsage2008/04/27(日) 22:46:02
NVIDIA社のHPC分野向けブランド Tesla GPUの浮動小数点演算能力は、518 G FLOPS。
GeForce 8800 GT は336 GFLOPS。デスクトップの1Tflops時代は2年後ぐらいと予想されている。
558デフォルトの名無しさんsage2008/04/27(日) 23:12:25
Nvidia GeForce9600GTは208 GFlops。でもミドルレンジで安い。
559デフォルトの名無しさんsage2008/04/27(日) 23:23:47
>>547
GPUに計算させてその結果を受け取るには、最低でも一回、GPU側とデータを往復する必要がある。
このコストが洒落にならない程でかいので、
ベクターを高速化するためには最低でも10Mとか100Mを一度に扱わない限り高速化は難しいよ。
560デフォルトの名無しさんsage2008/04/27(日) 23:27:04
>このコストが洒落にならない程でかいので、

具体的に
561デフォルトの名無しさんsage2008/04/27(日) 23:28:48
>>559
シミュレーションとかで有限要素法を使うとそれぐらいはザラ。
562デフォルトの名無しさんsage2008/04/27(日) 23:34:01
>>560
GPUのドライバを動かすコストもあるだろうけど、主にレイテンシのことじゃないか。
563デフォルトの名無しさんsage2008/04/27(日) 23:37:52
>>560
システムメモリ(普段使っているメモリ) - GPU上のビデオメモリ 間の転送速度は
システムメモリ間同士のそれより圧倒的に遅い。
多分、数倍から数十倍は違う。
564デフォルトの名無しさんsage2008/04/27(日) 23:50:45
多分、
565デフォルトの名無しさんsage2008/04/27(日) 23:56:23
>>564
バスを介す関係で確実に遅くはなるよ。
少なくとも数年前まではそうだった。最近は変わったかもしれないが。

あと、フージョンチップを目論むAMDがメモリ業者を買収してるし、
この辺りに改善の可能性があることはたしか。
566デフォルトの名無しさんsage2008/04/27(日) 23:58:55
>>565
GPUが直接主記憶からフェッチしないのか?
567デフォルトの名無しさんsage2008/04/28(月) 00:00:17
どっちにしてもバスは通るべ。
568デフォルトの名無しさんsage2008/04/28(月) 00:06:22
>>566
それは無いだろう。
それじゃあ、「ビデオメモリ○○M搭載」には主記憶のサポート程度の意味しか無くなる。
569デフォルトの名無しさんsage2008/04/28(月) 00:10:13
少なくともハードウェア的にはフェッチできるよ。CUDAがどうだかは知らん。
570デフォルトの名無しさんsage2008/04/28(月) 00:11:09
>>568
だから主記憶のサポート程度の意味しか無いんだよ。(極論だけど)
571デフォルトの名無しさんsage2008/04/28(月) 00:17:16
>>569
フェッチできるかもしれんが、そうしたら、
GPU内で処理を完結するよりも圧倒的に処理速度が落ちないか?

>>570
そんな話をされたら、nVidiaとATIの中の人がやさぐれてしまいますよ。
572デフォルトの名無しさんsage2008/04/28(月) 00:17:44
なら、UMAにすればいいじゃん。
573デフォルトの名無しさんsage2008/04/28(月) 00:19:51
>>572
そのためにフュージョンがある
574デフォルトの名無しさんsage2008/04/28(月) 00:21:04
>>571
そりゃ落ちるでしょう。だから容量とのトレード。下手に使えば遅くなるが、参照頻度の
低いものだったら全体への性能へのインパクトは少ないだろうね。
そもそもビデオメモリ載せてないGPUだってあるわけだし。
575デフォルトの名無しさんsage2008/04/28(月) 00:23:13
素人ばっかりで笑える
576デフォルトの名無しさんsage2008/04/28(月) 00:25:09
フムフム本が出てから意味不明の会話が増えてきた。
俺もフムフムヌプヌプ本買ってくるか・・・・ λ.......
577デフォルトの名無しさんsage2008/04/28(月) 00:47:44
GPUもいいけどそれ以前にSSEの命令が吐ける処理系ってあるの?
578デフォルトの名無しさんsage2008/04/28(月) 00:49:38
それ以前にちゃんとした型推論が・・・
579デフォルトの名無しさんsage2008/04/28(月) 00:50:48
つまり、Lispは使えない言語だってこと。
580デフォルトの名無しさんsage2008/04/28(月) 00:51:51
そりゃ初耳だな
581デフォルトの名無しさんsage2008/04/28(月) 00:56:24
>>577
世界のどこかには、そんなものがあるような気がする
582デフォルトの名無しさんsage2008/04/28(月) 01:00:06
>>579
つまり、君はLispが使えない、って事だよね。
583582sage2008/04/28(月) 01:01:19
さらに言うとだな、、、、




                  俺と同じだお!( ^ω^)人(^ω^ )>>579
584デフォルトの名無しさんsage2008/04/28(月) 01:30:50
CISCからRISCに移行したときのような劇的なスピードアップが汎用GPUの標準搭載でも起こるのかね。
そうだとしたらそのうちCPU内部に組み込まれるのかな。
585デフォルトの名無しさんsage2008/04/28(月) 01:37:58
>CISCからRISCに移行したときのような劇的なスピードアップ

具体的に
586デフォルトの名無しさんsage2008/04/28(月) 01:54:47
>>584
GPUは用途が限られるからどうかな。
分野によっては革命的なことになるかもしれんけど。

> そうだとしたらそのうちCPU内部に組み込まれるのかな。
多分そうなる。
IntelとAMDはこれを前提にロードマップを作成しているはず
587デフォルトの名無しさんsage2008/04/28(月) 05:48:46
>>577
sb-simd なんつうものがあるようだが...
588デフォルトの名無しさんsage2008/04/28(月) 07:29:57
>>404
「有限の資源をやりくりするにはどうしたらいいか」という設問には、Lispはかなり不向きなのではないか。
589デフォルトの名無しさんsage2008/04/28(月) 08:48:11
>>588
そうでもない。ただ、そういうタイトなコードをLispで書くと見かけは
Cと大差なくなる。副作用使いまくり、型宣言ありまくりなので。
マクロを使えるのは楽なんだが。
590デフォルトの名無しさんsage2008/04/28(月) 08:58:12
GPU厨の人、もう勘弁してくれませんか?

↓でも読んで静かにしていてください。
NESL: A nested data-parallel language
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.54.3657
591デフォルトの名無しさんsage2008/04/28(月) 11:10:32
Quaternionsなんて使えるようになってんだ。すげーな。
ttp://practical-scheme.net/vault/gauche-gl-refe.html#SEC65
592デフォルトの名無しさんsage2008/04/28(月) 11:19:37
★Lisp
ttp://en.wikipedia.org/wiki/%2Alisp


Simulator for *Lisp language for Connection Machine, circa 1989.
ttp://examples.franz.com/id/massar/Starsim-f20_s0/Starsim-f20-rn.html
593デフォルトの名無しさんsage2008/04/28(月) 15:29:38
>>526
boost.scheme
ほしいなあ
594デフォルトの名無しさんsage2008/04/28(月) 18:30:52
Gaucheboxキタ。
http://cvs.kahua.org/cgi-bin/viewcvs.cgi/Gauchebox/
Meadowとか諸々を込み込みにしたGaucheパッケージ。
初心者にもオススメしやすくなった。

でもさー。インストールが簡単でもMeadowって時点でホントの初心者にはもうだめぽ。
595デフォルトの名無しさんsage2008/04/28(月) 18:33:45
>>594
まだテスト版なのでフィードバック等を以下にお願いします。
http://practical-scheme.net/wiliki/wiliki.cgi?Gauche%3aGauchebox
596デフォルトの名無しさんsage2008/04/28(月) 18:47:13
>>594
でもまあ、下をみてもきりがないからなあ。
とりあえず、前進してるんだからそのうちどうにかなるかもよ。
597デフォルトの名無しさんsage2008/04/28(月) 19:02:34
yasuyukiさん乙。
598デフォルトの名無しさんsage2008/04/28(月) 20:22:53
>>590
板垣死すとも自由は死せず!
言論の弾圧は許さん!
チベットに自由を!
共産主義者の犬め!
599デフォルトの名無しさんsage2008/04/28(月) 23:34:13
わかったからとりあえずおまいは氏んどけ
600デフォルトの名無しさんsage2008/04/28(月) 23:51:10
>>599
中国人は国に帰れ
601デフォルトの名無しさんsage2008/04/29(火) 00:11:37
>>594
ホントの初心者はフムフム本なんか読まないから問題ない
602デフォルトの名無しさんsage2008/04/29(火) 00:49:09
GaucheBox入れてみようかな。と思ったんだけど、
Meadowはこの前入れたばっかりなんだけど、アンインスコした方がいい?
「プログラムの追加と削除」の一覧に出てこないんだけど、
ひょっとしてファイル置いてあるだけなのかな?
603デフォルトの名無しさんsage2008/04/29(火) 00:57:28
くっそ、インスコしたのに立ちあがらねえし。
604デフォルトの名無しさんsage2008/04/29(火) 00:57:41
>>602
Gacheboxは既存のGaucheやMeadowには影響しないのでどんどんインスコしてください
とゆーかテストしてください。
605デフォルトの名無しさんsage2008/04/29(火) 01:19:47
>>603
こちらでも確認しました。
Meadow\install.exeが動いていなかった。直しますので、
とりあえず手動でMeadow\install.exeを動かしてみてください。
606デフォルトの名無しさんsage2008/04/29(火) 01:36:38
どうも、とりあえずMeadowは動きました。
-S\\ *scratch* Lisp Interaction
になってるのですが、これがSchemeモードなの?
607デフォルトの名無しさんsage2008/04/29(火) 01:43:52
>>606
Emacs入門みたいな本を買ってこい
608デフォルトの名無しさんsage2008/04/29(火) 02:05:16
>>607
死ね
609デフォルトの名無しさんsage2008/04/29(火) 02:33:15
いや、死ねとは思わないけど、インスコさせてテストさせておいて
モードが使えないとか・・・・ ふざけんなよ?って感じかな。
610デフォルトの名無しさんsage2008/04/29(火) 02:39:34
インスコするからだろ。
インストールしないとダメなんだよ
611デフォルトの名無しさんsage2008/04/29(火) 02:41:44
じゃあ、インスコじゃなくてインストロールした。
で、どうやったらGaucheのモードになるのか教えて(・-・)
612デフォルトの名無しさんsage2008/04/29(火) 02:48:54
*.scmってファイル名のファイル開いてもschemeモードにならない?

あと$HOME/.emacsに
(setq scheme-program-name "gosh -i")
ってかいておくか lisp-interactionモードで↑を入力して最後の")"の後ろでCtrl-Jを入れてから
ALT+X を押して run-scheme<Enter>と入力すると結構幸せかもよ?

それ以上は>>607に従ってくれよ。
613デフォルトの名無しさんsage2008/04/29(火) 02:53:40
なったなった!Schemeモードになったー!わーい!ありがとうカッコいいお兄ちゃん!
614デフォルトの名無しさんsage2008/04/29(火) 03:10:54
でも、どうやって使うのかわからないや。
やっぱ難しいね。
615デフォルトの名無しさんsage2008/04/29(火) 04:18:09
>>608-614
何この馬鹿?
616デフォルトの名無しさんsage2008/04/29(火) 04:18:44
>>608
Emacs入門みたいな本を買ってこい
Emacs入門みたいな本を買ってこい
Emacs入門みたいな本を買ってこい
Emacs入門みたいな本を買ってこい
Emacs入門みたいな本を買ってこい
Emacs入門みたいな本を買ってこい
Emacs入門みたいな本を買ってこい
Emacs入門みたいな本を買ってこい
Emacs入門みたいな本を買ってこい
Emacs入門みたいな本を買ってこい
617デフォルトの名無しさんsage2008/04/29(火) 04:55:05
俺はterapadやxyzzyからgoshを呼び出すようにして使ってるけど
>>614もそれで我慢したら?たいして難しくもないし
618デフォルトの名無しさんsage2008/04/29(火) 10:59:45
>>614
「プログラミングGauche」のサンプルコードをWindowsで試せるようにする目的で開発しています。
619デフォルトの名無しさんsage2008/04/29(火) 11:03:48
>>618
でもさ、Kahuaとか動かないし、Windowsで全部は動かないポイ
620デフォルトの名無しさんsage2008/04/29(火) 12:58:28
>>619
UNIXドメインソケットを使うKahuaは無理としても、
26章の継続サーバはMinGW版Gaucheで動いた報告あり。
621デフォルトの名無しさんsage2008/04/29(火) 19:19:53
「Emacs入門」って本はなかった。「 入門 GNU Emacs 第3版」か「 入門Meadow/Emacs」があった。
Amazonでは「 入門 GNU Emacs 第3版」の方が評価が高かった。でも\4,000もするので買わないw
622デフォルトの名無しさんsage2008/04/29(火) 19:43:30
なんというか・・本物の馬鹿だな
いい本は少々無理しても買っといた方がいいのに
真面目にやる気がないならメモ帳でも使ってれ
623デフォルトの名無しさんsage2008/04/29(火) 20:07:32
ん?それ別人ですよ(^^;)
624デフォルトの名無しさんsage2008/04/29(火) 20:10:54
とりあえずBox作者さん乙です。

なんか尻馬に乗って偉そうに言ってる奴等がいるが、
お前らもどうせ大学で配布された手引書かなんかで覚えたんだろ?
エディタの手引書で4000円なんか高すぎだろ。
んなことだからEmacsはエディタ界の老害とか言われるんだよね。
そのイメージでSchemeが語られる日も近いかもしれないな。
625デフォルトの名無しさんsage2008/04/29(火) 20:25:14
ここには本を出版してる関係者もいるからなw
糞高い本を買わない奴は馬鹿扱いされるYO!
626デフォルトの名無しさんsage2008/04/29(火) 20:52:44
値段で本選ぶ奴は本物の馬鹿だろ
627デフォルトの名無しさんsage2008/04/29(火) 21:18:50
マグロウヒル版SICPの訳本上下買った時はホントに辛かったです! ><
628デフォルトの名無しさんsage2008/04/29(火) 21:32:49
価格に内容が伴わない書籍は買わない
629デフォルトの名無しさんsage2008/04/29(火) 22:30:43
>>624
あれだけ高機能なソフトをダタで使えるんだから
マニュアルに4000円くらいかけたところで
全体としてはかなり安価だと思うんだが。
630デフォルトの名無しさんsage2008/04/29(火) 22:47:19
「 入門 GNU Emacs 第3版」には設定の話があまり書いてない。\4,000の価値はない常考。
631デフォルトの名無しさんsage2008/04/29(火) 22:49:57
「 入門 GNU Emacs 第3版」「Emacs Lisp入門」「「Emacs Lisp リファレンスマニュアル」と3冊で1セットだから初期投資は結構かかるよな。
632デフォルトの名無しさんsage2008/04/29(火) 22:50:32
糞Emacs擁護は糞Emacsスレでやれ
633デフォルトの名無しさんsage2008/04/29(火) 23:42:33
>>624
年間50万近く書籍に消費する俺に喧嘩を買えと言うことですか?
634デフォルトの名無しさんsage2008/04/30(水) 00:02:27
んー。手引き書なんか必要かなー。
Emacsは全部infoとネットの解説で覚えたし、
あれだけドキュメントが充実してるエディタって、
そうそうないと思うんだが。
635デフォルトの名無しさんsage2008/04/30(水) 00:05:35
>年間50万近く
\41,666/month
\9,615/week
\1,370/day
636デフォルトの名無しさんsage2008/04/30(水) 00:08:03
>>631
初期投資って・・・・・格差社会なんだなあ・・・
637デフォルトの名無しさんsage2008/04/30(水) 00:08:11
>>632
おまえこそ流れ嫁、ボケ。
638デフォルトの名無しさんsage2008/04/30(水) 00:08:44
金が無いならぐぐればいいじゃない
639デフォルトの名無しさんsage2008/04/30(水) 00:14:05
>>636
話がズレてるけどw
地方と都市部の格差や業種の格差など色々ある。この10年ぐらいでかなり構造変化が進んだと思う。
仕事してると相手先の話から実感する部分はある。
640デフォルトの名無しさんsage2008/04/30(水) 00:32:42
そこで図書館ですよ
641デフォルトの名無しさんsage2008/04/30(水) 01:43:18
>>635
ほとんど毎日の様に買っている上に専門書も買ったらそのくらい行くんですが。
まぁ活字中毒なんでしょうがないんだけどな。

図書館の利用をまじめに考慮する今日この頃
その前に床が抜けそうだけどな。
642デフォルトの名無しさんsage2008/04/30(水) 02:46:46
>>641
一冊の本をきちんと理解するほうがいいんじゃないか?
そんなに毎日買って、結局買うだけで満足してないか?
643デフォルトの名無しさんsage2008/04/30(水) 03:18:24
毎日本買って消化できるのがすげー
644デフォルトの名無しさんsage2008/04/30(水) 03:23:29
教科書じゃあるまいし、買った本全部理解する必要なんて無いだろ。
結果的に、たった1ページの記述が役に立つことだってある。
645デフォルトの名無しさんsage2008/04/30(水) 04:22:05
>>624
てかさ、Emacsなんてめちゃめちゃ充実しているマニュアルが
本体についてきているのだが、なぜ
> エディタの手引書で4000円なんか高すぎだろ。
> んなことだからEmacsはエディタ界の老害とか言われるんだよね。
などといわれなければならないのかわからん。
ほんとの初心者向けにはチュートリアルもついてるぞ。
646デフォルトの名無しさんsage2008/04/30(水) 05:36:44
いい加減、他所でやってくれんか
647デフォルトの名無しさんsage2008/04/30(水) 07:23:58
>>645
Emacsアンチがそういうことにしたいから。
648デフォルトの名無しさんsage2008/04/30(水) 13:17:20
アンチなら使わなきゃいいのになw
649デフォルトの名無しさんsage2008/04/30(水) 17:57:49
プログラミングと関係ない話だとファビョる奴多いなw
650デフォルトの名無しさんsage2008/04/30(水) 18:18:20
つーか、プログラミングと関係ない話にしか入ってこれないんだろw
651デフォルトの名無しさんsage2008/04/30(水) 18:19:49
lispとemacsは切り離せないんじゃないの?
対応する括弧に自動で色つかないと見にくい

括弧の色が中にいくほどグラデーションで
少しずつ色がついていくようなのないの?
652デフォルトの名無しさんsage2008/04/30(水) 19:16:37
>>651
ぐぐれ
653デフォルトの名無しさんsage2008/04/30(水) 19:20:56
ポールグレアムの中の人はvi使ってるんだっけか
654デフォルトの名無しさんsage2008/04/30(水) 19:41:47
Emacsが嫌ならxyzzy使えばいいのにw
655デフォルトの名無しさんsage2008/04/30(水) 19:46:37
パンが無いなら性器を舐めればいいじゃない
656デフォルトの名無しさんsage2008/04/30(水) 20:10:03
___________________________
/| /| | |
||__|| | Please don't |
/ O O\__ feed |
/ \ the trolls |
/ \ \ |
/ _ \ \ ----------------------
/ |\____\ \ ||
/ | | | |\____/ ||
/ \|_|_|/ | __||
/ / \ |____| ||
/ | | /| | --|
| | |// |____ --|
* _ | |_|_|_| | \-/
*-- _--\ _ \ // |
/ _ \\ _ // | /
* / \_ /- | - | |
* ___ c_c_c_C/ \C_c_c_c____________
657デフォルトの名無しさんsage2008/04/30(水) 20:19:20
>>653
ポール・グレアムが使ってるっていってもなあ…。
初心者にはどっちもどっちかもしれないが、
viのほうがEmacsより敷居高くないか? モードあり+S式操作は。
ちなみに、viのほうがS式操作が便利なら、速攻乗り換える。
658デフォルトの名無しさんsage2008/04/30(水) 20:31:21
vimならS式得意。
得手不得手があるからどっちが便利って事はない。
659デフォルトの名無しさんsage2008/04/30(水) 20:50:57
>>652
http://groups.google.com/group/comp.lang.lisp/browse_thread/thread/d0ce288e1cd22654/cc25683874ecc457
660デフォルトの名無しさんsage2008/04/30(水) 21:37:27
>>659が何を言いたいのかワカランw
661デフォルトの名無しさんsage2008/04/30(水) 21:38:51
>>651
UnixとCが切り離せるように、lispとemacsだって切り離せる。
662デフォルトの名無しさん2008/04/30(水) 21:48:38
>>657
vi にも lisp モードあるよ
http://ex-vi.sourceforge.net/viin/paper-6.html#section41
663デフォルトの名無しさんsage2008/04/30(水) 23:05:18
>>661
頭から胴体が切り離せるように、lispとemacsだって切り離せる、ってこと?
664デフォルトの名無しさんsage2008/04/30(水) 23:13:07
>>661
CがUNIXから離れて普及したように、(>>661の前半)
elispがEmacsから離れて広まることはありうる。
しかし、UNIXをC以外で書き直したり、
EmacsをelispあるいはLisp族以外で書き直す(>>661の後半)のはほとんど無理。
665デフォルトの名無しさんsage2008/04/30(水) 23:17:10
>>663
emacs が elisp で書かれている必要はないし, emacs の拡張言語が
elisp である必要もない
teco.el ってのがあってだな, teco.el を使って GNU emacs 18 の
emacslisp-mode 再実装した大馬鹿ものを俺は知っている
666デフォルトの名無しさんsage2008/04/30(水) 23:25:46
lispworksのエディタもemacsライクなんだよな。
667デフォルトの名無しさんsage2008/04/30(水) 23:50:37
休みが終わるまでこの調子かね?
668デフォルトの名無しさんsage2008/05/01(木) 00:04:51
GW進行ですから。
669デフォルトの名無しさんsage2008/05/01(木) 00:20:27
EmacsはLisp知ってたほうが使いやすい(必須じゃないけど、設定すらLispで書くわけだから)けど、
Lispを使うのにEmacsを無理に使う必要は無いだろうな。まあ便利だと思えば使えばいいだけ。
670デフォルトの名無しさんsage2008/05/01(木) 00:38:55
男ならEdwin
671デフォルトの名無しさんsage2008/05/01(木) 03:08:43
TIのPC-Schemeに付属してたエディタ(edwin)ってソース公開
されてないかな?

Gaucheに移植できないだろうか。
672デフォルトの名無しさんsage2008/05/01(木) 03:52:11
>>671
>TIのPC-Schemeに付属してたエディタ(edwin)ってソース公開
>されてないかな?

http://ftp.cs.indiana.edu/pub/scheme-repository/imp/pcscheme/

PC-Scheme のソース見てみたら edwin のソースも入ってたよ。
disk1.zip の中にあった。

http://ftp.cs.indiana.edu/pub/scheme-repository/imp/pcs-geneva/

PC-Scheme 派生の PCS/Geneva のソースコードにも edwin の
ソースコードが入ってる。sources.tar.gz の中ね。

R3RS で実装されているみたいだけど R5RS とどれだけ違うのか
良く分からん…

つか、これ 486 で動くネイティブコンパイラなんだ。知らんかった…
673デフォルトの名無しさんsage2008/05/01(木) 11:29:25
Sexp
674デフォルトの名無しさんsage2008/05/01(木) 14:50:55
NULNUL
675デフォルトの名無しさんsage2008/05/01(木) 16:53:42
sxhashってsexhashという表記を避けるためにつけられた名前なんだろうか。
676デフォルトの名無しさんsage2008/05/01(木) 17:29:31
http://cvs.kahua.org/cgi-bin/viewcvs.cgi/Gauchebox/

Meadow/install.exeが実行されないバグを直しました。お試しください。
677デフォルトの名無しさんsage2008/05/01(木) 19:31:30
>676

自分はwin使わないけど、乙です
678デフォルトの名無しさんsage2008/05/02(金) 06:22:20
ttp://www.nicovideo.jp/watch/sm2143250
この動画のプログラム作成中モジュールファイルを上書きするたびに
すぐgosh側で使えているように見えるのですが
これはどのように同期しているのでしょうか?
自分は開発のときにreloadなどを多用しているのでどのようにすれば
このようにできるのでしょうか?
よろしくお願いします
679デフォルトの名無しさんsage2008/05/02(金) 09:09:37
>>678
C-x C-e で修正を反映
680デフォルトの名無しさんsage2008/05/02(金) 11:27:10
ありがとうございます
一気に楽になりました
681デフォルトの名無しさんsage2008/05/02(金) 17:14:28
>>672
情報ありがとう。

PC98で動かしたPC-Schemeが最初に動かしたSchemeだったので
ターミナルで動くEdwinが好きだ。GaucheやMZ-Schemeで動く
CUIのシンプルなのがあったら使いたいね。
682デフォルトの名無しさんsage2008/05/02(金) 17:32:59
load-pathに自分が使うフォルダを追加するにはどうすれば良いですか?
よろしくお願いします
683デフォルトの名無しさんsage2008/05/02(金) 17:41:06
これは流石にネタだろ
684デフォルトの名無しさんsage2008/05/02(金) 18:53:19
http://cvs.kahua.org/cgi-bin/viewcvs.cgi/Gauchebox/

Meadowを3にしてみました。日本語も表示/入力できます。

注意点:
Meadowがすでにインストール済みの環境ではMeadow3のショートカット
(スタートメニューとデスクトップ)を上書きします。

Meadowがインストール済みの方はGaucheboxではなく、
Gauche-win32-0.8.13.exeをインストールしてください。
685デフォルトの名無しさんsage2008/05/02(金) 21:44:28
Numerical Recipes in Common Lisp
ttp://www.phys.uu.nl/DU/num_recipes/lisp.1ed/senac/readme.htm

次スレのテンプレに加えてください。
他に数値計算の参考になるところ知ってたら教えてください。
686デフォルトの名無しさんsage2008/05/02(金) 22:05:35
巡回ヤコビ法(Cyclic Jacobi Method) --- 行列の固有値・固有ベクトルを求める方法
を中心に集めてみた。

Common Lisp version
ttp://www.phys.uu.nl/DU/num_recipes/lisp.1ed/senac/nr11.l


Scheme version

ttp://list.cs.brown.edu/pipermail/plt-scheme/2008-March/023965.html

ttp://k16journal.blogspot.com/2006_09_01_archive.html
ttp://hw001.gate01.com/sikano/src/jacobi.scm

ttp://practical-scheme.net/wiliki/wiliki.cgi?sasagawa%3Amatrix

Gauche + GSL (shiro)

ttp://ja.doukaku.org/48/nested/
687デフォルトの名無しさんsage2008/05/02(金) 23:30:59
>>686
d。やっぱ、Numerical Recipes in Scheme が無いせいで名前が統一されてない感じ。
688デフォルトの名無しさんsage2008/05/03(土) 12:09:42
gaucheで毎回お気に入りのディレクトリを
add-load-pathするのが面倒なのでload-pathに一度登録して消えないように
できないでしょうか?
よろしくお願いします
689デフォルトの名無しさんsage2008/05/03(土) 12:39:45
>>688
ttp://practical-scheme.net/gauche/man/gauche-refj_14.html#SEC16

これ以外の方法だと、Gauche起動用のラッパーを、
シェルスクリプトなりバッチファイルなりSchemeなりで書くとか、
ショートカットに引数を指定するとか、好きにやってくれ。
690デフォルトの名無しさん2008/05/03(土) 13:05:13
Windows XPでDrScheme version 372を使っています
(:= (x y z) (1 2 3))
とすると
(define x 1)
(define y 2)
(define z 3)
としてくれるようなマクロを書こうと思ったのですが
(define-syntax :=
 (syntax-rules ()
  ((_ (x) (a))            (define x a) )
  ((_ (x y ...) (a b ...))  (define x a) (_ (x ...) (a ...) ))
  ((_ var val)           (define var val) ) ))
という形ではだめです
どうしたらよいのでしょうか
691デフォルトの名無しさんsage2008/05/03(土) 13:29:38
common lispでもGSLは呼べるよ
http://common-lisp.net/project/gsll/
692デフォルトの名無しさんsage2008/05/03(土) 13:32:10
>>690

(define-syntax defs
(syntax-rules ()
((_ (var ...) (obj ...))
(begin (define var obj) ...))))

(defs (x y z) (1 2 3))
693デフォルトの名無しさんsage2008/05/03(土) 18:09:28
Little Schemerを読み終わってから英語の小説を読んでいるときにcarが出てくるとつい反応してしまう。
あぁ、車なんだよなw
694デフォルトの名無しさんsage2008/05/03(土) 19:22:09
>>693
今までそういう脳内bindなかったけど今マップされちまったじゃねぇかw
695デフォルトの名無しさんsage2008/05/03(土) 20:23:54
>>694
mapもなw
696デフォルトの名無しさんsage2008/05/03(土) 20:42:43
>>695
だってcar,cdrはCAR,CDRと略語の意味で覚えた人とか居るはずなのにそこに突っ込みますかw(data register,address register)

697デフォルトの名無しさんsage2008/05/03(土) 20:46:20
2chにはcar板もcdr板もあるんだぜ
698デフォルトの名無しさんsage2008/05/03(土) 21:02:44
(゚Д゚)cdr-
699デフォルトの名無しさんsage2008/05/03(土) 21:03:54
(car)
700デフォルトの名無しさんsage2008/05/03(土) 23:24:27
(setq a '(c a r))
(append (cdr a) (list (car a)))
701デフォルトの名無しさんsage2008/05/03(土) 23:26:29
>>691
GLS はどうやったら呼べますか?
702デフォルトの名無しさんsage2008/05/03(土) 23:32:11
ちゃんと講演依頼をエージェント通せば呼べると思いますよ?
703デフォルトの名無しさんsage2008/05/03(土) 23:34:58
俺が死ぬまでに一度くらいは肉眼でご尊顔を拝見したいな
704デフォルトの名無しさんsage2008/05/04(日) 00:47:54
前にググってたらGLSが日本に来たときに
下北沢の飲み屋でみんなで一緒に飲んだとか
書いてあってうらやましかったんだけど。
705デフォルトの名無しさんsage2008/05/04(日) 02:20:24
mapcar関数がチップ化されたのかと思った
http://journal.mycom.co.jp/articles/2008/05/02/coolchips5/index.htm
706デフォルトの名無しさんsage2008/05/04(日) 02:21:26
>>705
リンク失敗。こっち。
http://journal.mycom.co.jp/articles/2008/05/02/coolchips5/index.html
707デフォルトの名無しさんsage2008/05/04(日) 02:31:40
Guy L. Steele Jr., Richard P. Gabriel 「Lispの進化」
ttp://www010.upp.so-net.ne.jp/okshirai/HOPL2-Uncut-j.txt
708デフォルトの名無しさんsage2008/05/04(日) 02:33:48
>>705-706
Asimov の「我はMAPCAR」みたく?w
709デフォルトの名無しさんsage2008/05/04(日) 02:41:38
>>707
それの原文
Guy L. Steele Jr., Richard P. Gabriel "The Evolution of Lisp"
ttp://www.dreamsongs.org/NewFiles/HOPL2-Uncut.pdf
710デフォルトの名無しさんsage2008/05/04(日) 06:36:46
したがって、我々は、将来のLispプログラマの世代が何度も何度も
Lispに対するAlgolスタイルのシンタックスを再発明し続けることを
予期し、彼らは、最初の夢中になる期間の後、それを拒絶し続ける
だろうということを同じく確信している(おそらく、このプロセスは、
Lispハッカーのための通過儀礼だと考えられるだろう)。

    /\___/ヽ   ヽ
   /    ::::::::::::::::\ つ
  . |  ,,-‐‐   ‐‐-、 .:::| わ
  |  、_(o)_,:  _(o)_, :::|ぁぁ
.   |    ::<      .::|あぁ
   \  /( [三] )ヽ ::/ああ
   /`ー‐--‐‐―´\ぁあ
711デフォルトの名無しさんsage2008/05/04(日) 13:03:57
彼らは、最初の夢中になる期間の後

一度は夢中になれw

でも、「最初の」ってことは2度目もあるのか?
712デフォルトの名無しさんsage2008/05/04(日) 14:57:09
WirthはPascal, Modula-2, Oberonと作りつづけているし
K&RもCの後でLimboを作っているし

Javaを作ったメンバーにLisperがいないとは言わせないw
713デフォルトの名無しさんsage2008/05/04(日) 15:26:57
全然話が違うだろ。
>>710の文はREDUCEのRLISPみたいな奴のことだろ。
714デフォルトの名無しさんsage2008/05/04(日) 16:14:12
>>713
>>707
3.7 いくつかの著しい失敗
から読めば分かるよ
715デフォルトの名無しさんsage2008/05/04(日) 17:09:35
>>714
何言ってんの?
716712sage2008/05/04(日) 17:14:13
ごめん、俺が起きがけではやとちりして書いてたw
717デフォルトの名無しさんsage2008/05/04(日) 17:18:37
そういや、一番普及したRLISPが書いてないね。
718デフォルトの名無しさんsage2008/05/04(日) 17:32:48
>>712
Gosling Emacs (Mock Lisp) => Java
719デフォルトの名無しさんsage2008/05/04(日) 17:34:07
>>717
RLISPって何?
720デフォルトの名無しさんsage2008/05/04(日) 17:35:18
RLISP の本があった

http://www.amazon.co.jp/dp/9810214790
721デフォルトの名無しさんsage2008/05/04(日) 17:37:34
Rubyで書いたLISP
722デフォルトの名無しさんsage2008/05/04(日) 17:42:39
(define person (lambda args
(let-keywords args ((name "Anonymous")
(age "unknown"))
(print name " is " age " years old."))))

(person :name "hogehoge" :age 99)

これが動かないのですが、どこが間違ってるんですかね・・・
723デフォルトの名無しさんsage2008/05/04(日) 17:49:50
なぜ処理系名とかを書かないの?
724デフォルトの名無しさんsage2008/05/04(日) 17:50:30
((name :name "Anonymous") (age :age "unknown"))
なんじゃね。知らんけど。
725デフォルトの名無しさんsage2008/05/04(日) 18:02:30
>>722
EmacsLispではdefineじゃなくdefunでおk
726デフォルトの名無しさんsage2008/05/04(日) 18:15:47
>>719
1960年代終わりごろに開発が進められたREDUCEっていう数式処理システムがあって、
これを書くためにLISP 1.5をもとにしたStandard LISPというLISP方言がつくられた。
で、このStandard LISPにはRLISPと呼ばれるAlgol風のシンタクスが定義されてて、
REDUCEユーザーは基本的にS式じゃなくて、このAlgol風の言語でプログラミングする
ようになってる。
727デフォルトの名無しさんsage2008/05/04(日) 18:26:33
Standard Lisp ってこれですね

http://reduce-algebra.com/docs/sl.pdf

これが RLisp のコードなのかな

http://centaur.maths.qmw.ac.uk/REDUCE/packages/rtrace/rtrace.red
728デフォルトの名無しさんsage2008/05/04(日) 18:33:32
R is for REDUCE だったか
729デフォルトの名無しさんsage2008/05/04(日) 18:43:57
80年代半ばまでは、
REDUCEは最も有名な数式処理システムだったし、
STANDARD LISPは最小公約数的なLisp仕様だったから、
ベンチマークにも良く使われた。
730デフォルトの名無しさんsage2008/05/04(日) 18:50:05
>最小公約数
731722sage2008/05/04(日) 18:51:02
すみません。処理系はGaucheです。
732デフォルトの名無しさんsage2008/05/04(日) 18:53:36
>>722
これか
ttp://karetta.jp/book-node/gauche-hacks/007611
733デフォルトの名無しさんsage2008/05/04(日) 18:54:49
>>722
let-keywords =>get-keywords
734デフォルトの名無しさんsage2008/05/04(日) 18:55:47
× let-keywords =>get-keywords
○ let-keywords =>get-keyword
735722sage2008/05/04(日) 19:04:32
get-keywordを使用した構文だとうまく動きました。
ありがとうございます。

でも何故let-keywordsを使用すると動かないんだろ・・・
736デフォルトの名無しさんsage2008/05/04(日) 20:09:31
>>735
どんなエラーが出るのか書いてもらわないと。
ちなみに手元のGauche 0.8.13では>>722が問題なく動作した。
737デフォルトの名無しさんsage2008/05/04(日) 20:35:38
>>736
こんなエラーです。
環境はubuntuのemacs23上で走らせてます。

(define person (lambda args
(let-keywords args ((name "Anonymous")
(age "unknown"))
(print name " is " age " years old."))))

(person :name "hogehoge" :age 99)

gosh> *** ERROR: unbound variable: age
Stack Trace:
_______________________________________
0 (age "unknown")
At line 106 of "(stdin)"
1 (name "Anonymous")
At line 105 of "(stdin)"
738デフォルトの名無しさんsage2008/05/04(日) 20:51:44
Gaucheのバージョン?
739デフォルトの名無しさんsage2008/05/04(日) 21:13:09
質問する人は常に舌足らずだな。的確な質問を出来るような人は自分で解決できるということか。w
740デフォルトの名無しさんsage2008/05/04(日) 21:32:21
ubuntuのgaucheは古いな。
741デフォルトの名無しさんsage2008/05/04(日) 21:54:05
つまりlet-keywordsが定義されてないだけじゃないか?知らんけど。
742デフォルトの名無しさんsage2008/05/04(日) 22:01:36
get-keyword はPlt Schemeとかにもあるが、let-keywordsは最近Gaucheがサポートした一般的ではない関数だ。
Gaucheのどのバージョンか判らないと質問にも答えられない。
743デフォルトの名無しさんsage2008/05/04(日) 22:50:40
バージョンの調べ方がわからない・・・orz
744デフォルトの名無しさんsage2008/05/04(日) 22:51:31
>>743
(gauche-version)
745デフォルトの名無しさんsage2008/05/04(日) 22:52:18
gosh -V
746デフォルトの名無しさんsage2008/05/04(日) 22:55:03
>>739
回答者のエスパー能力を試してるんだよ。
的確な答えをすると組織へ入れる(入れられる)らしい。
747デフォルトの名無しさんsage2008/05/04(日) 23:03:44
Gaucheのバージョンは"0.8.8"でした。
748デフォルトの名無しさんsage2008/05/04(日) 23:25:18
>>747
同じ症状の人多数。
ttp://d.hatena.ne.jp/MIZUNO/20080323/1206260194

0.8.12以上なら動くからバージョンアップ推奨。
749デフォルトの名無しさんsage2008/05/04(日) 23:40:32
>>746
団員バッジがかっこよければ俺も入るよ!
750デフォルトの名無しさんsage2008/05/04(日) 23:48:19
>>749
スコープ鶴崎とかいるかもしれんのにか?
751デフォルトの名無しさんsage2008/05/04(日) 23:52:49
組織名はゲロショッカー。基本吐くまで飲む。
752デフォルトの名無しさんsage2008/05/05(月) 03:47:30
>>739
そうなんだよ。
だから俺は何時までたっても自分で解決できないままなんだな。
753デフォルトの名無しさんsage2008/05/05(月) 04:17:35
質問するためのキーワード探索のために見当外れな質問が1回ぐらい必要
754デフォルトの名無しさんsage2008/05/05(月) 04:30:46
Emacsの中のドクターは的確だよな。
755デフォルトの名無しさんsage2008/05/05(月) 05:26:12
gauche-rfbの使い方を学べるサイトはないですか?
exampleのブラウザでの実行方法すらわかりません。
よろしくお願いします
756デフォルトの名無しさんsage2008/05/05(月) 08:07:24
>>755

わかりにくくて申し訳ない。

exampleの下のプログラムの解説は以下の通りです。実行する前にカレントディレクトリを
exampleディレクトリに移しておいてください。
あと、プログラム実行後、ttp://localhost:8080/ にアクセスするとブラウザ上に画面が
表示されます。

grad.scm - グラデーションパターンを描くプログラム
% gosh grad.scm

raytrace.scm - レイトレースで球体を描くプログラム
% gosh raytrace.scm
Paul GrahamのANSI Common Lispにある例題をGaucheに移植したものです
(ついでに色もつけている)

lifegame.scm - ライフゲームを実行するプログラム
% gosh lifegame.scm

bb-eval.scm - 黒板に書いたS式を実行するプログラム
% gosh -I. bb-eval.scm
黒板上でマウスの左ボタンを押しながらドラッグすると線が引けるので、それで文字を書いていってください。終わったら下の"Eval"ボタンを押すと結果が画面に表示されます。ただし、認識できる文字は数字と括弧()と一部の演算子(+と*)だけです。

ドキュメントはmakeすると、docディレクトリの下にinfo形式のドキュメントが生成
されます。
texi2htmlをもっているなら、make htmlで HTML形式のドキュメントが生成できます。
ただし、内容がないのであんまり参考にならないかも。

757デフォルトの名無しさんsage2008/05/05(月) 20:54:18
中の人乙
758デフォルトの名無しさんsage2008/05/05(月) 22:18:50
このfooは連番処理用に作ってみたもので、
(foo m n)は[m, n]の区間の整数のリストを返します
なんか改善するべきところあったら教えてください

(define (foo from to)
        (let ((f (if (< from to)
                     - +)))
          (define (foo2 n r)
            (if (= n from)
                (cons from r)
                (foo2 (f n 1) (cons n r))))
          (foo2 to ())))
759デフォルトの名無しさんsage2008/05/05(月) 22:42:43
好みの問題だけどnamed letの方が見やすい気がする
760デフォルトの名無しさんsage2008/05/05(月) 22:51:41
見易さと処理速度で改善ポイントは違うし、速度の場合は処理系依存な方法もあるかな。
もうすこし改善の優先順位を決めるとレスし易いかも。全く条件がないと好みの問題で済んでしまう希ガス。
761デフォルトの名無しさんsage2008/05/05(月) 23:03:36
>>754
ありがとうございます
すばらしい拡張ライブラリですね
762デフォルトの名無しさんsage2008/05/05(月) 23:04:11
>>754=>756
763デフォルトの名無しさんsage2008/05/05(月) 23:29:44
>>759
なるほど、named letってのがあるんですか
しかし素直にfもこのform内で束縛してしまおうとすれば余分な引数(fはfoo内で変化しない)が増えて
foo2の呼び出しが3引数になってしまうのが嫌ですね
かといって以下のコードのようにletを入れ子にするのもダサいですし

(define (foo from to)
        (let ((f (if (< from to)
                          - +)))
          (let foo2 ((n to)
                     (r ()))
            (if (= n from)
                (cons from r)
                (foo2 (f n 1) (cons n r))))))

>>760
処理系はgaucheで、見易さ優先でおながいします
この例だと末尾再帰の最適化さえあれば速度に大差はでない気がするので
764デフォルトの名無しさんsage2008/05/05(月) 23:31:30
>>763
(use srfi-1)
(define (foo from to)(iota(+(abs(- to from))1)from))
765デフォルトの名無しさんsage2008/05/05(月) 23:39:59
煽りじゃないけど、scheme って、CLのloopマクロないの?
(loop for n from 0 to 10 collect n)
766764sage2008/05/05(月) 23:41:34
>>763
この方が簡単かな。
(use srfi-1)
(define (foo from to)
(unfold (pa$ < to) values (pa$ + 1) from))
767デフォルトの名無しさんsage2008/05/05(月) 23:44:40
>>764のDrSchemeバージョン

(require (lib "1.ss" "srfi"))
(define (foo from to)(iota(+(abs(- to from))1)from))

(define display-line
(lambda (x)
(display x) (newline)))

(display-line (foo 1 10))

⇒ (1 2 3 4 5 6 7 8 9 10)
768デフォルトの名無しさんsage2008/05/05(月) 23:46:59
>>765
>>394みたいのじゃだめなのか?
769デフォルトの名無しさんsage2008/05/05(月) 23:49:38
>>766
そのps$はDrSchemeでは駄目。Gauche依存。
770766sage2008/05/05(月) 23:52:53
>>769
いや、>>763で「gaucheで見易さ優先」って書いてあるからあえてgaucheの簡便な記法を使ってみた。
見易いよね?cutでも大差ないかな。
771デフォルトの名無しさんsage2008/05/06(火) 00:02:58
>>770
Gauche使いには見易いけど、初学者ポイから処理系依存の説明よりは素直にcut使った方がいいかも。
まあ、ゴチャゴチャするけど、処理系を気にせずどこででも勉強できるように誘導する方が教育的かと。
772デフォルトの名無しさんsage2008/05/06(火) 00:06:22
ちなみに((pa$ + 1) 2) も ((cut + 1 <>) 2) も 3 を返す。
773デフォルトの名無しさんsage2008/05/06(火) 00:08:00
>>771
じゃあどこでも勉強できるようにpa$の定義を書いておきま。
(define-syntax pa$ (syntax-rules () ((_ f arg ...)(cut f arg ... <>))))
774デフォルトの名無しさんsage2008/05/06(火) 00:08:07
>>771
from < to の場合の挙動が違う気がする。
775763sage2008/05/06(火) 00:19:36
なるほど色々やりかたがあるんですね
とりあえず(foo 3 1) ; => (3 2 1)
のような事もシンプルにできる、かつ処理系依存が少ないのを考えるとiotaを使って

(define (foo from to)
        (iota (+ (abs (- to from)) 1)
              from
              (if (< from to) 1 -1)))

こんな感じになりました

emacs lispなら使えるんでloopマクロに近いsrfi-42のrange qualifierとか試してみましたが余計ややこしくなりそうでした
foldとか部分適用は一瞬脳がパンクしそうになりました
776デフォルトの名無しさんsage2008/05/06(火) 00:22:36
>>766>>773を併せたDrSchemeバージョン
; >>774の件は考慮してない

(require (lib "1.ss" "srfi"))
(require (lib "26.ss" "srfi"))

(define-syntax pa$
(syntax-rules ()
((_ f arg ...) (cut f arg ... <>))))

(define (foo from to)
(unfold (pa$ < to) values (pa$ + 1) from))


(define display-line
(lambda (x)
(display x) (newline)))

(display-line (foo 1 10))

⇒ (1 2 3 4 5 6 7 8 9 10)
777デフォルトの名無しさんsage2008/05/06(火) 00:44:59
Unfold-rightとcutとlambdaを使ったDrSchemeバージョン
; from toの順番になってて覚え易いかも

(require (lib "1.ss" "srfi"))
(require (lib "26.ss" "srfi"))

(define (foo from to)
(unfold-right (cut > from <>) values (lambda (x) (- x 1)) to))

(define display-line
(lambda (x)
(display x) (newline)))

(display-line (foo 1 10))
778デフォルトの名無しさんsage2008/05/06(火) 00:48:47
>>777を逆順にした>>776と同じ順番のDrSchemeバージョン

(require (lib "1.ss" "srfi"))
(require (lib "26.ss" "srfi"))

(define (foo from to)
(unfold (cut < to <>) values (lambda (x) (+ x 1)) from))

(define display-line
(lambda (x)
(display x) (newline)))

(display-line (foo 1 10))
779デフォルトの名無しさんsage2008/05/06(火) 01:06:19
>>776-778
もうその話題は終わったんだよ。
780デフォルトの名無しさんsage2008/05/06(火) 01:06:55
>>776と全く同じでcutを使ったDrSchemeバージョン

(require (lib "1.ss" "srfi"))
(require (lib "26.ss" "srfi"))

(define (foo from to)
(unfold (cut < to <>) values (cut + 1 <>) from))

(define display-line
(lambda (x)
(display x) (newline)))

(display-line (foo 1 10))
781デフォルトの名無しさんsage2008/05/06(火) 01:08:10
>>779
あら
782デフォルトの名無しさんsage2008/05/06(火) 01:09:34
色々な書き方出来るんだね。
783デフォルトの名無しさんsage2008/05/06(火) 01:10:19
まあ、ほとんど同じ内容のものを特に意味も無くダラダラ書かれても…
って気はするな。
784デフォルトの名無しさんsage2008/05/06(火) 01:17:51
lambdaだけでも書ける。
cut用のsrfi-26もいらない。unfold-rightを使った逆順も書ける。

(require (lib "1.ss" "srfi"))

(define (foo from to)
(unfold (lambda (x) (< to x)) values (lambda (x) (+ x 1)) from))

(define display-line
(lambda (x)
(display x) (newline)))

(display-line (foo 1 10))
785デフォルトの名無しさんsage2008/05/06(火) 01:19:31
そかな?勉強になるからうれしい。
786デフォルトの名無しさんsage2008/05/06(火) 01:26:58
大きく分けるとiotaかunfold/unfold-rightの2通りが簡潔で良さげ
787デフォルトの名無しさんsage2008/05/06(火) 01:30:32
pa$かcutかlambdaのどれが良いのかって、あまり関係ないのかな。
ライブラリ要らずと言う点ではlambda最強?
788デフォルトの名無しさんsage2008/05/06(火) 01:33:33
>>787
iotaもunfoldもsfri-1が必要だろ。
789デフォルトの名無しさんsage2008/05/06(火) 01:38:37
速度はどれが一番?
790デフォルトの名無しさんsage2008/05/06(火) 01:53:17
こんなループの速度なんて処理系次第だから実測しかないんじゃね
791デフォルトの名無しさんsage2008/05/06(火) 02:03:39
(処理系がインタプリタの場合の指標)
繰り返し処理が…
a)組み込み関数を使う => おそらく最速
b)ループで実装 => 結構速い
c)named-letなど末尾再帰呼び出しで実装 => まあまあ速い
d)再帰呼び出しで実装 => 使わない方が良い
792デフォルトの名無しさんsage2008/05/06(火) 05:51:42
>>791
繰り返し(iteration)を再帰(recursion)で実装とか、
なんか用語的におかしくね?
793デフォルトの名無しさんsage2008/05/06(火) 06:29:04
再帰は手段
目的は繰り返し
794デフォルトの名無しさんsage2008/05/06(火) 06:35:47
繰り返しも手段
目的は反復処理
795デフォルトの名無しさんsage2008/05/06(火) 07:34:55
>>794
それはただの言葉遊び
796デフォルトの名無しさんsage2008/05/06(火) 09:16:58
ubuntu user多いな
8.04にしたのかな
797デフォルトの名無しさんsage2008/05/06(火) 14:19:35
>>795
プログラム技術板なんだしテクニカルタームは正しく使おうぜ
798デフォルトの名無しさんsage2008/05/06(火) 14:56:40
再帰が繰り返し処理にしか使えないと思ってない?
799デフォルトの名無しさんsage2008/05/06(火) 15:22:25
ubuntu 8.04 の gauche は 0.8.12 になってるなぁ
800デフォルトの名無しさんsage2008/05/06(火) 15:55:22
Mingwビルド版のGaucheでスレッド(pthread)を使えるように試してみた。
http://karimofu.nu/dlp/mofu6_0925.zip.php (ダウンロードパスはgauche)
かなり強引で怪しげなシロモノだけど…。
801(define (´∀`) 'マターリ)sage2008/05/07(水) 01:57:35
(define (foo m n)
(map (lambda (x) ((if (> m n) - +) m x))
(let loop ((n (abs (- n m))) (r '()))
(if (zero? n) (cons 0 r)
(loop (- n 1) (cons n r))))))
802デフォルトの名無しさんsage2008/05/07(水) 18:13:48
>>801
IndexズレрxO!
803デフォルトの名無しさんsage2008/05/07(水) 18:15:15
EoPL第三版到着!
804デフォルトの名無しさんsage2008/05/07(水) 19:15:33
アスペクト指向って時おり聞くんですが
汎関数と何が違うんでせうか

なんだか名前空間の管理ポリシーの違いで
オブジェクト指向とかアスペクト指向とか
いってるだけな気がするんですが…
805デフォルトの名無しさんsage2008/05/07(水) 19:17:41
バレたか!
806デフォルトの名無しさんsage2008/05/07(水) 19:41:57
Actor指向じゃ駄目ですか
807デフォルトの名無しさんsage2008/05/07(水) 21:13:36
>>800
808デフォルトの名無しさんsage2008/05/07(水) 21:30:04
>>800
もし差し支えなかったらBoehm-GCをpthreadに対応させた方法を教えて頂けませんか?
OS依存部のLinux以外へのポートの戦略あたりをできれば
809デフォルトの名無しさんsage2008/05/07(水) 22:09:22
>>808
configure.ac の160行目付近に
  *-*-mingw*)
   AC_DEFINE(GC_WIN32_THREADS)
   AC_DEFINE(THREAD_LOCAL_ALLOC)
   win32_threads=true
   ;;
要するに基本的に cygwin と同じになるように。
それから
configure --enable-threads=pthreads
make

あと細かいところは引っかかる都度に手直ししただけ。
本当に大丈夫なのかどうか全然わからん。

それからwindows版の pthread において pthread_t は構造体なので
gauche の vm.c の中で比較してる部分を THREAD_EQUAL マクロにおきかえ。
make とかはいろいろいじったけど。

以上は細かい手直しだけでいけると思うんだけど、重要な違いがひとつ。
Windows版の pthread は pthread_sigmask が実装されてない。
で、どうしたかというと…   コメントアウトしますた (´・ω・`)

実装されてないものは本格的になんとかしようとするとちょっとした手直しでは済まないと思う。
windowsのAPIを直接使うよりは簡単に移植できるんじゃないかと期待するけど、
さっぱわからんので、「大まかにはWindowsでもpthreadが使えるかも」という実験的意味合いと思ってちょ。
810デフォルトの名無しさんsage2008/05/07(水) 22:45:01
>>801

(define foo
(lambda (m n)
(letrec
((r '())
(loop (lambda(x)
(if (>= x m)
(begin (set! r (cons x r))
(loop (- x 1)))))))
(loop n)
r)
))
811デフォルトの名無しさんsage2008/05/07(水) 23:35:19
>>801のはR5RSだと(0 1 ... 9)だけどちょっとゆるいと(1 2 ... 10)になるw
てかちゃんと書け
812デフォルトの名無しさんsage2008/05/08(木) 13:40:03
>>804
古いOOPではクラス定義にコードが分散してしまうようなプログラミング対象、
例えば、スレッド処理、例外処理、ロギング、トランザクション管理、を、"aspect"と呼んで、
オブジェクトと"weaving"することでプログラムを構成しようという方法論がAOP。
"Aspect"を、OOモデリングと直行させて整理しようという考え。

CLOSな人達にとっては、特に新しいことではないけれど、
概念を整理し直し、設計の指針を示すのは良いことだと思う。
それに従おうと従うまいと、一つのパースペクティブが持てるので。
813804sage2008/05/08(木) 14:12:33
>805
やっぱそうなんすか…

>806
wikipediaでアクターモデル斜め読みしてみたんですが
CSPをもうちょい具体的にしたようなもんですか?
814804sage2008/05/08(木) 14:13:50
>812
丁寧な解説ありがとうございます
なんとなくわかったような気がします
815デフォルトの名無しさんsage2008/05/08(木) 17:51:30
リリースしました。

http://sourceforge.net/project/showfiles.php?group_id=25227
> Gauchebox 0.8.13-box1 May 8, 2008
> Gauche-mingw 0.8.13-mingw1 May 8, 2008
816デフォルトの名無しさんsage2008/05/08(木) 17:51:48
AspectとActorとOOPの関係がよくわからないです。
ActorってOOPのもとになったモデルと思ってましたが、Aspectってのもあるんですか。
817デフォルトの名無しさんsage2008/05/08(木) 17:54:10
>ActorってOOPのもとになったモデルと思ってましたが

違います
818デフォルトの名無しさんsage2008/05/08(木) 18:36:27
The Actor model is a mathematical model of concurrent computation that treats "actors" as the universal primitives of concurrent digital computation.
アクターモデルとは、並行計算の数学的モデルの一種で、並行デジタル計算の汎用的基本要素として「アクター」を扱っている。
819デフォルトの名無しさんsage2008/05/08(木) 18:39:02
アクターモデルの基本は「全てのものはアクターである」という哲学で、オブジェクト指向プログラミングにおける「全てのものはオブジェクトである」という考え方と似ている。
しかし、オブジェクト指向ソフトウェアでは基本的に逐次的に実行するのに対して、アクターモデルでは本質的に並行性を備えている点が異なる。
820デフォルトの名無しさんsage2008/05/08(木) 18:48:55
そだね。
821デフォルトの名無しさんsage2008/05/08(木) 20:30:03
じゃ、アクターとアスペクトの流れは平行計算の流れで合流して新時代到来?
822デフォルトの名無しさんsage2008/05/08(木) 21:01:36
エージェント指向?
823デフォルトの名無しさん2008/05/08(木) 21:02:53
>>820
同じく。 Hewittのペーパーを少し読めば。
824デフォルトの名無しさんsage2008/05/08(木) 22:35:54
Lisp/Scheme:John McCarthy ←対立→ Planner/Prolog:Carl Hewitt、Marvin Minsky、Seymour Papert、Mike Peterson
                                       ↓
                            Smalltalk-71:Alan Kay
                                       ↓
                            Actor Model:ヒューイットの1973年の論文

825デフォルトの名無しさんsage2008/05/08(木) 22:42:50
Planner/Prolog:Carl Hewitt⇒Smalltalk-71:Alan Kay ⇒Actor Model:ヒューイットの1973年の論文⇒
⇒⇒leanTAP⇒KANREN⇒miniKANREN⇒alphaKANREN ⇒
⇒⇒concurentKANREN (on concurrent Scheme/Arc)
826デフォルトの名無しさんsage2008/05/08(木) 22:44:31
Little Actor 嫁
827デフォルトの名無しさんsage2008/05/08(木) 22:46:17
Actor を並べ替えると To Arc になる不思議w
828デフォルトの名無しさんsage2008/05/08(木) 22:48:51
Carl Hewitt, "A Universal Modular Actor Formalism for Artificial Intelligence". IJCAI.(1973)
829デフォルトの名無しさんsage2008/05/09(金) 00:07:18
    _,,.-‐-..,,_       _,,..--v--..,_
    /     `''.v'ν Σ´        `、_,.-'""`´""ヽ
    i'   / ̄""''--i 7   | ,.イi,i,i,、 、,、 Σ          ヽ
.     !ヘ /‐- 、u.   |'     |ノ-、 ' ` `,_` | /i'i^iヘ、 ,、、   |
    |'' !゙ i.oニ'ー'〈ュニ!     iiヽ~oj.`'<_o.7 !'.__ ' ' ``_,,....、 .|
.   ,`| u       ..ゝ!     ‖  .j     (} 'o〉 `''o'ヽ |',`i
_,,..-<:::::\   (二> /      !  _`-っ  / |  7   ̄ u |i'/
. |、 \:::::\ '' /        \ '' /〃.ヽ `''⊃  , 'v>、
 !、\  \. , ̄        γ/| ̄ 〃    \二-‐' //

 ゴクリ…
830デフォルトの名無しさんsage2008/05/09(金) 00:23:22
Smalltalk-71 は Smalltalk という名前は付いていますが、ケイがメッセージングによる
プログラミング(彼はこれをOOと呼んだ)を思いつく前のものなのでOOとは無関係です。

メッセージングを意識して作られたのは Smalltalk-72 からです。これを見てインスパイア
されたヒューイットがあみ出したのがアクター理論で、PLANNER 上で実践されました。

以上は 1972-3 年の出来事ですが、アスペクト指向はもっとずっと後で生じた考え方です。
831デフォルトの名無しさんsage2008/05/09(金) 01:14:39
73年の論文はアクターモデル。
77年の論文はデイナ・スコットの連続関数に表示的意味論の基盤を与えたので、ここから理論と呼べるだろうということでアクター理論と呼ぶ。
でも77年の論文には間違いがあったので、81年にWill Clingerによって修正され、アクター理論が完成した。


アスペクト指向(aspect-oriented programming:AOP)は Xerox PARC の Gregor Kiczales のチームが

Kiczales, Gregor; John Lamping, Anurag Mendhekar, Chris Maeda, Cristina Lopes, Jean-Marc Loingtier, and John Irwin (1997).
"Aspect-Oriented Programming", Proceedings of the European Conference on Object-Oriented Programming, vol.1241, pp.220--242.

で発表してからだから20年程たってから出てきた理論。
832デフォルトの名無しさんsage2008/05/09(金) 01:31:41
>Smalltalk-71 は Smalltalk という名前は付いていますが、ケイがメッセージングによる
>プログラミング(彼はこれをOOと呼んだ)を思いつく前のものなのでOOとは無関係です。

>メッセージングを意識して作られたのは Smalltalk-72 からです。これを見てインスパイア
>されたヒューイットがあみ出したのがアクター理論で、PLANNER 上で実践されました。

http://en.wikipedia.org/wiki/Actor_model
Alan Kay was influenced by message passing in the pattern-directed invocation of Planner in developing Smalltalk-71.
Hewitt was intrigued by Smalltalk-71 but was put off by the complexity of communication that included invocations with
many fields including global, sender, receiver, reply-style, status, reply, operator selector, etc.

ヒューイットはSmalltalk-72 を見てインスパイアされたとは73年の論文(p.244の前後)にも書いてないですね。よろしかったら原典教えてください。
http://dli.iiit.ac.in/ijcai/IJCAI-73/PDF/027B.pdf
833デフォルトの名無しさんsage2008/05/09(金) 02:35:48
名前が芥川龍之介の芥から来ているのは意外と知られてないな。
834デフォルトの名無しさんsage2008/05/09(金) 02:39:48
知られてないよね
835デフォルトの名無しさんsage2008/05/09(金) 03:43:12
SRFI-1の
(iota count start step)の
countが0だったり
countがマイナス値だったり
stepが0だったり
した場合どうなるの?
836デフォルトの名無しさんsage2008/05/09(金) 04:44:28
>>833
じゃゴミなんだ?
837デフォルトの名無しさんsage2008/05/09(金) 07:21:41
>>835
仕様を見る限り、未定義ってことじゃないかなあ。
(iota 0)は () になるのが自然だと思うけど。
838デフォルトの名無しさんsage2008/05/09(金) 08:39:25
>>832
>>830の原典が何かは知らないがThe Early History of SmalltalkでAlan Kayはこう述べてるね

In November, I presented these ideas and a demonstration of the interpretation scheme to
the MIT AI lab. This eventuall led to Carl Hewitt's more formal "Actor" approach [Hewitt 73].
<http://gagne.homedns.org/~tgagne/contrib/EarlyHistoryST.html>

上のはtypoが結構あるので実物を確かめたい場合はこっちのpdfで
; pdfっていっても実際は画像だけど
<http://www.metaobject.com/papers/Smallhistory.pdf>
839デフォルトの名無しさんsage2008/05/09(金) 14:33:19
>>831
AOPは理論じゃないです。
一応レスしときます。
840デフォルトの名無しさんsage2008/05/09(金) 14:39:14
>>819
> しかし、オブジェクト指向ソフトウェアでは基本的に逐次的に実行するのに対して、

それはおかしい。
841デフォルトの名無しさんsage2008/05/09(金) 15:12:42
何が?
842デフォルトの名無しさんsage2008/05/09(金) 15:18:47
オブジェクト指向かどうかと言語が手続き型かどうかは直交してるということでは。
843デフォルトの名無しさんsage2008/05/09(金) 17:22:45
OOは実行モデルじゃないからね。
844デフォルトの名無しさんsage2008/05/09(金) 18:18:31
ニヤニヤ
845デフォルトの名無しさんsage2008/05/09(金) 18:24:06
発話者毎に用語の定義がマチマチな件
846デフォルトの名無しさんsage2008/05/09(金) 18:26:08
>>839
理論じゃないなら手法とでもしときますか?
847デフォルトの名無しさん2008/05/09(金) 21:30:13
>>824

 で思い出したけれど、μPlannerやConniverって、処理系が
 何処かにある?
848808sage2008/05/09(金) 21:57:10
>>809
ありがとうございます。
レス遅くなって申し訳ありません。
Boehm-GCはcygwinに対応してるのですね。
cygwinはBoehm-GCの守備範囲外だとおもってました。
OpenBSDにポートする時の参考にしようと思ったのですが
あまりなりそうにないですね。
せっかく答えていただいたのにすみません。
849デフォルトの名無しさんsage2008/05/09(金) 22:01:52
MICRO-PLANNER REFERENCE MANUAL

by
Gerald Jay Sussman and Terry Winograd
              (1970)

ttp://dspace.mit.edu/bitstream/1721.1/5833/2/AIM-203.pdf
850デフォルトの名無しさんsage2008/05/09(金) 22:09:45
THE CONNIVER REFERENCE MANUAL

                by
Drew V. McDermott and Gerald Jay Sussman
              (1972)

ttp://dspace.mit.edu/bitstream/1721.1/6204/2/AIM-259a.pdf
851デフォルトの名無しさんsage2008/05/09(金) 22:27:28
Gerald Jay Sussman と Terry Winograd によるPlanner のサブセット Micro-Planner は、当時主流であった論理的アプローチとは異なる手法を提案した。

論理的アプローチ派の Robert Kowalski は Alain Colmerauer と共同で Micro-Planner によく似た Prolog を開発した。

不幸なことにMicro-Plannerはバックトラッキングの扱いにくさを証明するが、制御構造に関する議論を活性化した。

このころ、Peter Landin は J (Jump) 演算子を使って非常に強力な制御構造を導入した。

Drew McDermott と Gerald Sussman は、Landin のコンセプトを 「Hairy Control Structure」と呼びさらに発展させ、Conniver 言語に実装した。

852デフォルトの名無しさんsage2008/05/09(金) 22:36:08
MITのAI LAB.で作る言語は CONNIVER とか PLANNER とか 「考えるもの」系の名前をつける伝統だったので
Schemeの名前は、Conniverよりもっとスニーキー(卑劣)なPlannerという意味のSchemerとなるはずだった。
ところが、ファイル名の制限 (6文字+3文字)でSCHEMEになってしまった。
Planner -> Conniver -> Schemer。
これを知っているとLittle SchemerシリーズがSchemeと呼んでいない理由もうなずける。


853デフォルトの名無しさんsage2008/05/09(金) 22:48:46
さすがにLittle Sneakerとは呼ばなかったのかw
854デフォルトの名無しさんsage2008/05/09(金) 22:53:16
>>847
みつからんね。
855デフォルトの名無しさんsage2008/05/09(金) 23:29:31
             Scheme
An Interpreter for Extended Lambda Calculus

              by
Gerald Jay Sussman and Guy Lewis Steele Jr.
             (1975)

http://dspace.mit.edu/bitstream/1721.1/5794/2/AIM-349.pdf
856デフォルトの名無しさんsage2008/05/09(金) 23:40:19
>>855
Schemeの場合、p.41にも書いてあるけどHewittのPLASMA(1975)の影響が大きい。
857デフォルトの名無しさんsage2008/05/10(土) 00:22:52
             PLANNER
      A Language for Proving Theorems

               by
            Carl Hewitt
              (1967)

ttp://dspace.mit.edu/bitstream/1721.1/6144/2/AIM-137.pdf
858デフォルトの名無しさんsage2008/05/10(土) 00:29:08
Gauche ユーザリファレンス: 11.10 file.filter - ファイルのフィルタ
ttp://practical-scheme.net/gauche/man/gauche-refj_127.html#SEC377
"このモジュールは、フィルター型のコマンド、すなわち入力を読み込み、処理をして結果を書き出すような場合に共通するパターンに使えるユーティリティ手続きを提供します。"

なんだ、こんなのあるんだ。
859デフォルトの名無しさん2008/05/10(土) 00:47:11
関数の引数が変数にリストの形で入っていた場合、
普通はapplyを使うわけですが、
ドットリストを使えば普通に使えるじゃんと
思ってしまってGaucheで試してみたんですが…

(+ . (1 2 3)) ; => 6
(define lst '(1 2 3)) ; => #t
(+ . lst)
=> *** ERROR: improper list can't be evaluated: (+ . lst)

以下のような簡約過程をイメージしていたのですが思うようにはいきませんでした。
(+ . lst)
-> (+ . (1 . (2 . (3 . ()))))
-> (+ 1 2 3)
-> 6

なぜこのようなケースがエラーになるのでしょうか?
860デフォルトの名無しさんsage2008/05/10(土) 00:59:39
>>859
リストの cdr は評価される場所じゃないから
861デフォルトの名無しさんsage2008/05/10(土) 02:26:41
>>859
A. (define lst '(1 2 3)) ; => #t   -> 変数のlst
B. (+ . lst) -> 値のlst

両方のlstは同じではないよ。

gosh> (eval (cons '+ lst) (scheme-report-environment 5))
=> 6
(cons '+ lst) -> '(+ . (1 2 3)) -> '(+ 1 2 3)

さいごのえばってるの。
862デフォルトの名無しさんsage2008/05/10(土) 03:12:41
えいじろうをみてると嫌な表現があるね。
lisping
【名】サ行発音不全(症)

gosh
【間投】おやっ!、えっ!
God の遠回しな言い方。驚き・不快感などを表す。
・Oh, my gosh. まあ、大変。/参ったなあ。

863デフォルトの名無しさんsage2008/05/10(土) 07:21:34
>>859
そのアイディア、つまり (op arg1 arg2 . args) という形式を
(apply op arg1 arg2 args) と解釈したらどうか、という話は
繰り返し浮上するのだが、argsが単なる変数でない式だった場合に
破綻する。S式の定義から、(op arg1 arg2 . (op2 argx)) は
(op arg1 arg2 op2 argx) と区別できない。
argsが変数の場合だけ特別扱いするというのは何か気持ち悪い。
864デフォルトの名無しさんsage2008/05/10(土) 09:45:43
>>859 じゃないけど
変数の時だけではなく評価前のS式が dotted list のときだけ apply と看做す
のはだめなのかな。 scheme だと (define (a b . c) ...) とか書けるし。
865デフォルトの名無しさんsage2008/05/10(土) 09:55:10
>>864
だからその「ときだけ」ってのが気色悪いって言ってんの。
866デフォルトの名無しさんsage2008/05/10(土) 10:20:43
>>864
マクロ書くときにバグの原因になりそう
867デフォルトの名無しさんsage2008/05/10(土) 12:00:30
>>862
 gaucheは「ぎこちない、気のきかない、不器用な」

◎Extra Example

 “I’m so gauche. I’ll never be a good cellist.”
“Don’t say that, Mr. Swallow. Just keep practicing.”  

 「ぼくはとても不器用です。決してチェロをうまく弾けるようにはならないでしょう」 
 「そんなこと言わないでください、スワローさん。練習あるのみです」

http://getupenglish.blog.ocn.ne.jp/getupenglish/2008/03/chic_gauche_78a1.html
868デフォルトの名無しさんsage2008/05/10(土) 13:24:10
Gaucheとはフランス語で"左"という意味です。つまり"Right"(右)に対する"Left"(左)です。

ttp://karetta.jp/book-node/gauche-hacks/008237

;; Guile についても調べてみたけど辞書的な意味しか分からなかった

guile【名】
悪巧み、策略{さくりゃく}、ずるさ、陰険{いんけん}さ、狡猾{こうかつ}さ

http://eow.alc.co.jp/guile/
869デフォルトの名無しさんsage2008/05/10(土) 13:31:44
お前ら暇そうだな
870デフォルトの名無しさんsage2008/05/10(土) 13:36:29
化学だと gauche っつーとこうだな。
ttp://ja.wikipedia.org/wiki/%E3%82%B4%E3%83%BC%E3%82%B7%E3%83%A5%E5%9E%8B
871デフォルトの名無しさんsage2008/05/10(土) 21:16:29
質問なんですけど、皆さんはSchemeで内部関数を書く時
・letrecとinternal defineのどちらを使いますか?
・定義部のみbeginで囲みますか?本体部のみbeginで囲みますか?beginを書きませんか?
・beginをそのまま使いますか?マクロでラップしていますか?

自分は内部関数定義部と本体部でインデントが違って欲しいので
internal defineをbeginに展開されるマクロwhereで囲って書いています。

でも逐次式としてのbeginはまだ意味が分かるんですけど
定義部のbeginは意味が分からない…
内部定義は未規定の順番で行われる訳ですし。

なぜ定義にもbeginが使えるのでしょうか?
なぜsyntax-rulesでもCLマクロでも記述できないのに派生式扱いなのでしょうか?
どんな歴史的経緯からSchemeに導入されたのでしょうか?
872デフォルトの名無しさんsage2008/05/10(土) 23:49:11
letrec とか let* とか、似たような構文が色々あってわかんねーんだよなぁ。
俺は SICP をちょこちょこやってるレベルなんだけど。let 以外のことをやり
たいときは大体 define 使う。
873デフォルトの名無しさんsage2008/05/11(日) 00:04:30
>>871
・internal defineを使います。
・beginを書きません。
・beginがどうしても必要ならそのまま使います。

>なぜ定義にもbeginが使えるのでしょうか?
beginが使えないと、複数の定義の集まりに展開されるマクロが書けないのでは?

>なぜsyntax-rulesでもCLマクロでも記述できないのに派生式扱いなのでしょうか?
定義として使われるbeginとマクロのbeginは別物だと思います。
前者はelseやunquoteに近いものではないかと。
874デフォルトの名無しさんsage2008/05/11(日) 00:52:40
なぜ定義をまとめる式と逐次式が同じbeginなのか?というのが謎ですね。
単なる逐次式のbeginならsyntax-rulesでもCLマクロでも派生式として書けますから
定義をまとめる式を原始式としてwhereなりdeclareなり別に用意したほうが良さそうなのに
あえて同じ構文キーワードになっているのには
何か歴史的な経緯があるのではないか?と思ったのです。
875デフォルトの名無しさんsage2008/05/11(日) 08:12:31
それだけのために「別に用意する」のが嫌だったのでは。
876デフォルトの名無しさんsage2008/05/11(日) 11:03:12
FACOM α を使ってた人はいますか?

現在のパソコン上のLispは当時のLispマシンと比較して
どのくらいの性能なのでしょう?
877デフォルトの名無しさん2008/05/11(日) 11:29:47
>>876
使った事はありますという程度ですが。
フロントに汎用機やミニコン(死語?)をおいたマシンでしたね。

『どのくらいの性能』って、何の値が希望?
878876sage2008/05/11(日) 11:58:49
>>877

おお、使ってらっしゃったのですね。

consできるセルの数は?
竹内関数の実行スピードは?
といったことです。

listやmapが機械語で操れるマシンに憧れます。
富士通はまた作らないのかなぁ。
879デフォルトの名無しさんsage2008/05/11(日) 13:24:39
>>876
αは使ったことないけど、

> 現在のパソコン上のLispは当時のLispマシンと比較して
> どのくらいの性能なのでしょう?

どの面から見ても桁違いに高い性能なのは間違いない。
その割にたいしたことが出来てないのでがっかりしている。(自分に対して)
880デフォルトの名無しさんsage2008/05/11(日) 14:06:44
>>878
> listやmapが機械語で操れるマシンに憧れます。

FACOM αってのは使ったことないが、list くらいなら今でも機械語で操れる
つか, JAVA の VM を直接実行してるようなイメージなんだが > Lisp マシン

# この辺、見てみれば? http://spa.jssst.or.jp/1998/020_yamazaki.html
881デフォルトの名無しさんsage2008/05/11(日) 14:20:22
lispのリスト操作関数そのままの機械語命令がある、ということだと思うが...
(リンク先のはそういうのだよね)
882デフォルトの名無しさんsage2008/05/11(日) 14:29:14
>>880
そなの? アルファって map までバイトコード定義だったの?
# map やってる間に割り込めるんだったら CPU 作った奴の英断に敬意を表するぞ!
883デフォルトの名無しさんsage2008/05/11(日) 17:26:43
>>880
そういえば大先生が作ったTAOのcpuはELISって言うんだなぁ。
ELISと言えば中尉か6800のイメージしか無いなぁ。

Lispmachineの方はどんなんだったんだろ?
(なんかの展示会で実マシン見たこと一回だけある程度、その後MAC用にNUBUSのカードが出てたけど買えなかった)

884デフォルトの名無しさんsage2008/05/11(日) 17:43:40
>>882
> # map やってる間に割り込めるんだったら CPU 作った奴の英断に敬意を表するぞ!

mapの途中で割り込みはさすがに豪快だが、CISCでストリング命令とか、
中間状態をレジスタの値として保存して再開可能な作りにしてある石は
あったように思う。使ったという記憶じゃないのでうろおぼえだが。
885デフォルトの名無しさんsage2008/05/11(日) 20:20:36
継続の勉強中にこのコードに出会った。

(let* ((yin ((lambda (foo) (newline) foo)
       (call/cc (lambda (bar) bar))))
    (yang ((lambda (foo) (write-char #\*) foo)
       (call/cc (lambda (bar) bar)))))
 (yin yang))

正解はこちら。おもしろいね。

ttp://practical-scheme.net/wiliki/wiliki.cgi?Scheme%3Acall%2Fcc%E3%83%91%E3%82%BA%E3%83%AB

ttp://groups.google.com/group/comp.lang.scheme/browse_frm/thread/a5479dbeb298639c?dq=&hl=ja&lr=&ie=UTF-8&prev=/groups%3Fhl%3Dja%26group%3Dcomp.lang.scheme
886デフォルトの名無しさんsage2008/05/11(日) 21:16:13
((call/cc
 (lambda (goto)
  (letrec ((start
        (lambda ()
         (print "start")
         (goto next)))
       (froz
        (lambda ()
         (print "froz")
         (goto last)))
       (next
        (lambda ()
         (print "next")
         (goto froz)))
       (last
        (lambda ()
         (print "last")
         (+ 3 4))))
   start))))
887デフォルトの名無しさんsage2008/05/11(日) 21:25:47
((call/cc call/cc) (call/cc call/cc))
888デフォルトの名無しさんsage2008/05/12(月) 13:00:28
>>859
Common Lispだと、
> (setq x '(1 2 3))
> (eval `(+ ,@x))
ということをしたいってことになりますが。
889デフォルトの名無しさんsage2008/05/12(月) 13:13:02
>>879
>その割にたいしたことが出来てないのでがっかりしている。(自分に対して)

同じく。憧れだったスーパーマシン以上のものが今では
パソコン上で実現されてるんだけど、自分は使いこなせていない。
竹内先生の本で本物のLispに憧れていた頃の方が燃えていたかも
しれない。

890デフォルトの名無しさんsage2008/05/12(月) 13:14:57
lispのマクロ=手続きを抽象化していろいろ変形する機能

ならば、リファクタリングツールの充実してる言語でも同じようなことできそう
891デフォルトの名無しさんsage2008/05/12(月) 13:20:52
>>859は.を見てconsしているのがreadだということをちゃんと理解できてないのでは?
そして何故かread時にcdr部がevalれることを期待している。
892デフォルトの名無しさんsage2008/05/12(月) 22:12:40
>>859 がやろうとしているのはこんな事?

こういうを式を
(eval '(+ . (1 2 3)))

こうする
(+ . '(1 2 3))
ドットをシンボルとして評価することになるのでダメ。
ドットはシンボルではない?

ドットをドットのまま評価させようとして
(+ '. '(1 2 3))
ドットに、直接 '. してもドットリストは作れない
893デフォルトの名無しさんsage2008/05/12(月) 23:02:35
'|.|

……じゃないよな
894デフォルトの名無しさんsage2008/05/12(月) 23:06:26
鯨が魚でないのと同様に、ドットはシンボルではありません。
895デフォルトの名無しさんsage2008/05/12(月) 23:24:41
そういえば、ドットって型の一つなの?
896デフォルトの名無しさんsage2008/05/12(月) 23:58:14
>>895
んなわけないだろ
897デフォルトの名無しさんsage2008/05/13(火) 00:49:19
>>895
これは酷い
898デフォルトの名無しさんsage2008/05/13(火) 02:00:17
>>895
そもそもデータではない。'(' と同じようなもの。
899デフォルトの名無しさんsage2008/05/13(火) 05:39:01
ドトリストの印字表現です
900デフォルトの名無しさんsage2008/05/13(火) 21:13:02
> '(1 . (2 . (3 )))
(1 2 3)
>

へ〜、そうなんだ。
901デフォルトの名無しさんsage2008/05/13(火) 23:05:14
何故に、car と cdr なのかはっきりわかる。
902デフォルトの名無しさん2008/05/14(水) 21:17:14
新星誕生!
ttp://slashdot.jp/developers/08/05/14/0248258.shtml
903デフォルトの名無しさんsage2008/05/14(水) 21:18:47
REPLはまだできないけど、きっと覚えます!
904デフォルトの名無しさんsage2008/05/14(水) 21:30:18
Contents of the Address part of Register number
Contents of the Decrement part of Register number
905デフォルトの名無しさんsage2008/05/15(木) 00:39:32
>904
略語のフルスペルを示されてもなぜCARとCDRなのかは分からんだろ?
元となるコンピュータのレジスタ構成を知らないと何のこっちゃ?になる。
906デフォルトの名無しさんsage2008/05/15(木) 00:56:26
車は左を走るから、で十分だ。俺には。
907デフォルトの名無しさんsage2008/05/15(木) 03:08:01
>>902
Mosh User's Reference
ttp://mosh.monaos.org/top.html
908デフォルトの名無しさんsage2008/05/15(木) 08:58:12
moshのmakeにはgaucheが必要です
ってなんじゃそら
909デフォルトの名無しさんsage2008/05/15(木) 08:58:57
ghcのmakeにghcが要るようなものだろう
910デフォルトの名無しさんsage2008/05/15(木) 10:20:26
moshの読み方はやっぱ喪主
911デフォルトの名無しさんsage2008/05/15(木) 11:19:55
>>908
version 0.0.2だもの、セルフはまだ無理だろ。
912デフォルトの名無しさんsage2008/05/15(木) 11:33:04
Arcの実行にはMzSchemeが(ry
913デフォルトの名無しさんsage2008/05/15(木) 12:01:47
pgのお墨付きですねわかります
914デフォルトの名無しさんsage2008/05/15(木) 12:23:55
モシュじゃなくてモッシュと読みたい。モシュでは縁起悪いから。
915デフォルトの名無しさんsage2008/05/15(木) 13:11:55
なんでムッシュじゃないんだ?
916デフォルトの名無しさんsage2008/05/15(木) 13:51:15
かまやつと間違えるから
917デフォルトの名無しさんsage2008/05/15(木) 13:52:15
つか、monaOS の shell じゃねぇのか?
exec()する機能がないんだが…
918デフォルトの名無しさんsage2008/05/15(木) 17:26:11
>>917
OS作者から処理系作者にシフトしつつある。
Matzみたいなポジを狙ってる模様。
919デフォルトの名無しさんsage2008/05/15(木) 20:13:21
OSに組み込んでSchemeOSにしてしまうの?
そういや昔SOSってOSあったなあ。
920デフォルトの名無しさんsage2008/05/15(木) 20:22:18
Sophisticated Operating System?
921デフォルトの名無しさんsage2008/05/15(木) 20:27:58
>>919
S-OS SWORDとかってやつかな?
俺はS-OS上のLispで遊んでたりしたなw
922デフォルトの名無しさんsage2008/05/15(木) 21:36:37
年代が分かる< sos ぺけろっぱーはおおそうだな。藁
923デフォルトの名無しさんsage2008/05/15(木) 22:10:54
俺はMZユーザーだったりするw
Lisp-85にPOKEやPEEK付け加えたりしてたなw
924デフォルトの名無しさんsage2008/05/15(木) 22:52:38
俺はFM-77ユーザーだったりする。
FLEX上のLisp09をアセンブラから入力してた。
後で商品版のLisp09を買ったんだけど当時6万円はしたなぁ。
OS-9にしておきゃよかった。日立のS1で動くLisp09のことを
知って後悔したよ。
925デフォルトの名無しさんsage2008/05/15(木) 23:08:40
俺はENIACユーザだった。
入力ってか配線だったから大変だったなぁ。
場所も取るし。
926デフォルトの名無しさんsage2008/05/15(木) 23:13:56
俺なんてColossusのプログラマだったけど戦争が終わったとき一緒に破壊されちゃったよ
927デフォルトの名無しさんsage2008/05/16(金) 01:16:02
・・・このままパスカルの手巻き式計算機までいくのか?
928デフォルトの名無しさんsage2008/05/16(金) 01:24:22
なんとなく流れに乗ってチョイ昔のLispMe on Palmを動かしてみた。ちゃんと動いたついでにバージョンを最新のにしたw
929デフォルトの名無しさんsage2008/05/16(金) 01:24:49
エラく年齢層が高いね。まさか、HHKの作者までいるのか?
930デフォルトの名無しさんsage2008/05/16(金) 01:31:46
パラメトロンの発明者もいそうだな
931デフォルトの名無しさんsage2008/05/16(金) 01:33:33
もうわかんないんです(><)
932デフォルトの名無しさんsage2008/05/16(金) 01:38:30
50〜60代ってところか?
933デフォルトの名無しさんsage2008/05/16(金) 01:40:42
Happy Hacking Keyboard (aka HHK)
934デフォルトの名無しさんsage2008/05/16(金) 01:41:15
さすがにジョン・マッカーシーは居ないだろうな?
935デフォルトの名無しさんsage2008/05/16(金) 01:41:33
>>933
東京大学名誉教授、和田英一とPFU研究所との共同開発
936デフォルトの名無しさんsage2008/05/16(金) 01:43:33
パラメトロンはパラメータ励振現象を使用する論理回路素子.
LC共振回路のLあるいはCを,共振周波数のほぼ2倍の周波数2fで変動させると,パラメータ励振により周波数fの振動を励起することができる.
東京大学ではパラメトロンを用いた電子計算機PC-1を1958年に試作した.パラメトロンは東京大学理学部高橋秀俊研究室の後藤英一により発明された.
PC-1は,命令語は18ビットの短語,数値は短語18ビット,長語36ビットの固定小数点2進法計算機であった.
937デフォルトの名無しさんsage2008/05/16(金) 01:47:20
gauche 関連スレで調べたらこんなのが出てきた
ttp://love6.2ch.net/test/read.cgi/book/1196344505/
なんじゃこれ?
938デフォルトの名無しさんsage2008/05/16(金) 01:56:44
PLANNER on IBM 704 がイイ。IBM 704エミュとか無いのかね?
939デフォルトの名無しさんsage2008/05/16(金) 08:55:23
>>930 このスレはあの世から書き込めるのかよw
940デフォルトの名無しさんsage2008/05/16(金) 10:38:03
Lispは魔術だからな!(・∀・)
941デフォルトの名無しさんsage2008/05/16(金) 10:47:31
>>940
つまり高度に発展した科学と言うことですね。
942デフォルトの名無しさんsage2008/05/16(金) 10:59:18
HAL/Sを実装したくなってきた!
943デフォルトの名無しさんsage2008/05/16(金) 11:12:28
――パラメトロン計算機の反響はいかがでしたか?

後藤「それほど大騒ぎにはならなかったよ。海外では、10年前にすでにENIACやEDSAC
   なんかがあったし。それにパラメトロンはトランジスタコンピュータに比べて処理速度が遅い
   からさ。トランジスタコンピュータのクロックが1メガヘルツなのに対して、パラメトロンコンピュータ
   はせいぜい10〜30キロヘルツ程度だったんだから。
    ずっとあとになって、MITのマッカーシーと親しくなったんだが、彼にいわれたよ。『パラメトロン
   とはおもしろいことを考えたもんだが、何でそんな遅い素子を作ったんだい?』ってね。
   そんなこといわれたって、予算はMITの1000分の1ぐらいしかなかったんだから。」
944デフォルトの名無しさんsage2008/05/16(金) 11:21:30
エンドーさんのインタビュー本から引用せんでええ

良い本だよね。
945デフォルトの名無しさんsage2008/05/16(金) 12:47:52
CLOSでCommon Lispを構成し直したの、
例えばsequenceを再設計、とかいう研究はありますか?
946デフォルトの名無しさんsage2008/05/16(金) 14:11:24
HLISPとか、HyperLispとかってどうなんだろ
947デフォルトの名無しさんsage2008/05/16(金) 14:12:44
面白いよ
948デフォルトの名無しさんsage2008/05/16(金) 16:50:36
boost.common_lisp
が激しくほしい
949デフォルトの名無しさんsage2008/05/16(金) 16:51:52
作ろうぜ
950デフォルトの名無しさんsage2008/05/17(土) 20:25:45
>>944
遠藤諭: 「計算機屋かく戦えり」
951デフォルトの名無しさんsage2008/05/17(土) 20:35:57
>>942
>>95-96に書いてあった。
ttp://en.wikipedia.org/wiki/HAL/S
Lisp系ってわけじゃないね。
でもHAL/S on IBM AP-101をエミュしてくれたら車載してみたい。ガンガレ!
952デフォルトの名無しさんsage2008/05/17(土) 23:48:52
最近、Gaucheのand-let*が便利だと思うようになったので
それのif版が欲しくなって書いてみたんですけど
(define-macro (if-let* binding-list consequent alternative)
 (cond ((null? binding-list)
     consequent)
    ((and (pair? binding-list)
       (symbol? (caar binding-list)))
     (let ((tmp (gensym)))
      `(let ((,tmp ,(cadar binding-list)))
        (if ,tmp
         (let ((,(caar binding-list) ,tmp))
          (if-let* ,(cdr binding-list)
               ,consequent
               ,alternative))
         ,alternative))))))
こんな感じでいいんでしょうか?
最後にalternativeが連続で出現してるのが美しくない気がするのですが。
953デフォルトの名無しさんsage2008/05/18(日) 00:50:17
( (lambda (x) (if x (x) alternative))
 (and-let* ((a b) (c d) ...) (lambda () consequent)))
954デフォルトの名無しさんsage2008/05/18(日) 01:08:39
consequentが#fを返した時にalternativeが評価されませんか?
955デフォルトの名無しさんsage2008/05/18(日) 01:10:32
勘違いでした
956デフォルトの名無しさんsage2008/05/18(日) 14:12:19
Gerry Sussman and I wanted to understand Carl Hewitt’s ideas, which seemed to have intellectual power,
but we couldn’t get past the complexity and the notation to see “what was really going on.”
So we decided to implement a “toy” actors language.
We hoped that it could capture the essence of the ideas while remaining simple enough to understand.
It might even turn into something useful.

from "The History of Scheme" by Guy L. Steele Jr. (2006)
957デフォルトの名無しさんsage2008/05/18(日) 15:14:45
Lisp/Schemeの場合エラーを投げるのは
プリミティヴ手続きに任せるのと
自分でチェックするのとどっちが主流ですか?
例えばあるオブジェクトをcarやcdrに渡す前に
pair?でチェックを掛けて
pairじゃなかったらエラーを投げるというコードを書くのか
それともそのままcarやcdrに渡して
carやcdrにエラーを投げさせるのか
どちらが一般的でしょうか?
958デフォルトの名無しさんsage2008/05/18(日) 15:24:13
いあ、普通、エラー投げねぇし
959デフォルトの名無しさんsage2008/05/18(日) 15:28:57
>>957
コンディション/エラーを投げる前に何のための多値か考えたことある?
960デフォルトの名無しさんsage2008/05/18(日) 15:46:59
>>957
ケースバイケース。それを考えるのがプログラマの仕事だ。w
例えば、ユーザの手入力を直接渡す場所ならチェックするだろう。
性能を重視するライブラリの中ではチェックしないだろう。
961デフォルトの名無しさんsage2008/05/18(日) 16:04:14
こんなことに主流とかw
962デフォルトの名無しさんsage2008/05/18(日) 16:25:36
R5RSの範囲だとエラー投げたらそれっきりなんで主流もなにもない。
963デフォルトの名無しさんsage2008/05/18(日) 17:36:32
書かなくていいかもしれないコードを書いてはいけない。
964デフォルトの名無しさんsage2008/05/18(日) 18:04:41
リストを処理する関数を書いたとして、
(lambda (x)
 (if (null? x)
   empty     ;ここは当然空リスト用コードですが
   non-empty  ;ここに空でないリスト用のコードを書くのか、))
(lambda (x)
 (cond ((null? x) empty)
    ((pair? x) non-empty)
    (else error-code)))  ;のように書くのか
どうするのが一般的か知りたかったんです。
引数の型チェックを自分で行うか
総称関数を使うか
パターンマッチングするか。
プリミティブ関数にエラーを投げさせるか
多値で呼び出し元に知らせるか
自分でエラーを投げるか。
965デフォルトの名無しさんsage2008/05/18(日) 18:07:43
>>964
一般的な方法なんて無いよ
966デフォルトの名無しさんsage2008/05/18(日) 18:10:17
>>964
一般的な用法などない lisp 系に限らず…
意図した処理が、意図した通りに動けば OK
そのうち、自分なりの方法論が確立される

# コーディング規約とかを押し付けられた場合はこの限りではないが…
# お金もらえないと飯食えないからねw
967デフォルトの名無しさんsage2008/05/18(日) 18:28:15
Lisp/Schemeに限らず動的型付け言語は
意図した処理を意図した通りに動くようには、美しく簡潔に書けますが
間違った処理を行わせないように書くのは、冗長になったり、完全性に欠けたりしがちな気がします。

今のところは、関数を識別子に束縛する場合は
マクロで覆って引数チェックを行い、
意図しない引数の場合に関数名を表示してエラーを投げるようにしてます。
968デフォルトの名無しさんsage2008/05/18(日) 20:00:13
>>967
>間違った処理を行わせないように書くのは、冗長になったり、完全性に欠けたりしがちな気がします。

以前、SML/NJがお気に入りでした。コンパイルが通ればエラーはほとんど無い
んですが、なんだか堅苦しくて。動的型付けのSchemeに戻ってきました。
気楽な分、エラー処理はちゃんと考えておかないといけないですね。
アマチュアだから気楽なもんですが。
969デフォルトの名無しさんsage2008/05/18(日) 20:02:12
>>964
教科書的には
>(lambda (x)
> (cond ((null? x) empty)
>    ((pair? x) non-empty)
>    (else error-code)))
これが多いと思う。もしあなたが学生ならこれを勧める。
でも、仕事のやり方は常に改良されていく。主流とか一般なんて意味がない。
970デフォルトの名無しさんsage2008/05/18(日) 21:09:41
>>301-302
>>319-328
いまさらだけどこのパターンマッチっておもしれーな。
ttp://codepad.org/a88jP6ef
971デフォルトの名無しさんsage2008/05/18(日) 21:55:35
>>970
たしかに>>326のいうとおりでも動くみたいだ。
ttp://codepad.org/5ou1TVe1
972デフォルトの名無しさんsage2008/05/18(日) 23:38:53
なんだこのマクロ。引数が入れ替わるのか?
ttp://codepad.org/nRrFfv7w
973デフォルトの名無しさんsage2008/05/19(月) 01:46:19
(require (lib "turtles.ss" "graphics"))

(turtles #t)

(define (dr n)
(if (< n 0) (display "終了\n")
(begin
(draw (* n 4))
(turn n)
(dr (- n 1)))))

(move -150)
(turn -90)
(move -200)
(dr 100)
974デフォルトの名無しさんsage2008/05/19(月) 23:00:17
schelogを使ってみた。
Prologと考えるとトリッキーな文法だけど一応動いた。
ただ、すぐにメモリーのリークでコケル。
ttp://codepad.org/cgNOmn0r
975デフォルトの名無しさんsage2008/05/19(月) 23:02:04
>>974
例題はBratkoから拝借。
976デフォルトの名無しさんsage2008/05/20(火) 16:08:41
例外が便利なのはこんなのかな、俺的には。

get-charのやるチェックを全部書いてらんないから。
(guard (c (hoge))
 (let loop ((s '()))
  (if (= (length s) 4)
   s
   (loop (cons (get-char (current-input-port)) s)))))

シンタックスチェックとか全部書いてらんないから。
(guard (c (hoge)) (eval user-input-expr (interaction-environment)))

基本的なリスト操作とかの引数のチェックはしない。引数がヤバそうなら上位でguard。
977デフォルトの名無しさんsage2008/05/20(火) 16:12:04
やべ、忙しくてLittle Schemer中断してたらわからなくなった^^;
10章であと少しで読み終わるのに。
978デフォルトの名無しさんsage2008/05/20(火) 22:13:46
SMLやOCamlのような静的型付の言語ってギブソンのレスポール
みたいなもんじゃない。誰が弾いてもそこそこ良い音がする。

Scheme、Lispはフェンダーのストラトだろう。名手が弾けば素晴らしい
サウンドがでるけど、それは弾く者の力量しだいみたいな。

どうチェックするのか、しないのか、サボるのか。プログラマの力量しだい。
979デフォルトの名無しさんsage2008/05/20(火) 22:16:17
誰が弾いてもフェンダーの音は嫌いだ
980デフォルトの名無しさんsage2008/05/20(火) 22:31:31
>>978
そこらの小僧に old もんのレスポール弾かして出てくる音と
本職の連中が出す音とは歴然たる差がある様に聞こえるのは
俺一人?
マーシャル3段積ディストーションかけまくりでも、だ…
981デフォルトの名無しさんsage2008/05/20(火) 23:03:23
本職の連中による全編が極端に個性的なコードもどうかねぇw
ギターもプログラミングも個性はここぞ使うと生きるように思う。
982デフォルトの名無しさんsage2008/05/21(水) 00:09:15
>>981
個性的なコードでなくて済む場所なんて、コード自動生成プログラムで作ればいいじゃん。
人間がわざわざ作るんだから、個性的なコード以外不要なんですよ。w
983デフォルトの名無しさんsage2008/05/21(水) 07:40:55
>>982
そんなこというと蛇が化けてでるぞ〜(w
984デフォルトの名無しさんsage2008/05/21(水) 12:40:27
>>982
他人が作ったコードを改造するのにはいいよ
985デフォルトの名無しさんsage2008/05/21(水) 21:01:34
Scheme/Lisp用のマージソートはsubseqに依存してるのが多いので使わないのを作ってみた。
ttp://codepad.org/hqwyVHRh
986デフォルトの名無しさんsage2008/05/21(水) 21:03:35
>コード自動生成プログラムで作ればいいじゃん。
馬鹿w
987デフォルトの名無しさんsage2008/05/21(水) 21:21:00
ttp://codepad.org/fMkBBWUz
988デフォルトの名無しさんsage2008/05/21(水) 23:30:49
>>985,>>987
length使ってるか観てみたら使ってないね。
lengthが遅いのは知ってる人達か。
989デフォルトの名無しさんsage2008/05/21(水) 23:59:22

ttp://pc11.2ch.net/test/read.cgi/tech/1211381920/l50
990デフォルトの名無しさんsage2008/05/22(木) 00:06:24
>>989
λ・・・じゃなくて乙!
991(= 952 954 955 957 964 967)sage2008/05/22(木) 00:27:04
>>953-
返答ありがとうございます。
いろいろ試行錯誤してみます。

if-let*の改良版
(define-macro (if-let* binding-list consequent alternative)
 (define (block sym lst)
  (if (and (pair? lst)
       (eq? (car lst) sym))
    `(begin ,@(cdr lst))
    lst))
  (let loop ((lst binding-list))
   (if (null? lst)
     (block 'then consequent)
     (let ((temp (gensym)))
      `(let ((,temp ,@(cdar lst)))
        (if ,temp
         (let ((,(caar lst) ,temp))
          ,(loop (cdr lst)))
          ,(block 'else alternative))))))))

再帰マクロじゃなくて局所再帰関数にしたほうが無駄がないですね。
992デフォルトの名無しさんsage2008/05/22(木) 07:11:07
ブラックボックスの中で個性を発揮するのはどうかと思う。
993デフォルトの名無しさんsage2008/05/22(木) 09:03:52
いいことじゃないか?
994デフォルトの名無しさんsage2008/05/22(木) 10:00:31
>>992はどうかと思う。
995デフォルトの名無しさん2008/05/22(木) 12:11:19
There is more than one way to do it.
ということは、
オンリーワンじゃなくてもいいのさ。
996デフォルトの名無しさんsage2008/05/22(木) 17:55:55
結果さえ出せれば手段は問わないという住人の常駐スレw
997デフォルトの名無しさんsage2008/05/22(木) 19:07:27
ume
998デフォルトの名無しさんsage2008/05/22(木) 19:08:01
ume
999デフォルトの名無しさんsage2008/05/22(木) 19:09:58
ume
1000デフォルトの名無しさんsage2008/05/22(木) 19:10:21
ume
10011001Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
 229KB (234556Byte)
dummy_for_searchRef

DAT2HTML 0.32g Converted.