Lisp Scheme Part18 ..
[2ch|▼Menu]
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は無理!)ので購入しようとしたのだけど。
国内じゃ扱ってないのでしょんぼり。



180:デフォルトの名無しさん
07/09/29 00:44:55
そこでコーマンリスプですよ

181:175
07/09/29 01:21:28
ありがとうございます。
なんとなくイメージがつかめました。かな?

> ただし「IDE が素晴しい」ってのは微妙だな。どこで読んだの?
ここです。
URLリンク(tamago-club.cocolog-nifty.com)

Emacsは大学で端末室にあったUNIXでパンキョウの課題のレポートなどを
書くときに使ったり、設定をコピペして変えて遊んだりしたくらいでして、
使いこなしているというレベルではありませんw
一応Emacsではこれを最近ダウソして弄くってみているところです。
URLリンク(www.gigamonkeys.com)

182:デフォルトの名無しさん
07/09/29 10:33:22
お話の途中で申し訳ないんですが、質問させてください。
第2引数のリストから第1引数と同じ要素を取り除くプログラムを下のように書いたのですが上手く動きません。
どこがどう間違っているのでしょうか。インタプリタはgaucheです。
(begin
 (define rember
  (lambda (a l)
   (cond
   ( (null? l) () )
   ( (list? (car l) ) (cons (rember a (car l)) (rember a (cdr l))))
   ( else
    ( cond
    ( (string=? a (car l)) (rember a (cdr l)))
    ( else ( cons (car l)(rember a (cdr l))))
   )))))
 (rember "hoge" '("hello" '("hello" "world" ) "hoge" "world")))

