Lisp Scheme Part18
at TECH
1:デフォルトの名無しさん
07/08/12 21:38:15
過去スレ
Part17: スレリンク(tech板)
Part16: スレリンク(tech板)
Part15: スレリンク(tech板)
Part14: スレリンク(tech板)
Part13: スレリンク(tech板)
Part12: スレリンク(tech板)
Part11: スレリンク(tech板)
Part10: スレリンク(tech板)
Part9: スレリンク(tech板)
Part8: URLリンク(pc5.2ch.net)
Part7: URLリンク(pc5.2ch.net)
Part6: URLリンク(pc3.2ch.net)
Part5: URLリンク(pc3.2ch.net)
Part4: URLリンク(pc.2ch.net)
Part3: URLリンク(pc.2ch.net)
Part2: URLリンク(pc.2ch.net)
Part1: URLリンク(piza2.2ch.net)
2:デフォルトの名無しさん
07/08/12 21:43:02
□参考リンク□
日本Lispユーザ会(日本語) URLリンク(jp.franz.com)
ここにかなりの情報があります。 削るとAllegro Common Lispのページへ
プログラミング言語Scheme(日本語)
URLリンク(www.sci.toyama-u.ac.jp)
Schemeの人はまずここを見ましょう。
Lisper への道(日本語)
URLリンク(www.geocities.co.jp)
判りやすいLISP入門サイト。
Schemeへの道(日本語)
URLリンク(www.stdio.h.kyoto-u.ac.jp)
ここはschemeの入門サイト。
慶応の授業のページ・記号処理プログラミング 2001
URLリンク(buri.sfc.keio.ac.jp)
Practical Scheme(日本語)
URLリンク(practical-scheme.net)
「普通のやつらの上を行け」など、興味深い文書を沢山翻訳されてます。
(Gaucheという完成度の高いscheme処理系作者さんのページでもあります。)
3:デフォルトの名無しさん
07/08/12 21:44:09
□仕様関係□
CLtL2: Common Lisp the Language 2nd edition
URLリンク(www-2.cs.cmu.edu)
CLHS: Common Lisp Hyper Spec
URLリンク(www.ai.mit.edu)
R5RS: Revised(5) Scheme(ja)
URLリンク(www.sci.toyama-u.ac.jp)
□SICP関係□
SICP(英語)
URLリンク(mitpress.mit.edu)
「計算機プログラムの構造と解釈」の原書です。 全てオンラインで読めます。
計算機プログラムの構造と解釈 第二版 (snip) に関連するホームページ
URLリンク(www.ipl.t.u-tokyo.ac.jp)
SICPの回答集
URLリンク(www.melt.kyutech.ac.jp)
URLリンク(pluto.aurorasd.co.jp)
URLリンク(www.ipl.t.u-tokyo.ac.jp)
URLリンク(www.sampou.org)
4:デフォルトの名無しさん
07/08/12 21:46:23
□wikipedia関連□
Wikipedia項目リンク
Wikipedia項目リンク
Wikipedia項目リンク
□継続□
なんでも継続
URLリンク(practical-scheme.net)
Schemeへの道:継続
URLリンク(www.stdio.h.kyoto-u.ac.jp)
継続の使い方
URLリンク(www.geocities.co.jp)
継続の使用法
URLリンク(www.ice.nuie.nagoya-u.ac.jp)
CPS(継続渡しスタイル)の説明
URLリンク(www.csl.sony.co.jp)
Kahua: 継続ベースのアプリケーションサーバー
URLリンク(www.kahua.org)
5:デフォルトの名無しさん
07/08/12 21:50:29
□その他□ (便利な情報リソース)
John McCarthy's Home Page
URLリンク(www-formal.stanford.edu)
LISPの生みの親、J・マッカーシーのページだそうです。
Association of Lisp Users 米国のLispユーザ会
URLリンク(www.alu.org)
CMUのLisp Repository 新旧様々なプログラムが置いてある
fURLリンク(ftp.cs.cmu.edu)
The Common Lisp Cookbook: いわゆる Cookbook
URLリンク(cl-cookbook.sourceforge.net)
Bibliography of Scheme-related Research Scheme関連の論文リンク集
URLリンク(library.readscheme.org)
Scheme Hash(英語) S式でXMLを使える様にするSXMLなど
URLリンク(okmij.org)
幻の「入門Scheme」 オンラインで読める
URLリンク(www4.ocn.ne.jp)
各種scheme処理系をcygwin上からビルドする方法など。
URLリンク(www.geocities.co.jp)
encyCMUCLopedia (cmucl以外でも有益なはず )
URLリンク(www.isr.ist.utl.pt)
6:デフォルトの名無しさん
07/08/12 21:52:29
□実装□
Bit (mini-schemeよりも小さい(?)bytecode変換系 )
URLリンク(www.iro.umontreal.ca)
Lisp 言語処理系: CAMPUS LIsP, Lemon version (Cでわずか1000行)
URLリンク(aten.aial.hiroshima-u.ac.jp)
Schemix (Linuxのkernelへのパッチで/dev/として扱えるTinyScheme )
URLリンク(www.abstractnonsense.com)
awkで書かれたわずか500行のLispインタプリタ
URLリンク(www.accesscom.com)
Schemeで書かれた正規表現ライブラリ
URLリンク(www.cs.rice.edu)
Tiny CLOS Tutorial
URLリンク(home.adelphi.edu)
Hotdog Scheme MS が金出してたみたい
URLリンク(rover.cs.nwu.edu)
Bigloo CLR 用のコードを吐けるようになったらしい
URLリンク(www-sop.inria.fr)
SECDR-Scheme: SECD machine model に基づく実装
URLリンク(lily.fan.gr.jp)
Minischeme: 1 ファイルに凝縮された Scheme 処理系
URLリンク(tinyscheme.sourceforge.net)
TinyScheme: Minischeme を色々弄ったもの
URLリンク(tinyscheme.sourceforge.net)
KI-Scheme, AM-Scheme, etc...
URLリンク(www.nifty.com)
LispMe: Palm 上で動く Scheme 処理系. これも SECD virtual machine.
URLリンク(www.lispme.de)
7:デフォルトの名無しさん
07/08/12 21:55:40
□その他□ (抜け)
LISP Scheme Part9 (html化) って、なんでこれだけ
URLリンク(ruku.qp.tc)
独習 Scheme 三週間 (Schemeの教科書 )
URLリンク(www.sampou.org)
Cliki (CLコードがたくさん紹介されている。)
URLリンク(www.cliki.net)
よろずや (lispの実用的な情報が色々。 )
URLリンク(www.geocities.co.jp)
Common-Lisp.net: 多くのプロジェクトがホスティングされてる
URLリンク(common-lisp.net)
Bill Clementson's Blog: Lisp関連の話題が中心のBlog
URLリンク(home.comcast.net)
Practical Common Lisp: S式の羅列で現実的な問題をどう解くのかそのギャップに悩まされてる人に
URLリンク(www.gigamonkeys.com)
□イベント□
GaucheNight(2007-05-09)
URLリンク(practical-scheme.net)
川合史朗、黒田寿男、まつもとゆきひろ(Skype中継)、小飼弾、
伊東勝利、久井亨、小黒直樹、ほか
黒田氏関係 (黒板の人)
スレリンク(tech板:901-909番)
URLリンク(cl-www.msi.co.jp)
Scheme:マクロ:CommonLispとの比較
URLリンク(practical-scheme.net)
Script Languages
URLリンク(cl-www.msi.co.jp)
8:デフォルトの名無しさん
07/08/12 21:58:02
□2ch上にあるLISP関係のスレ□ (現在)
【入門】Common Lisp その3【質問よろず】
スレリンク(tech板)
【CGI】実用比較Lisp vs C/C++【GUI】
スレリンク(tech板)
C式(C言語風汎用データ形式)を作ろう!
スレリンク(tech板)
【ヤパーリ】XMLをS式に置換えていくスレ【LISP最強】
スレリンク(tech板)
Emacs Lisp 2
スレリンク(tech板)
【叩かれて】Emacs Lisp道場【強くなれ】
スレリンク(unix板)
Lisp@UNIX版
スレリンク(unix板)
以上終わり。
適当に並べ替えてやった。
9:デフォルトの名無しさん
07/08/12 21:58:28
お疲れ。
10:デフォルトの名無しさん
07/08/12 21:59:01
>>8の抜け
【SICP】計算機プログラムの構造と解釈【Scheme】
スレリンク(tech板)
11:デフォルトの名無しさん
07/08/12 22:01:23
>>1乙だよ>>1
12:デフォルトの名無しさん
07/08/12 22:04:59
>>2 リンク先変更
プログラミング言語Scheme(日本語)
URLリンク(www.sci.u-toyama.ac.jp)
Schemeの人はまずここを見ましょう。
うお−っ>>1
13:デフォルトの名無しさん
07/08/12 22:11:41
乙>>1
14:デフォルトの名無しさん
07/08/12 22:55:05
いちもつ
15:デフォルトの名無しさん
07/08/13 06:22:03
最初に頭で浮かべるコードが
Scheme + Rubyって俺は少数派?
16:デフォルトの名無しさん
07/08/13 06:53:18
>>15
それ括弧が全て begin と end に置き換わった Scheme の事?
17:デフォルトの名無しさん
07/08/13 08:14:23
CL だけど前スレより転載。
SBCL Buildbot
URLリンク(sbcl.static.net)
LispUser.net (よろずや?)
URLリンク(lispuser.net)
18:デフォルトの名無しさん
07/08/13 08:29:31
begin-endはPascalだろw
19:デフォルトの名無しさん
07/08/13 08:44:25
これからLispを学ぼうとしてリンク先を一つ一つ見ていったんですけど結構リンク切れがあります。
Lisper への道(日本語)
URLリンク(www.geocities.co.jp)
慶応の授業のページ・記号処理プログラミング 2001
URLリンク(buri.sfc.keio.ac.jp)
R5RS: Revised(5) Scheme(ja)
URLリンク(www.sci.toyama-u.ac.jp)
SICPの回答集
URLリンク(www.melt.kyutech.ac.jp)
URLリンク(pluto.aurorasd.co.jp)
CPS(継続渡しスタイル)の説明
URLリンク(www.csl.sony.co.jp)
Lisp 言語処理系: CAMPUS LIsP, Lemon version (Cでわずか1000行)
URLリンク(aten.aial.hiroshima-u.ac.jp)
Schemeで書かれた正規表現ライブラリ
URLリンク(www.cs.rice.edu)
Tiny CLOS Tutorial
URLリンク(home.adelphi.edu)
Hotdog Scheme MS が金出してたみたい
URLリンク(rover.cs.nwu.edu)
SECDR-Scheme: SECD machine model に基づく実装
URLリンク(lily.fan.gr.jp)
KI-Scheme, AM-Scheme, etc...
URLリンク(www.nifty.com)
LispMe: Palm 上で動く Scheme 処理系. これも SECD virtual machine.
URLリンク(www.lispme.de)
LISP Scheme Part9 (html化) って、なんでこれだけ
URLリンク(ruku.qp.tc)
20:デフォルトの名無しさん
07/08/13 16:57:22
986 :デフォルトの名無しさん :sage :2007/08/12(日) 03:39:44
Gauche本、まだ出ないのかなぁ
中の人ですがgauche.nightの後shiroさんと打合せをして、
Web公開版とは構成が劇的に変わりました。
現在8/31 DTP入稿を目指して作業中、今秋発売予定です。
21:デフォルトの名無しさん
07/08/13 21:35:58
>>20
この4月に、Gauche本のことを知ったのがSchemeを始めるはずみになったので、
嬉しいっすね。出版されたらぜひ読みたいと思います。
22:デフォルトの名無しさん
07/08/13 22:03:48
表紙がなにか気になる
23:デフォルトの名無しさん
07/08/13 22:19:29
>>22
フムフムヌクヌクアプアアだよ
24:デフォルトの名無しさん
07/08/13 22:45:20
そういう名前の魚が本当にいるから困る
25:デフォルトの名無しさん
07/08/13 23:12:15
gauche ってまだ1.0にもなってないのに本が出るの?
時期尚早じゃね?
26:デフォルトの名無しさん
07/08/15 01:15:39
>>25
へへーんだっ
27:デフォルトの名無しさん
07/08/15 01:40:18
Perl6 は言語も処理系もできてないのに本がでてたくらいだから
いいんでないの? 0.8.10 とはいえかなり安定してるし。
まぁ、1.0 といってもたとえば SBCL なんかは特になにかあったわけではなく
マーケティングのために 1.0 にしただけ、ってのもあるけどね。
28:デフォルトの名無しさん
07/08/15 12:40:33
バージョン番号なんて作者やメーカーにより様々
1.0の定義だってバラバラなんだからこだわっても意味ないべ
29:デフォルトの名無しさん
07/08/15 23:12:01
じゃあ逆に gauche 1.0 で欲しいものは?
30:デフォルトの名無しさん
07/08/16 00:32:46
x86 用のネイティブコードコンパイラ
コンパイルした結果をオブジェクトファイルに保存出来る事
31:デフォルトの名無しさん
07/08/16 00:42:06
Schemeはみんなgauche使ってるの?
32:デフォルトの名無しさん
07/08/16 00:51:26
俺はKawaがメイン
33:デフォルトの名無しさん
07/08/16 01:00:59
俺はDrSchemeかな
34:デフォルトの名無しさん
07/08/16 01:01:04
俺はまだまだ入門レベルだけど、処理系は意味なく入れるだけは複数入れてみてる。
Guile,MzScheme,Petite Chez Scheme,Scheme48,mit-scheme,bigloo
他にもあったかも。でもGauche以外ほとんど使ってないなぁ。
35:デフォルトの名無しさん
07/08/16 02:29:22
機能的に拘らないときは guile を使ったりする。たいていプリインストールされているからね。
36:デフォルトの名無しさん
07/08/16 03:02:13
URLリンク(homepage3.nifty.com)
こんなん見つけたけどどうよ?
37:デフォルトの名無しさん
07/08/16 03:08:30
新しい言語の紹介ページ見るたびいつも思うけど
紹介文だらだら書かないで何か小さいプログラムを載せておいて欲しい
38:デフォルトの名無しさん
07/08/16 03:48:27
そうだな
その言語ならではの流儀ってもんが判らんと
その言語がどう良いのかよく分からん
Schemeで再帰使わないの勿体ないし
awkで「テキストファイルの各行に対して処理」する場合ほとんどループ書かないし
Perlは色んな処理にもっと短い書き方があるし
PHPで print "<HTML>"; なんてまずしないし
"SELECT * FROM テーブル"なんてSQLを発行してプログラム側で選択射影するのは勘弁だし
そういえばCOBOLですら「レコードを桁で区切る」コードは他の言語にはない書き方をする
39:デフォルトの名無しさん
07/08/17 20:15:20
2chに書き込んでも嫌みでない程度に短く、
Schemeの特長がよくでていて、
知らない人にも簡単に説明できる、
Scheme向きの例題となるとどんなものに
なりますか。
40:デフォルトの名無しさん
07/08/18 10:47:28
gauche 0.8.11おめ。
41:デフォルトの名無しさん
07/08/18 11:04:20
>>39 そゆのはスクリプト言語の得意分野だとおもうよ
Scheme が目指してるのは数行で特徴を自慢することじゃないから
42:デフォルトの名無しさん
07/08/18 12:01:18
schemeを会社で使ったりしますか?
常識的に考えれば Haskell を使いますが。
43:デフォルトの名無しさん
07/08/18 12:45:47
どういう常識だろう。
44:デフォルトの名無しさん
07/08/18 12:47:31
>>43
「非」
45:デフォルトの名無しさん
07/08/18 20:37:17
>>39
こんなのとか?
(let f ((a 0) (b 0) (r '()))
(if (> b 10000) (reverse r)
(f b (+ a b) (cons a r))))
46:デフォルトの名無しさん
07/08/18 22:40:32
>>39
"Hello,world!"
47:デフォルトの名無しさん
07/08/18 22:41:59
>>46
確かにSchemeの特長がよくでていて、知らない人にも簡単に説明できるな。w
48:デフォルトの名無しさん
07/08/19 00:35:50
>>45
なんか最後にreverseするのがダサい
49:デフォルトの名無しさん
07/08/19 02:12:33
じゃあどうしろと
50:デフォルトの名無しさん
07/08/19 02:35:20
named letはダサい
51:デフォルトの名無しさん
07/08/19 02:41:27
>>50
ダサい部分も含めてSchemeの特徴がよく出ている例なの鴨
52:デフォルトの名無しさん
07/08/19 02:42:19
>>49
漢なら reverse! だな
53:デフォルトの名無しさん
07/08/19 02:50:23
ムチャシヤガッテ
54:デフォルトの名無しさん
07/08/19 03:53:21
((lambda (lambda) (lambda lambda)) (lambda (lambda) (lambda lambda)))
55:デフォルトの名無しさん
07/08/19 13:29:20
>>54
無限ループった
56:デフォルトの名無しさん
07/08/19 17:55:57
>>45ってaもbも増えずに無限ループするんじゃないの ?
57:デフォルトの名無しさん
07/08/19 18:07:06
>56
俺のGaucheでは動いた
フィボナッチ数列の頭にゼロが入ったものが返る式
58:デフォルトの名無しさん
07/08/19 18:26:43
これ a も b も増えないな
59:デフォルトの名無しさん
07/08/19 19:30:02
>>57
ウソ付いちゃいかん、aもbも初期値が0なので(+ a b)が0のままだぞ
60:デフォルトの名無しさん
07/08/19 19:51:38
カウンタを書くとこんな感じ
(define (returnobj x)
(define (proc1)
(set! x (+ x 1)))
(define (proc0)
(set! x (- x 1)))
(define (count)
x)
(define (interface z)
(cond((eq? z 'age)
(proc1))
((eq? z 'sage)
(proc0))
((eq? z 'count)
x)
(else (display "(www" ))))
interface)
61:デフォルトの名無しさん
07/08/19 19:54:14
実行結果
Welcome to DrScheme, version 370 [3m].
Language: Standard (R5RS).
> (define obj (returnobj 6))
> (obj 'count)
6
> (obj 'age)
> (obj 'age)
> (obj 'count)
8
> (obj 'sage)
> (obj 'count)
7
> (obj 'els)
(www
>
62:デフォルトの名無しさん
07/08/19 20:06:06
>>59
すまん (b 1) に脳内変換してくれ
63:デフォルトの名無しさん
07/08/19 21:47:25
フィボナッチしたいならどちらにしろ
初期値は a も b も 1 で始めなきゃおかしくね?
64:デフォルトの名無しさん
07/08/19 22:14:57
フィボナッチの定義次第
65:デフォルトの名無しさん
07/08/19 22:57:26
>>62
コードみてfibっぽいな〜とは解ったんだが何で初期値が0かと考えたらタダの嫌がらせにしか見えなくなった俺の立場は?
66:デフォルトの名無しさん
07/08/19 23:02:29
「バグったプログラム」の実例としては良くできていた
67:デフォルトの名無しさん
07/08/19 23:24:17
>>48
(let f ((a 1) (b 1))
(if (> b 100)
'()
(cons a (f b (+ a b)))))
というかnamed letって構文はじめて知った
68:デフォルトの名無しさん
07/08/19 23:28:30
見づらいリスト・・・?
69:デフォルトの名無しさん
07/08/19 23:34:00
named let に付ける名前って loop とか良く見掛けるけど
あれはあくまで慣例に過ぎないの?
70:デフォルトの名無しさん
07/08/19 23:46:23
慣例じゃないという発想がどこから沸いて出たのかが知りたいところ
71:デフォルトの名無しさん
07/08/19 23:57:46
>>69
うん
72:デフォルトの名無しさん
07/08/20 00:05:19
>>54
((call/cc call/cc) (call/cc call/cc))
73:デフォルトの名無しさん
07/08/20 00:37:55
schemeは素晴らしいな
74:デフォルトの名無しさん
07/08/20 01:55:51
(内包表記マクロ)って当たり前のように使ってますか?
75:デフォルトの名無しさん
07/08/20 03:00:04
内包表記ってのが SRFI-42 のことならlet するよりてっとりばやいしよく使う。
76:デフォルトの名無しさん
07/08/20 03:53:29
そう、SRFI-42 のことです。
>> let するよりてっとりばやい
うーん、全然ピンと来ません。とても難しいと感じてるんですが、
どの辺から入っていけば良いのか…
77:デフォルトの名無しさん
07/08/20 05:47:05
URLリンク(practical-scheme.net)
数の対(x y)の集合を生成します。ここでxは 2以上 5未満、yは1以上 x 未満です。
(list-ec (: x 2 5) (: y 1 x) (list x y))
⇒ ((2 1) (3 1) (3 2) (4 1) (4 2) (4 3))
これの意味がわからない
78:デフォルトの名無しさん
07/08/20 06:19:04
>>77
ループの入れ子になる、と考えれば判るかな。
dotimes 使って同じ結果を得るにはこんな感じ。
(let1 acc '() (dotimes (x 3 (reverse! acc)) (dotimes (y (+ x 1)) (push! acc (list (+ x 2) (+ y 1))) )))
79:デフォルトの名無しさん
07/08/20 06:22:39
>>77
x は 2 .. 5 で、 y は 1 .. x の範囲の x y をリストにしたものの集合を返す。
どのレベルでわかんないの?逆に↓だとどのへんまでわかる?
1. (list-ec (: x 0 10) x) == (iota 10)
2. (list-ec (: x 0 10) (* x 2)) == (mapcar (lambda (x) (* x 2)) (iota 10))
3. (list-ec (: x 0 10) (: y 0 10) (cons x y))
4. (list-ec (: x 0 10) (: y 0 x) (cons x y))
(: ...) の意味がわからんとかそーゆう意味だろうか。
80:デフォルトの名無しさん
07/08/20 18:43:19
あー意味わかった
なんか「集合」って言葉に惑わされてた
対のユニークな組み合わせ生成するのかと思って
>>77のどこがそうなんだとか変に難しく考えてた
ただのループ生成器か
81:デフォルトの名無しさん
07/08/20 20:09:48
(comprehension-macro qualifier … body)
ということですが、むしろ body の書き方のほうがよくわからんです。
(do-ec (:range i 0 10)
(display i))
=>0123456789
偶数の場合に2回出力させてみようとして、(if test) を付けると前の (display i) を
begin で括らないとならない…。更に、3回出力させようとすると後の (display i) も
begin で括らないとならない…。何ででしょう?
(do-ec (:range i 0 10)
(begin (display i))
(if (even? i))
(display i))
=>001223445667889
(do-ec (:range i 0 10)
(begin (display i))
(if (even? i))
(begin (display i)
(display i)))
=>00012223444566678889
82:デフォルトの名無しさん
07/08/21 03:56:19
URLリンク(ll.jus.or.jp)
(use srfi-42)
(list-ec (: n 2 101) (if (not(any?-ec(: j 2 n)(zero?(modulo n j)))))n)
これで100までの素数が出るみたいですがわかりません
83:デフォルトの名無しさん
07/08/21 13:28:21
どうわからないのかくらい書ける人間になりましょう
84:デフォルトの名無しさん
07/08/21 20:36:12
こうですか、わかりません!!!
85:デフォルトの名無しさん
07/08/21 21:54:32
(: j 2 (sqrt n))じゃないのがわかりません。
86:デフォルトの名無しさん
07/08/22 01:12:37
Eager Comprehensions が少し見えてきたので記念パピコ
(let1 l (list-ec (:range n 2 101)
(list-ec (:range j 2 n)
(cons n (modulo n j))))
(list-ec (:list x (cdr l))
(if (not (any?-ec (:list y x) (zero? (cdr y)))))
(caar x)))
87:デフォルトの名無しさん
07/08/22 18:50:40
IronLisp きました
URLリンク(ironpython-urls.blogspot.com)
88:デフォルトの名無しさん
07/08/22 22:05:00
ダメだ、夏場に読むとアイロンLISPに見えて暑くてかなわん。
89:デフォルトの名無しさん
07/08/23 13:10:35
>>85
ちゃんと見ないでコメントするけど、
平方根の計算でループの終端をnにするか√nにするかは本質じゃないだろ
90:デフォルトの名無しさん
07/08/23 13:11:40
平方根の計算、じゃなくて素数の計算だ
すまん
91:デフォルトの名無しさん
07/08/23 18:48:29
そうですか
はい次
92:デフォルトの名無しさん
07/08/23 22:36:23
>>87
また俺LISPか
93:デフォルトの名無しさん
07/08/23 23:07:41
IronCommonLispなら欲しい
94:デフォルトの名無しさん
07/08/23 23:12:11
L#はどう?
95:デフォルトの名無しさん
07/08/24 00:22:33
IronGaucheが欲しいw
96:デフォルトの名無しさん
07/08/24 01:49:26
Iron Chefがほしい
97:デフォルトの名無しさん
07/08/24 01:58:07
IronErlangがほしい
98:デフォルトの名無しさん
07/08/24 03:15:16
スレチどすえ
99:little schemer
07/08/24 05:19:11
某scheme本の中で分からない部分があって質問させてください。
以下の定義のmultirember-coをつかって
(multirember-co 'a '((a) ((a))) (lambda (x y) y))
とすると、
((a) ((a)))
が返るのですが、これを(a a)とするにはどうすればよいでしょうか?
(define multirember-co
(lambda (a lat col)
(cond
((null? lat)
(col '() '()))
((atom? (car lat)) (cond
((eq? (car lat) a)
(multirember-co a (cdr lat)
(lambda (newlat seen)
(col newlat (cons (car lat) seen)))))
(else
(multirember-co a (cdr lat)
(lambda (newlat seen)
(col (cons (car lat) newlat) seen))))))
(else (multirember-co a (car lat)
(lambda (newlat seen)
(multirember-co a (cdr lat) (lambda (newlat2 seen2)
(col (cons newlat newlat2)
(cons seen seen2))))))))))
100:little schemer
07/08/24 12:07:05
99です。
上記の質問よりも、最後のelse以下のところをどのように理解すればよいのか
ヒントとかをもらえたら助かります。上記の処理の内容は、
(multirember-co 'a '(a b c) (lambda (x y) x))
=> (b c)
というように、1つめの引数(atom)を2つめの引数(list)から取る処理です。
このとき、2つめの引数が((a b) a b c d)の時に、つまり(car lat)が
atomでないときの動作が理解しにくいです。一旦(car lat)に対する処理を
行って、それが最後までいった後に、残りの(cdr lat)への処理を続ける
のだと思うのですが、、、、
長々と失礼しました。
101:デフォルトの名無しさん
07/08/24 13:34:47
>>97
アーランは既に JIT あるじゃん。
102:デフォルトの名無しさん
07/08/24 14:18:14
>>99-100
その本は読んでないのでコード見た印象で。
要は継続渡しなんだと思うけど、else のところは
1 まず (car lat) に対する処理をする
2 次に (cdr lat) に対する処理をする
3 二つの結果を cons してから残りの処理をする
という手順で処理するということが書いてある。
> (lambda (newlat seen)
> (multirember-co a (cdr lat) (lambda (newlat2 seen2)
> (col (cons newlat newlat2)
> (cons seen seen2)))))
ここが 2,3 をまとめたもので、これを 1 のあとにやるべき処理として渡してる。
その内側の lambda が 3 に対応してる。
103:デフォルトの名無しさん
07/08/24 21:44:40
gosh> (gauche-version)
"0.8.11"
gosh> (read)
(foo, bar)
(foo ,bar)
あるいは、
gosh> '(foo, bar, baz)
(foo ,bar ,baz)
となりますがこれはこういうものなんでしょうか?
104:デフォルトの名無しさん
07/08/24 22:16:20
カンマをunquoteとして見てないとか、そういう話かな。
ちゃんと基礎やってから出直しておいで。
105:デフォルトの名無しさん
07/08/24 22:28:47
>>103
他の言語のリストやタプルの書き方と混同してない?
106:デフォルトの名無しさん
07/08/24 23:03:19
そういえば LISP 1.5 はカンマとスペースが等価だった。45年も前の話だが。
URLリンク(community.computerhistory.org)
107:デフォルトの名無しさん
07/08/24 23:19:46
そういえば","をマクロの非展開指示子にするようになったのっていつの何からなんだろう?
108:デフォルトの名無しさん
07/08/25 00:02:17
103です
ファイルに (Fri, Aug 24 23:30:43+0900 2007) のように記録されていて
(read) で読み取ろうと思ったんですが
=>(Fri ,Aug 24 |23:30:43+0900| 2007)
("Fri, Aug 24 23:30:43+0900 2007")
のように記録しとかないとならなかったということでした
readはあまり使ったことないんです、_| ̄|○
109:デフォルトの名無しさん
07/08/25 00:22:23
>>107
1980年頃のMaclispには有った
110:デフォルトの名無しさん
07/08/25 00:36:27
URLリンク(www.lingr.com)
MSVC版ktkr
111:デフォルトの名無しさん
07/08/25 02:07:07
emacs 18 にはなかった... >> quasiquote & unquote
112:little schemer
07/08/25 03:01:28
>>102
なるほど、これが継続なんですね。
もうちょっとで二冊目に行けそうなんですが、
これが理解できずに止まってました。
処理を一つ一つ追っていくとこんがらがってきてたのですが、
してくれた説明を読んだおかげでコードがわかりやすくなった感じです。
(ただ、自分ではまだ書ける気がしません)
ありがとうございました!
113:デフォルトの名無しさん
07/08/26 03:48:10
おまいらは俺schemeを実装するときの仮想マシンの設計どうしてますか?
114:デフォルトの名無しさん
07/08/26 04:08:36
SECD
115:デフォルトの名無しさん
07/08/26 08:18:04
andやorって
関数で定義したほうがapply出来たりして柔軟性が増すと思うんですが、
R5RSだと7.3でsyntax-rulesで定義がされてます。
関数で定義するとなんか問題が発生したりするんでしょうか。
116:デフォルトの名無しさん
07/08/26 08:29:19
関数にしちゃうと、必ず全引数評価しちゃうから困る。
(and (pair? foo) (car foo))
みたいなのができない。
117:デフォルトの名無しさん
07/08/26 08:34:05
どう違うかぐらい自分で確かめなさい
118:デフォルトの名無しさん
07/08/26 09:10:38
>>115
そこまでやるなら if や define も関数にしたら如何?w
119:デフォルトの名無しさん
07/08/26 09:26:33
andにしろifにしろ
陽にlambdaを渡すようにすれば関数でもいいわけだよな
果てしなく面倒くさいが
120:デフォルトの名無しさん
07/08/26 09:48:25
Haskell みたいにデフォルトで遅延評価にしちゃえば、関数で問題ないんだけどね。
>>119
その場合、各引数を lambda で包んでその関数に渡すようなマクロが欲しくなるかもw
121:デフォルトの名無しさん
07/08/26 13:16:00
スペシャルフォームじゃだめなん?
122:デフォルトの名無しさん
07/08/28 00:40:10
スッペシャルジェネレーションのほうがすき
123:デフォルトの名無しさん
07/08/29 14:14:20
デフォルトで遅延評価にしちゃえばマクロは用なしになるのかな?
現在のマクロは
Schemeだと名前呼び+レキシカルスコープの関数
CLだと名前呼び+ダイナミックスコープの関数と等価?
124:デフォルトの名無しさん
07/08/29 15:00:15
r6rsキタ
125:デフォルトの名無しさん
07/08/29 16:25:14
へー、批准されたんだ…
126:デフォルトの名無しさん
07/08/29 17:04:59
scheme構文もCLマクロもファーストクラスじゃないから関数と等価ではないかな
R6+RSで構文オブジェクトもファーストクラスにならないかな
ところでR6RSどこにキタの?
127:デフォルトの名無しさん
07/08/29 17:33:57
単純に、関数で setq って書けないよね。
引数を評価しないでシンボルのまま扱う手段が必要で、遅延評価だけじゃ足りない。
128:デフォルトの名無しさん
07/08/29 20:33:34
LISP 1.5にはマクロは無く、代わりにFSUBR/FEXPRという引数を評価しない関数があった。
評価すべき部分(例えば setq の第2引数みたいなの)は明示的に eval を呼ぶわけだが、
スコープの関係とかぐちゃぐちゃになって使いにくかったらしい。
129:デフォルトの名無しさん
07/08/31 04:16:32
>>126
URLリンク(lists.r6rs.org)
URLリンク(www.r6rs.org)
YESの人たちとNOの人たちのコメントの差が物悲しい(量・質共に)。
preliminary resultsが出た時は承認ラインが全投票人数の60%と
なぜか思い込んでたもんで、僅差(67/112)で届かないと思って
ホッとしてたりもしたんだけど、まぁ有効投票数ですよね、普通。
130:デフォルトの名無しさん
07/08/31 07:27:54
little schemerを読み終わったのですが、
どうして
(atom? (1 2 3))
はだめで、
(atom? '(1 2 3))
はよいのか、わかりません。
どうかおしえてください。
131:デフォルトの名無しさん
07/08/31 09:35:50
>>130
「よい」「だめ」とは?
132:デフォルトの名無しさん
07/08/31 11:05:24
>>130
上は手続きの呼び出し
下はリスト
133:デフォルトの名無しさん
07/08/31 12:47:30
1 っていう名前の関数はないから、(1 2 3) っていう関数呼び出しは実行できないってことだな
134:デフォルトの名無しさん
07/09/08 22:47:23
ここで聞く話じゃないのかもしれないが....
設定言語みたいなのから, マクロ使いまくりで関数自動生成しまくってる
lisp プログラムを "C に移植して" ってな話を持ちかけられたんだけど,
やっぱ yacc とか bison のお世話になるしかないのかな?
ここでまずけりゃ, 適当なところにルーティングして...
135:デフォルトの名無しさん
07/09/08 23:40:39
その仕事は ECL をリンクしたらお終いなんじゃないの。
136:デフォルトの名無しさん
07/09/09 01:13:57
>>135
おぉ... ありがとん
137:デフォルトの名無しさん
07/09/18 10:33:07
ERR5RS (Extended R5RS Scheme)
URLリンク(scheme-punks.cyber-rush.org)
どうよ
138:ZRBeILAFMGofkjIGHrE
07/09/20 12:33:38
Q5V0we <a href="URLリンク(ghquxaunglno.com) [url=URLリンク(vvxxkzczfvpn.com) [link=URLリンク(nvygioywhlms.com) URLリンク(pscwakgskwjm.com)
139:SSVIenDRWPT
07/09/20 12:33:43
ulTr67 <a href="URLリンク(uqsisuuxrasb.com) [url=URLリンク(qqpugdriqdic.com) [link=URLリンク(wxhmyrzltzhg.com) URLリンク(fmwwcqtbhkjz.com)
140:デフォルトの名無しさん
07/09/20 21:56:24
> 138-139
これってどういう事?
141:デフォルトの名無しさん
07/09/21 08:59:22
2chと互換性のある掲示板にスパム飛ばそうとしてたら2chに間違えて飛ばしちゃったみたいなことかな
142:KNvYxfMgSFWzOWxbL
07/09/22 02:55:55
PinlxK <a href="URLリンク(www.pic.ucla.edu) cock</a>
[URL=URLリンク(www.pic.ucla.edu)
<a href="URLリンク(www.pic.ucla.edu) cocks</a>
[URL=URLリンク(www.pic.ucla.edu)
<a href="URLリンク(www.pic.ucla.edu) dick</a>
[URL=URLリンク(www.pic.ucla.edu)
<a href="URLリンク(www.pic.ucla.edu) dicks</a>
[URL=URLリンク(www.pic.ucla.edu)
<a href="URLリンク(www.pic.ucla.edu) naturals</a>
[URL=URLリンク(www.pic.ucla.edu)
143:ycyihMlyObYpqBH
07/09/22 04:15:03
nleTxn <a href="URLリンク(www.pic.ucla.edu) cock</a>
[URL=URLリンク(www.pic.ucla.edu)
<a href="URLリンク(www.pic.ucla.edu) cocks</a>
[URL=URLリンク(www.pic.ucla.edu)
<a href="URLリンク(www.pic.ucla.edu) dick</a>
[URL=URLリンク(www.pic.ucla.edu)
<a href="URLリンク(www.pic.ucla.edu) dicks</a>
[URL=URLリンク(www.pic.ucla.edu)
<a href="URLリンク(www.pic.ucla.edu) naturals</a>
[URL=URLリンク(www.pic.ucla.edu)
144:デフォルトの名無しさん
07/09/22 04:27:45
よくわからんが、誰か通報しとけ
145:デフォルトの名無しさん
07/09/22 09:07:54
お前が通報しろ。
146:デフォルトの名無しさん
07/09/22 11:40:03
じゃあ俺がやるよ
147:デフォルトの名無しさん
07/09/22 12:06:42
いやいや俺が
148:デフォルトの名無しさん
07/09/22 12:12:04
そんじゃ俺が・・・
149:デフォルトの名無しさん
07/09/22 12:14:34
俺は断る
150:デフォルトの名無しさん
07/09/22 12:21:08
>>149
wwwwww
151:OniOoXUFcrjMlcjpz
07/09/22 12:21:12
7S9kFC <a href="URLリンク(www.pic.ucla.edu) nipples</a>
[URL=URLリンク(www.pic.ucla.edu)
<a href="URLリンク(www.pic.ucla.edu) tits</a>
[URL=URLリンク(www.pic.ucla.edu)
<a href="URLリンク(www.pic.ucla.edu) tits round asses</a>
[URL=URLリンク(www.pic.ucla.edu)
<a href="URLリンク(www.pic.ucla.edu) lesbians</a>
[URL=URLリンク(www.pic.ucla.edu)
<a href="URLリンク(www.pic.ucla.edu) pussy</a>
[URL=URLリンク(www.pic.ucla.edu)
152:デフォルトの名無しさん
07/09/22 23:05:19
嘘だけど通報しといた
153:デフォルトの名無しさん
07/09/22 23:06:36
嘘かよw
154:デフォルトの名無しさん
07/09/22 23:21:00
じゃあ俺がやるよ
155:デフォルトの名無しさん
07/09/22 23:35:29
俺はもうやったぜ
156:デフォルトの名無しさん
07/09/22 23:39:18
いや、俺がやったんだし
157:デフォルトの名無しさん
07/09/23 10:58:34
はあ?お前がやったんだろ
158:デフォルトの名無しさん
07/09/23 11:58:24
ということは、俺じゃなかったの?
159:デフォルトの名無しさん
07/09/23 12:55:34
え、つーか俺やった記憶あるんだけど
160:デフォルトの名無しさん
07/09/23 13:08:43
お前がやったの見たぜ
161:デフォルトの名無しさん
07/09/23 13:56:58
俺は、髪の長い女がやってるのを見た
162:デフォルトの名無しさん
07/09/23 14:37:12
ずっと見てたのか?
163:デフォルトの名無しさん
07/09/23 15:34:44
そうだ、着替えまで見てた
164:デフォルトの名無しさん
07/09/23 15:47:02
それは俺のをか?
165:デフォルトの名無しさん
07/09/23 15:49:18
着替えがあるならそう言ってくれなくちゃだよ。俺帰っちゃったじゃん。
166:デフォルトの名無しさん
07/09/23 15:51:50
甘いな、俺は風呂まで見たぜ
167:デフォルトの名無しさん
07/09/23 16:00:12
でも誰も入っていなかったのが残念だ
168:デフォルトの名無しさん
07/09/23 16:18:46
勝手に決めつけんなよ
俺にはフルチンのイジが見えたのだが
169:デフォルトの名無しさん
07/09/23 18:46:26
((quote))
こんなんみえた
170:デフォルトの名無しさん
07/09/24 01:21:54
,@female
脱がしてる感するよね
171:デフォルトの名無しさん
07/09/24 01:57:38
劇ワロタw
172:デフォルトの名無しさん
07/09/24 02:52:11
DrSchemeでtraceは使えないんでしょうか?
173:デフォルトの名無しさん
07/09/28 19:43:31
Allegro CL free express editionて良いの?
174:デフォルトの名無しさん
07/09/28 20:24:41
用途によるな。どんな用途を考えてる?あと環境は?
175:デフォルトの名無しさん
07/09/28 22:49:03
プログラミング初心者でLispを覚えたいのです。
CLISP+Emacsなどでも覚えられると思うのですが、ACLが素晴らしいIDEだと書いてあったので
最初からそういうものを使うのが良いのか悪いのかもわかりませんが(^^;)
176:デフォルトの名無しさん
07/09/28 22:50:16
環境はWindowsXPです。
177:デフォルトの名無しさん
07/09/28 22:54:11
ACL の IDE(elisp) はいいよ。Emacsをちゃんと使えるなら。
ストレスなくlispを勉強できると思うよ。
つか、elisp なのにあれほど完成度高いのは異常。
178:デフォルトの名無しさん
07/09/28 23:01:46
Lisp を覚えたいという点なら、あとは Free Edition の制限に心理的抵抗がなければ良い環境だ。
ただし「IDE が素晴しい」ってのは微妙だな。どこで読んだの?
VB みたいな GUI ビルダーとかプロファイラとかが充実してるという意味ならそうだが、
コードを書く作業だけは Emacs と SLIME もしくは ELI (ACL附属の SLIME みたいなもん) を使うほうが一般的。
車の免許にたとえると、
- ACL Express: 初心者向けに調整されてリミッターかけまくったレーシングカー
- CLISP: リミッターはなしの限界まで使いたおせる軽自動車
Emacs のセットアップがめんどうなら LispWorks なんかもいいかもね。エディタも Emacs ライクだし。
まぁ、かくいう俺は学生時代はリミッターつきというのが気に入らなくて CLISP とかフリーのを使ってたけどね。
179:デフォルトの名無しさん
07/09/29 00:34:20
LispWorkssのフリー版はcons cellの数に制限があって、リミットがくるとダイアログがでる。
で、値段も手頃とは言い難いが手が出ないほどじゃない(ACLは無理!)ので購入しようとしたのだけど。
国内じゃ扱ってないのでしょんぼり。
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5073日前に更新/189 KB
担当:undef