183:デフォルトの名無しさん
07/09/29 10:43:01
実行しただけだが、1行( (null? l) '()) と直しただけで、
後は説明通りに動いてるように見えるけど。
どう上手く動かしたいのかな?

ちなみにこれが返ってきたが
=>("hello" '("hello" "world") "world")

184:182
07/09/29 11:02:27
>>183
自分の環境で実行すると下のようにエラーが出てしまうんです。
何が悪いのか全然わからなくて…

gosh> *** ERROR: string required, but got quote
Stack Trace:
_______________________________________
0 (string=? a (car l))
At line 219 of "(stdin)"
1 (rember a (car l))
At line 216 of "(stdin)"
2 (rember a (cdr l))
At line 220 of "(stdin)"

185:デフォルトの名無しさん
07/09/29 11:50:36
そういうことならリスト中のquoteを外せば動くけど、
string=?する前にはstring?の述語入れた方がいいね。
こっちで試した処理系はたまたまsymbolと文字列が
同じ扱いなんで混乱させてしまった。

186:デフォルトの名無しさん
07/09/29 11:51:27
やれやれ

187:デフォルトの名無しさん
07/09/29 11:54:04
- ( (string=? a (car l)) (rember a (cdr l)))
+ ( (and (string? (car l)) (string=? a (car l))) (rember a (cdr l)))

symbol に string=? を適用したので error になってる、っていってるじゃん。


188:デフォルトの名無しさん
07/09/29 11:54:36
そういうアバウトな要素の比較はequal?のが良いと思う。
string=?は文字列が来る事が確実な時にのみ使うべき。

189:デフォルトの名無しさん
07/09/29 12:01:44
おいおいw

190:デフォルトの名無しさん
07/09/29 12:04:15
→ (rember "hoge" '("hello" ("hello" "world" ) "hoge" "world")))
→ remover
ってことじゃないんですかねw

191:182
07/09/29 13:01:54
>>185 >>187 >>188
symbolについての理解不足を指摘していただいてありがとうございます。
schemeの理解が少し進みました。
symbolだから何が入っててもおかしくないわけですね。listでも、文字列でも、関数でも。
関数のリストって考えもできるのがおもしろそうです。
ありがとうございました。

192:175
07/09/30 00:51:48
ACLのインストーラ落として起動したら、「200Mあるおw」
って言われたので断念しました。
LISPBoxで勉強します。

193:デフォルトの名無しさん
07/09/30 02:53:24
よくわからん…ドキュメントとかライブラリとか込みで 200MB だろ?
VisualStudio なんかに比べたら激しく小さいと思うけど、どれくらいのサイズなら OK なの?

194:デフォルトの名無しさん
07/09/30 03:01:55
200M入らなくて諦めるってのはその程度の意気込みと言うこと

195:デフォルトの名無しさん
07/09/30 03:13:15
そんなふうに意見を切りすてるのは勿体無い。理由をちゃんと聞けば対応できるかもしれないじゃん。
ドキュメントをあきらめて Web 参照にするだけで数十M減らせるし。ただでさえマイナーで、俺たちは死滅しかけているんだぞっと。
意気込みとかなくても気軽に Lisp の世界に参加できる事をもっとアピールしたい。Emacs からでもいいじゃない。

196:デフォルトの名無しさん
07/09/30 03:24:08
関係者居るんだな…

197:デフォルトの名無しさん
07/09/30 03:30:32
ん? ACL のってことか?全然関係ねーよ。でも Franz の人は c.l.l とかに出てきてるから意見を言うくらいはできるだろう。

198:デフォルトの名無しさん
07/09/30 03:31:33
悪いこととは思ってないんだが。

199:デフォルトの名無しさん
07/09/30 03:55:55
>>196=>>198
「関係者」とか「悪いこと」とか、
自分の脳内だけでこの場と関係してる概念持ち出されても
何がやりたいのかさっぱりなんだけど。

200:デフォルトの名無しさん
07/09/30 05:07:55
いいよもう黒板で。

201:デフォルトの名無しさん
07/09/30 10:59:31
200MB?
Schemeってそんなにあんの?
cygwinのSchemeとかもそんくらいあんの?

202:デフォルトの名無しさん
07/09/30 11:29:16
そんな話題どうでもええ

203:デフォルトの名無しさん
07/09/30 11:32:21
little schemer,seaseoned schemer,reasoned schemerはちゃんと読みたいし、
SICPも読んでみたいし、λ計算とかの数学的な背景もきちんと勉強したいが、
仕事しながらだと何年たってもおわらなそう。
みんなはやっぱ情報専攻で大学の時にやったの?うらやましいわ。

204:デフォルトの名無しさん
07/09/30 11:53:07
寝食を忘れて読めばいい
少年老いやすく学成りがたし、一瞬の光陰軽んずべからず
λ計算に王道なし

205:デフォルトの名無しさん
07/09/30 12:31:56
睡眠はとれよ

206:デフォルトの名無しさん
07/09/30 12:52:16
やだよ

207:デフォルトの名無しさん
07/09/30 12:58:47
禿げるよ

208:デフォルトの名無しさん
07/09/30 13:04:32
剥げるか、読み通すか、それが問題だ。

209:デフォルトの名無しさん
07/09/30 13:05:08
ぜんぜん

210:デフォルトの名無しさん
07/09/30 13:06:19
呼んだ〜?
URLリンク(eecsfacweb.mit.edu)

211:デフォルトの名無しさん
07/09/30 13:09:02
どうして Lisp と関係ない話題だと元気になるのですか?自演なのですか?

212:デフォルトの名無しさん
07/09/30 13:46:46
>>203
経験を積んだ大人じゃないとLispの良さは分からない。

213:デフォルトの名無しさん
07/09/30 13:47:13
どうも2ちゃんに来ると攻撃的なレスつけちゃうよね。
Lispに関して気軽に話せる場なんて他にないんだし仲良くやってこうよ。

214:デフォルトの名無しさん
07/09/30 13:50:36
>>212
Paul Grahamが25,6歳以上の奴にはLispは無理って言ってなかったっけ

215:デフォルトの名無しさん
07/09/30 13:53:33
LISPで2chツール(ブラウザ他)作ったら人気出ると思うんだ。

216:デフォルトの名無しさん
07/09/30 13:56:49
歳をとると経験のバイアスがかかって新しい事へ挑戦しにくくなるってのはあるけど、本当は歳なんて関係ない。

217:デフォルトの名無しさん
07/09/30 13:57:39
LISPは自然言語だからな。

218:デフォルトの名無しさん
07/09/30 14:03:47
Paul Grahamが「裸エプロンより裸ランドセルだ」って言っていた

219:デフォルトの名無しさん
07/09/30 14:13:04
>>215
Navi2ch とか 2ch-mode for xyzzy はLispでないと?

220:デフォルトの名無しさん
07/09/30 14:13:44
>>214
Orz

221:デフォルトの名無しさん
07/09/30 14:19:45
>>213
お前はなにか勘違いしている
2chは議論をするところでも仲良しごっこをするところでもない
レスで喧嘩して遊ぶところだ

その中にたまにいい情報が混じっている、くらいのもんだ

222:デフォルトの名無しさん
07/09/30 14:24:47
萌Emacsとかあったらいいな。
2chブラウザもWinnyもShareも出来て、もちろんだが全てメイドが奉仕してくれるんだ。
つまりそれを使っているとそのうち魔法使いになれる。どうかな。


223:デフォルトの名無しさん
07/09/30 14:43:44
>>219
それはEmacsやXyzzyを使う人にしか魅力がないよね。
そうじゃなくて独立したアプリなんだけどLISPでないと出来にくいような
そして魅力的なものってこと。
作れたら作ってるんで所詮ないものねだりだけど。
普及させたいって人が居るみたいだから言ってみた。

224:デフォルトの名無しさん
07/09/30 14:48:14
LISPでないと出来にくいようなって物が、そもそも無いんじゃないの?

専ブラに関して言えば、出尽くした感があるし。


225:デフォルトの名無しさん
07/09/30 14:56:45
>>223
ランタイムライセンスがフリーでギコナビレベルのGUIの作れるLispってあったけ?


226:デフォルトの名無しさん
07/09/30 15:00:54
>>223
しようと思えばnavi2chは独立なアプリにもできるよ。
普通にインストールされた状態のEmacsはつまるところ、
elisp言語処理系にエディタ用拡張モジュールをビルトインした状態のものだから。

普通はEmacsを立ち上げてその中で作業の一環としてM-x navi2chするから
わざわざ独立したコマンドに仕立てないだけ。

227:デフォルトの名無しさん
07/09/30 15:03:15
独立したアプリという意味がまったくわかってないな
頭悪そう

228:デフォルトの名無しさん
07/09/30 15:05:38
>>224
人工ポールグレアムはLispじゃないと作れなかったよ。
このスレで初級的な質問に回答させてるけど、よくできてるだろ?



229:デフォルトの名無しさん
07/09/30 15:08:13
227のいう意味とやらがはっきりしないが、もしかしてdumpということをご存じないのかな?

230:デフォルトの名無しさん
07/09/30 15:08:57
マジでか!

231:デフォルトの名無しさん
07/09/30 15:15:19
そうそう。EmacsとかなしでWYSIWYGで誰でも簡単に使えなきゃ、ってこと。
そういうとこから入る訳じゃない。子供は。

232:デフォルトの名無しさん
07/09/30 15:20:26
こんにちは人工苫米地です。洗脳しにきました。

233:デフォルトの名無しさん
07/09/30 15:25:44
どったのこの速さ?
と思ったらキチガイが一匹紛れ込んでるだけかよ

234:デフォルトの名無しさん
07/09/30 15:29:38
> (= (+ 1 1) 1)
t
ほんとだ!

235:デフォルトの名無しさん
07/09/30 16:01:21
僕のオナニーみてください>< まで読んだ

236:デフォルトの名無しさん
07/09/30 16:04:16
>>229
毎回あの糞重い起動で?
設定を全部テキストとS式で設定して?
ファイルサイズは?

独立アプリとしてかなり致命的だと思うんだけど
つーか話の流れを見ればただたんに「できる」って話をしていないのは判るだろう
読解力無いのかよ・・・

237:デフォルトの名無しさん
07/09/30 16:08:00
>>215
>LISPで2chツール(ブラウザ他)作ったら人気出ると思うんだ。

まずこの仮定が間違ってるから仕方がない。

238:デフォルトの名無しさん
07/09/30 16:13:43
LISPerはプログラムは作ってもアプリは作らない

239:デフォルトの名無しさん
07/09/30 18:34:50
>>238
!!!

240:デフォルトの名無しさん
07/09/30 18:40:57
処理系作りで忙しいから応用には興味がないとかw

241:デフォルトの名無しさん
07/09/30 19:21:17
言語の乗り換えの契機になるようなアプリって何だろうね。
Rails は Ruby 書く人を (たぶん) 増やしたのだろうけど、
それは、今の時代の空気 (「WEB2.0」だの「アジャイル」だの) に
良く合っていたからかな。Rails はアプリじゃないが。
次の時代の空気を先取りする Lisp 製アプリ


242:デフォルトの名無しさん
07/09/30 19:26:33
を、俺が作ろうと思っている。ちょっとまちなー


243:デフォルトの名無しさん
07/09/30 19:26:52
アプリが増えても書く人は増えないな。やっぱフレームワークですよ。
魔法のようなやつだれか作ってくれ。

244:デフォルトの名無しさん
07/09/30 19:28:18
47氏キター!

245:デフォルトの名無しさん
07/09/30 19:30:35
記念真紀子age

246:デフォルトの名無しさん
07/09/30 19:30:53
schemeがどこまでできるのかわからん・・・
組み込み関数のリファレンス的なページないですか><

247:デフォルトの名無しさん
07/09/30 19:52:00
ocamlとかhaskellなら開発効率が全然違うって話だけどね。
pugsとかいうperl6の処理系を作った大学生はhaskellの勉強から3ヶ月でpugs完成させたっていうけど。
俺は3ヶ月じゃhaskell使いこなせ無さそうだし。

248:デフォルトの名無しさん
07/09/30 20:13:07
Haskellから得るものは大きいが
Lispから得たものはないと言ってみる

249:デフォルトの名無しさん
07/09/30 20:25:27
>>246
ここに全部書いてあるよ
URLリンク(www.r6rs.org)

250:デフォルトの名無しさん
07/09/30 20:30:48
個人的な感覚では、ocamlは型にうるさいschemeって感じだけど、
haskellは全然別物って気がしてる。
haskellは入門書を読んで、ちょろちょろ書いてみる程度しか知らないが。


251:デフォルトの名無しさん
07/09/30 20:41:40
R6RSでたんだ。知らなかったよ。
どこが変わったのかな・・・

252:デフォルトの名無しさん
07/09/30 21:17:23
REPL が無くなったんだっけ? >> R6RS

253:デフォルトの名無しさん
07/09/30 23:12:29
WindowsのUIがまともに使えるLispってACL以外にあるのけ?


254:デフォルトの名無しさん
07/09/30 23:31:48
>>253
>>180

255:デフォルトの名無しさん
07/10/01 00:15:59
つ LispWorks

256:デフォルトの名無しさん
07/10/01 00:21:12
分散処理のライブラリを書いてたらLispっぽくなってきた
/( ^o^ )\なんてこったい

257:デフォルトの名無しさん
07/10/01 00:29:05
>>254
Corman、日本語扱えるようになったの?

258:デフォルトの名無しさん
07/10/01 00:42:12
日本語っつーかunicode対応してないの?

259:デフォルトの名無しさん
07/10/01 00:52:46
>>256
グリーンスパンの(ry

260:デフォルトの名無しさん
07/10/01 01:26:32
>>249
dクス!

261:デフォルトの名無しさん
07/10/01 19:53:54
なんで誰も>>204に「“一寸”ですよ」と教えてあげない件

262:デフォルトの名無しさん
07/10/02 00:32:38
宣言的という事がよくわかりません。どうしたらいいですか。
タコな質問ですみません。

263:デフォルトの名無しさん
07/10/02 03:01:18
処理の手順を書くのは手続き型言語で良いんだけど
その中でも、何かを求める式を考えるときは Scheme を使う俺
手続き型言語で複雑な式は考えたくない

264:デフォルトの名無しさん
07/10/02 22:06:16
しっかしLispってマイナーだよね…
誰も知らんぞ

265:デフォルトの名無しさん
07/10/02 22:13:15
どんなとこに居るんだよw

266:デフォルトの名無しさん
07/10/02 22:30:38
>>264
中学高校のパソ部ですか?ww

267:デフォルトの名無しさん
07/10/02 22:32:52
このつまらない流れは自演なの?

268:デフォルトの名無しさん
07/10/03 00:37:23
しっかしLispってマイナーだよね…
×誰も知らんぞ
○誰も開発に使ってないぞ

269:デフォルトの名無しさん
07/10/03 00:38:27
Lispなら聞いたことあるくらいは言ってもらえる。
Schemeとなると更に知名度下がるけど。

270:デフォルトの名無しさん
07/10/03 00:50:54
俺の周りの奴には一通りプログラミング言語の歴史を説明しておいたから
Lisp を知らない人は居ない。まあ憶える必要の無い言語くらいに思われている
みたいだけど。

271:デフォルトの名無しさん
07/10/03 01:11:04
これを見せればOK\(^o^)/
URLリンク(www.asahi-net.or.jp)

272:デフォルトの名無しさん
07/10/03 01:13:30
URL切れちゃった/(^o^)\
URLリンク(www.asahi-net.or.jp)

273:デフォルトの名無しさん
07/10/03 01:20:20
次からテンプレに貼ります。

274:デフォルトの名無しさん
07/10/03 01:23:52
>>272のリンクにあるみたいにLispがそんなにすげーなら
なんで>>268みたいなことになるんだ?
逆に言えばLispって誰も使わないってことは…

275:デフォルトの名無しさん
07/10/03 01:35:13
Lisperはジェダイかニュータイプなんだよ。

276:デフォルトの名無しさん
07/10/03 01:39:46
>>274
凄すぎて普通程度の脳みそだと使いにくいってことじゃね?

277:デフォルトの名無しさん
07/10/03 01:52:47
>>274
Lisperは一向に完成する見込みのない「LISP以上の何か」を作るのに忙しい



278:デフォルトの名無しさん
07/10/03 08:10:41
マジレスすると、仕事でプログラムやってる奴の
ほとんどは仕事として淡々と与えられたものを使っているだけ。
プログラム自身に興味がある奴はごく一部。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5076日前に更新/189 KB
担当:undef