フッ… l! |l| i|li , __ _ ニ_,,..,,,,_ l|!・ω・ :l. __ ̄ ̄ ̄ / ・ω・≡ !i ;li  ̄ ̄ ̄ キ 三 i!| |i  ̄ ̄  ̄ =`'ー-三‐ ― / ; / ; ; ; _,/.,,,// / ヒュンッ /・ω・ / | / i/ //ー--/´ : / / /; ニ_,,..,,,,,_ / ・ω・`ヽ ニ≡ ; .: ダッ キ 三 三 人/! , ; =`'ー-三‐ ―_____从ノ レ, 、
>1乙
a が nil なら b="b", c="c" a がそれ以外なら b=a, c=a と処理したいのですが どう書けば良いでしょうか? 自分やってダメだった物を書いておきます。 (let ((a nil)) (let ((if a (list '(b a) '(c c)) (list '(b "b") '(c "c")))) (print b) (print c))) 環境は Common Lisp (xyzzy) です。
(defun f (a) (cond (a (list (list 'b a) (list 'c a))) (t (list (list 'b "b") (list 'c "c"))))) (f 1) (f nil)
(デフン フ(ァ) (コンド(ァ(リスト(リスト 'ブ ァ)(リスト 'ク ァ))) (テ(リスト(リスト 'ブ "バ゙")(リスト 'ク "カ"))))) (フ 1) (フ ニル) ↑見てたら唐突に8bitマシンリスプというのを思いついた 馬鹿にしてるわけじゃないお
デフコン1! デフコン1!
前スレにHarropくさいのが湧いてたな。 Harropよけをまいておこう。 λ... Haskell Haskel Haskell
技術系のスレを収集してるサイトなかったっけ
なんか再帰を使うおもしろい問題ない? こないだのカタラン数のは良かったよ。
>>26 基本だけど、冪集合を列挙するというのはどうよ。
>>27 難しそうだけど面白そう。
考えてみるよ。
common lisp に list 内の2つの値を入れ替える関数は標準で用意されていますか?
お前の世界のリストは常に2つの値から成るのか
ここまで間抜けな返しは久々に見る。
32 :
28 :2009/07/28(火) 21:40:35
>>29 自分もそれ考えてた。選択ソートとかバブルソートで必要だけど
リストだと効率悪いよね。
効率が求められる処理に こんなアホな関数の出番はないけど (defun swap (l x y) (let ((tmp (nth x l))) (setf (nth x l) (nth y l)) (setf (nth y l) tmp)))
ベクターに変換すれば多少はいいのだろうか? (define (swap m n ls) (let* ((v (list->vector ls)) (vm (vector-ref v (- m 1))) (vn (vector-ref v (- n 1)))) (vector-set! v (- n 1) vm) (vector-set! v (- m 1) vn) (vector->list v))) Schemeでスマンです。
rotatef いいよね。最初知ったとき感動したわ。
39 :
29 :2009/07/29(水) 02:53:33
(cdr '(1 2 3)) (nthcdr 1 '(1 2 3)) この2つは等価だと思ってたんですが (pop (cdr '(1 2 3))) (pop (nthcdr 1 '(1 2 3))) これの下側がエラーになってしまいます。 どう書けば回避できるか どなたか教えていただけませんか?
>>41 んんん、難しいですね。
提示されたリンク先何度か繰り返して読んでみます。
ありがとうございました。
phpのwebサービスがちょっと負荷かかると鯖ごと落としてくれるんだけど common lispやschmeの処理系は、その辺はどのぐらい頑健なの?
emacs22に標準で入ってるscheme編集モードをみんな使ってるんだろうか
>>41 すいません、良く試してみると返り値は正しいんですが
元のリストの変更は n=0 の時失敗してしまうようです…。
(let ((ls '(1 2 3)))
(foo ls 0)
ls)
46 :
27 :2009/07/29(水) 17:01:31
>>32 自分が書いたのはこんなの。
Lisp/Schemeはほとんど使ったことないんで書き方がおかしいかもしれないが。
(define (add-elt elt set)
(cond
((null? set) (list elt))
((member elt set) set)
(else (cons elt set))))
(define (map-add-elt elt set)
(cond
((null? set) '())
(else (map (lambda (m) (add-elt elt m)) set))))
(define (power-set set)
(cond
((null? set) '(()))
(else (let
((ps (power-set (cdr set))))
(append ps (map-add-elt (car set) ps))))))
47 :
32 :2009/07/29(水) 17:55:23
>>46 ああ〜〜〜〜〜、そうかぁ。
集合の要素を1つ抜いた部分集合を全部の要素について考えたのですが、
ああ、そうですね。全部考える必要などなかったです。
冪集合は格要素を「とる」か「とらない」で再帰すれば良いと考えて こう書いてみました (define (power l) (if (not (pair? l)) (list l) (append (power (cdr l)) ;先頭をとらない (map (pa$ cons (car l)) (power (cdr l))) ;先頭をとる )))
こないだカタランの問題、続きがあるので 良かったら考えてみてください 元々は小町算を解くために考えた問題です 結局、カタランが出来たのにこれはまだ解けずにいます 問題 2引数を取る演算子のリストと、演算数のリスト(演算子より1個多い)を引数にとって 全ての生成可能な式のリストを生成するkomachiを定義せよ (komachi '(+ - *) '(1 2 3 4)) を実行すると ( (+ (- (* 1 2) 3) 4) (+ (- 1 (* 2 3)) 4) (+ (- 1 2) (* 3 4)) ... ;こんな感じで全パターンが出るまで続く。上の並びは適当 ) この条件をつけるかはお任せ 条件:「演算子、あるいは演算数のみに注目した場合、順序の入れ替えはないものとする」 例えば '(+ -) '(1 2 3)において (+ 1 (- 2 3))を(+ 1 (- 3 2)) ;演算数の順序を入れ替えたのでNG (+ 1 (- 2 3))を(- 1 (+ 2 3)) ;演算子の順序を入れ替えたのでNG こうすると、komachiが生成する式の総数は (演算子は空気と思えばよいので)演算数のカタラン数に一致します。多分。
50 :
32 :2009/07/29(水) 18:53:31
>>48 なるほどよくわかりました。2^nを計算
するアルゴリズムと基本的には同じですね。
要素をとる、とらない、の2通りがあるから。
冪集合の名前の通りだ。
51 :
27 :2009/07/29(水) 19:25:07
>>48 pa$というのは何ですか?mzschemeだとエラーになってしまいます。
>>51 (define (pa$ fn . args) (lambda more-args (apply fn (append args more-args))))
>>51 部分適用といって、手続きの引数の一部を固定した新たな引数を返す手続き。
例えば、
((pa$ + 3) 2) ⇒ 5
みたいな。SRFI-26のcutと似たようなもの。cutなら、
((cut + 3 <>) 2) ⇒ 5
こんな感じ。
新たな引数→新たな手続きの間違い。失礼。
教えてもらってやっと納得のいくコードが書けたよ。 最初に書いたのは無駄だらけだった(笑)。 (define (power-set ls) (if (null? ls) '(()) (let ((subset (power-set (cdr ls)))) (append subset (map (lambda (x) (cons (car ls) x)) subset)))))
>>45 おっと失礼。マクロじゃなきゃダメですね。
(defmacro foo (ls n) `(if (= ,n 0) (pop ,ls) (pop (cdr (nthcdr (- ,n 1) ,ls))) ))
>>51 mzscheme なら curry
ちなみに
>>52 の pa$ は片方が空リストになる時にエラーになった
((pa$ + 3) 2) ⇒ 5 こんなのは無駄に問題を難しくしてるだけ (+ 3 2) これでいいじゃないか (pa$ + 3) は何を返す? 手続きを作ったところでそれを保存したり表示したりできるわけでもないし 無駄なことをするな
>>59 作った手続きを束縛して再利用するに決まってんじゃん。
もしかして、複数の引数を持つ手続きを呼ぶ際には、
毎回必ず全ての引数の値が異なるようになる呪いを掛けられてる人ですか?
というか、クロージャがファーストクラスな言語でそういう事を言うのが信じられない。
カリー化を使うとうまく解ける問題があったら教えてください。
構文糖衣みたいなもんなので特にない
(pa$ + 3) とか (cut + 3 <>) とかではなくマクロにして (bind (+ 100 $1)) とか (bind (+ 200 . $rest)) とか書けないかな。 直観的になって嬉しいと思うんだけど。
arityを書かなきゃいけないのはダサいな。式の中の$nを調べて自動で出してほしいところ。
一方ロシアは (^(x) (+ 100 x))
(define-macro (bind . body) `(lambda ($1) ,@body)) 後者は構文として正しくない
> (bind (+ 200 . $rest)) @restとすると展開 $restとすると単値(リスト) がいいかも ((bind (+ 200 @rest)) 300 400) ; ==> 900 ((bind (cons 200 $rest)) 300 400) ; ==> (200 300 400)
>>67 LOL の 5.2 節を参考にしてみたんだけどダサいかな。
マクロ引数を flatten してごにょごにょすればそういうのもできるよ
> 確かにどこから rest 引数にすりゃいいのか決められないな。 単純に最も大きい番号の数より多い引数が rest になるんじゃまずいのかな。 式の中で $1, $2, $3, $rest が使われていたら (lambda ($1 $2 $3 . $rest) ...) になるみたいな。
>>56 ありがとうございます。
こういう時にマクロを使うんですね。勉強になります。
(define-macro (bind1 . body) `(lambda ($1 . $rest) ,@body)) (define-macro (bind2 . body) `(lambda ($2 . $rest) (lambda ($1) ,@body)))
誰か弟子にしてください!!
おう! いいぞ。 今日から俺のことを師匠と呼べ。
再帰使って自分を弟子にしろ
どこかに終了条件がないと無限ループになるぞ
streamにして、毎回弟子を取り出せばおk
((null 弟子) nil)
_これって何? どんな時に使うの?
>>82 プレースホルダー。
使わない引数とかを表現するのに使う作法。
(define (const a) (lambda _ a)) とか。
引数が必要ない時に使う 透明あぼーんと同じ
仕様にあるんだっけ? いつもdummy、みたいな変数名を付けてた
仕様にはない。 あくまで作法。
prologではそれで最適化とかなかったっけ まあフロー解析すりゃいいけど
ああ、CLやschemeは_も変数として定義出来るのを忘れてたよ
82です.分かりました. みなさんありがとうございます.
Erlang だと _X みたいな変数は自動で CL で言うところの ignore 扱いになるね
haskell でも言語仕様でプレースホルダーとしての意味を規定してたはず。
>>82 R6RS のマクロパターンではワイルドカード
それ以外の場所ではただのシンボル
自分はand-let*の中でよく使いますね < '_
>>93 and-let*で _ 使いたくなる時ってある?
単に条件判断のみやりたい時は変数書かなくてもいいわけだし。
SICP昔読んだ程度の初心者なのですが、最近翻訳された「Let Over Lambda」は Lisperの皆様から見てどんな感想でしょうか。 どうもマクロというと難しいという印象強いので、翻訳以前から本は知ってましたけど 読むのは気が引けてました。 また、翻訳レベルはどうでしょうか?Amazonの立ち読み見た限りではかなり良い 翻訳に感じました。
>>94 単に趣味の問題です:-)
変数だけ書いたり式だけ書いたりするのはバランスが悪く感じるので
'_を使っているんです
Cなんかで変数宣言&初期化する時に=を揃えるような感覚です
int hoge = 10;
int foo = 30;
揃わなかった:-(
Cの代入で桁をきれいに揃えようとして0で埋めたら8進になっちゃった という話を思い出した。 x = 123; y = 054;
99 :
デフォルトの名無しさん :2009/08/01(土) 22:40:23
すみません、どこで質問していいのか分からなかったので教えてください LispマシンっていうのはPC98がBASICだったみたいに LISPを基本的に動作するパソコンんの事でしょうか?
まずはPC98が何だったか調べる作業から始めろ
てにをはがおかしい
いや、てにをはを直したとしても、繕い切れない何かがある
>>99 終盤の一部のPC98を除いてROMに最初からBASICインタプリタが塔載されていたことを思うと、
確かにBASICを基本としていたのかもしれないとは思うが、
ハードウェアの構造がBASICに特に有利ということはない。
実際、他の言語の方が効率的に使えた。
一般にLispマシンってのはLispを主要な言語とするだけでなくて、
CPU のインストラクションのレベルから設計時に Lisp を前提とし、
Lisp のために最適化されているようなマシンだと思う。
ELIS/TAOってどこかで動いているんかな?
シュレディンガーの猫みたいな問いだな
俺の横で寝てるよ
猫が?竹内先生が?
俺が
せつこ! それシュレディンガーやない、ドッペルゲンガーや!
リストのドッペルゲンガーの作り方って↓でいいのかい? (define (copy ls) (if (atom? ls) ls (cons (copy (car ls)) (copy (cdr ls))))) (define (atom? x) (not (pair? x)))
ベクタを忘れてる
(define (copy . ls) ls) で良い。
>
>>111 あ、いや、リストですから。
>>112 なるほど、そうなんですね。
因みにコードは復刊する竹内先生の本にあったものを拝借。
ディープコピーwするなら110しないとだめだよ
copyされたものかどうかを見抜くことってできないですか? お前はドッペルゲンガーだろ?って (double? ls) => #t #f
eq?で十分だけど?
見抜くことが出来たらコピーではないとおもう
>>116-117 比較じゃなくて、「同じものが存在するか」を調べたいってこと?
Scheme 的には出来ない。
コピーしたときにオブジェクトに何らかのマークをつけるような
データ構造を作ってなんとかするというのが妥当かな。
あんまり知らんけど Ruby には汚染フラグってあったよな?
あんな感じで。
で、なんでそんなことをしたいのやぅぃ?
set-car!set-cdr!を禁止すればeq?でいいんだけど?
いやいやルートから比較するならやっぱりeq?で十分だけど?
123 :
116 :2009/08/03(月) 08:53:06
ああ、そっか。eq?でいいのですね。 eq?の動作を誤解してました。
>>123 名前が長くなるほど、同値性の判断は柔らかくなるよん。
名前が短くなるほ(ry
フィルター処理で同一か判断する(何もフィルタリングされなかった) 時に使える>eq? 非破壊という前提ならほとんどの処理に当てはまる
組込み関数のequal?ってこんな感じ? (define (my-equal? ls1 ls2) (if (not (pair? ls1)) (eq? ls1 ls2) (and (my-equal? (car ls1) (car ls2)) (my-equal? (cdr ls2) (cdr ls2))))) ところでconsはeq?と並んで基本関数だと本にあったはず。 でも、SICPでconsも定義されていたような覚えがあるんだけど。 consも作れる?
覚えがある、じゃなくて読み返せ
(define ((cons a b)p)(p a b)) (define (car p)(p (lambda(a b)a))) (define (car p)(p (lambda(a b)b)))
>>128 それそれ。中西先生の本にあった基本5関数の話が崩壊してしまった
気分になるんですよ。
それじゃ印字もできないし、「作れる」とは言わない
印字する関数を作れば良いだけ
じゃあ作れよ ちなみに「印字する関数」だけじゃ済まなくなるぞ
基本5関数っていっても「関数」は5つあればいいけど QUOTE LAMBDA IF (COND)といった特別式は別に必要なんじゃないかな 5関数とリスト構造だけでチューリング完全なら教えてほしい 自分はかなり考えたけど無理だった (もっともLAMBDAがあれば基本5関数もIFもいらなくなるけど。QUOTEはいるかな)
そりゃラムダ計算がチューリング等価だからなぁ…
>>133 マッカーシー先生のLispの最初の論文にはcondが使われているし
基本関数とは別物では?
[ → ; → ; → ]
うん、論文では特別式にあたるものも使われているにもかかわらず wikiを始め基本5関数"のみ"でチューリング完全と言及されているものも多いんだけど λ計算を初めて知った時、それだけでチューリング完全になるなんて思いもつかなかった自分には 基本5関数"のみ"ではチューリング完全ではないとは断定できなくて… チャーチ数とかYコンビネータとか思いつくような人ならアレだけでチューリング完全に仕立て上げられちゃうんじゃないかとも思ったもんで
基本5関数のみだったら単に5つの関数でしかないわけで、 そこに合成・再帰の操作を許して得られる関数のクラスがチューリング完全、 という言い方になるんだろうね
そうなんだろうけど、λ(lambda)かdefun(label)があればそれだけでチューリング完全なわけで 結局、基本5関数はチューリング完全なλ算法系の上で"Lisp"を構築するプリミティブにすぎないって話になっちゃうんじゃないかな 基本5関数とチューリング完全性は無関係ってことに
だからそのLAMBDAやLABELを基本関数で記述している、というのが上の論文の肝でしょ
ところで「チューリング完全である」っていう述語はどうやって記述すればいいの?
うーん記述には特別式を使っているように思えるけどなぁ…
condもdefunも使ってるじゃないですか
R5RSで,シンボルと通常の値の束縛にはdefineを,シンボルと マクロの束縛にはdefine-syntaxを,と使い分けるのはなぜ なんでしょう? たとえば,どちらもdefineでできたとしたら 不都合が起きるような場合はありますか? Common Lispが 手続きとそれ以外の値とを別々のスコープで扱うように, Schemeではマクロとそれ以外の値とを別々のスコープで扱う ということ?何を意図しての仕様かがもうひとつわかりません
あと5年待てば判るよ
148 :
厨房 :2009/08/04(火) 00:56:52
すいません人工知能で彼女作りたいんですけどやっぱ人工知能はLispがいいんでしょうか? 勉強がんばるっす!!
人工少女で我慢しなさい
>>146 マクロ展開は普通は評価の前に行なわれる。
要するにマクロ展開と関数の評価は異なるレイヤで行なわれる。
もしマクロを第一級に格上げしたとしたら、
set! されたときに展開しなおしとか必要になって、
付随する様々な挙動が破綻してわけわかんなくなる。
不都合とかいうレベルの話じゃねーよ。 論外だろ。
まぁ、そういう Lisp があってもいいかとは思うけど、
Scheme では無理だし、パフォーマンス的にはかなり不利になるはず。
C++テンプレートのコンパイル時実行のようなもの
set! されたときにインライン展開しなおしとか定数伝播しなおしとか必要になって のようなもの
人工彼女の話と聞いてすっ飛んで参りました、ハイ。
emacs23リリースされたけどlisperには関係ないのかな
javascriptでもマクロ以外はlispと同じようなことできるの?
人工彼女よりも生身の彼女の方がエキサイティングで楽しいよ。(笑) ところでウィノグラードの積木をする少女のプログラムは今のパソコンの 性能なら十分に動くと思うのだけど、誰か動かしてないかな? マイクロプランナーってPrologみたいなもの?
>>157 JavaScript とか Ruby を「広義のLisp」に含めようとする人すらいるが、
構文木を操作することを可能にしたマクロと、マクロの大前提であるS式こそが Lisp の本質だと思う。
「マクロ以外は」と言ってしまうとせいぜいがクロージャとリスト操作くらいだろ?
JavaScript でもそれらを扱えるのは確かだが、
最も重要なマクロを除いてしまった上で「同じようなこと」が出来たからって…
昔lisp好きのruby信者だったけど、実際のものをschemeやらで書くようになって、 今までruby信者だったことを恥じたね。 バカみたいにシンタックス増やしてその議論に時間裂いて如何に信者を増やすかが、その人たちの言う言語なんだと... carとcdr、"(" と ")" 、applyとeval、言語のシンタックスが提供するのなんてこの2極で十分だ。(極論だけど) 言語作者のエゴが作る多すぎるルールは戒律になって自由に対してのしかかってくるだけだよ。 (この戯言で怒った人はごめんね☆)
さらに進んでSKIで十分と言えるようになれば一人前
>>152 Guileはそういうとここだわってますよね
> (define (hoge) (begin (display 'function) (newline)))
> (define (foo) (hoge))
> (foo)
function
> (define-macro (hoge) '(begin (display 'macro) (newline)))
> (foo)
macro
親処理系のSCMで動かないこのコードがGuileで動くってことはわざわざ追加された仕様なんでしょうね
それはただの処理系依存の話 gaucheの最適化レベルが低いってだけ
Guileです
165 :
160 :2009/08/04(火) 20:37:43
>>161 SKIってSKIコンビネータなんちゃらってやつ?
とにかく読み漁ってみるわ。
まじで情報サンクス。
やっと計算云々のコアにたどり着けるような気がする...
今まで童貞で良かったわ。きっとセックスより気持ち良いに違いない。
>>165 全然違うものですがPostScriptとSECD仮想機械も面白いものですよ。
PostScriptにはつい最近興味を持ち始めたのですが
Forthよりコッチ側(関数的プログラミングとか)に近くて
末尾呼び出しの最適化もされるし驚きでした。
(ループが再帰で書ける!)
SECD仮想機械はS式ベースの仮想機械で
これをベースにしたScheme処理系もあるみたいです。
センスのあるやつはコードを書く センスの無いバカは理論をやる それが計算機の世界
168 :
デフォルトの名無しさん :2009/08/04(火) 21:05:47
いまはなきLispMe
169 :
デフォルトの名無しさん :2009/08/04(火) 21:12:14
>>167 ○ センスの無いバカは理論「だけ」をやる
理論をまったく知らないでコードを書くのは例外なく馬鹿
>>166 かなり面白そう。
PostScriptは名前だけ知ってたんですが、初めて見ました。
というか、S式 -> ps とかすごく簡単に書けそうでプロッターとしていけますね。
SECD仮想機械は機械的(物理的?)な観点から見れそうなので、今までlisp系を観念的にしか見てなかった自分としては、今までとは対極の見方が出来そうです。
情報サンクスです。
素直にCをベースにしたscheme処理系を見ればいいのに 据え膳食わぬは男の恥
>>174 は文字列に対して適用してますが、↓と意味は違うんですかね?
(((() "a" "a" "a") ("b" ("b" ("b") . "c") . "c") . "c"))
それぞれの文字列がeq?にならないからってことかな?
>>176 そのとおり。 共有構造を明記できる記法。
見づらいなら write で出力すればよい。
LispでLisp処理系が書けるってのはCでCコンパイラが書けるってのとは 違う不思議さがある。ほら吹き男爵のブートストラップの話みたいな。
Lispの便利機能(GCとかレキサとかデータ構造とか)の実装抜きで作れるからな
マクロをうまく使って作ると面倒なことを一切せずに元のLispと同等の速度で動く
しまった、2時間も遅れてかぶってる、撃つ出し脳
おっおっ!
キター
〜準拠とか、きちんとやろうとする人はすごいなあ
moshってシェルとして使えたりするん?
>>184 Windows2000でインストーラ使って即実行したら
「mosh.exe - エントリ ポイントが見つかりません
プロシージャ エントリ ポイント freeaddrinfo がダイナミック リンク ライブラリ WS2_32.dll から見つかりませんでした。」
て怒られた
>>185 >>186 >>187 >>188 ありがとうございます!
>>189 まだ常用には向いていないです。
(mosh shell)というライブラリが付属しているのですが
機能が足りないです。
>>190 試していただいてありがとうございます。
申し訳ないです。Windows XP でしか動作確認できていません。
Windows 2000 では使えないWinSock で関数を使ってしまったみたいですね。
取り急ぎバグとして issue 登録しておきます。
いちいち宣伝にくるな
むしろ歓迎。 正三郎がアフィりに来るのを心待ちにしてる。
いちいち宣伝にくるな
むしろ歓迎。 Dan the schemer が弾言しにくるのを心待ちにしてる。(^o^)
弾とか有り難がっている馬鹿か
ひげぽんがlispスレにくるの見たの初めてかも OS作ろうとか言ってた頃が懐かしいな
使い物にならない俺俺Lispがバージョンアップするたびに 宣伝されたらたまったもんじゃない
バージョン1.0になったら また来たらいいよ
だね
規格準拠であるという点一つとっても俺Lispじゃないでしょ ネット上で公開しているわけだし ShiroさんのGaucheすらverUPカキコが許されないの? 独自処理系の書き込みばかりになったら(なりそうになったら)スレを分ければいいだけでは?
R6なんですよね。大変そうですね。 moshの方向性は何なんでしょうか。 実用?勉強?哲学?それとも胸に付けるラムダのバッジ? 実用 : shiroさん、本当に感謝しています。 勉強 : みんな作ってるよ。俺scheme。 哲学 : arcがやってる。(そもそもこれが目的だったら鼻高々にR6準拠なんて言わないような。) ラムダバッジ : 食い扶持。金くれIPA。胸に光るは永田町。私は自民党(R6)の議員です。
充分に使いものになるレベルだと思う。 細かいバグはまだまだあるけど、基本はしっかりしている。 その細かい部分は多くの環境で使ってみないとなんとも言えないので、 このスレで議論するのは意味があると思う。 思うだけだけど。 ところで --loadpath オプションでは複数のパスをコロンで区切って渡せる? Windows ではコロンはドライブレターの表記に使う。 コロンに特別な意味があると絶対パスを使えないことになる。 修正要。
たった2レスでこの荒れようw というより一人基地が混じってるだけだが
この流れを「荒れ」と思ってしまうあなたも相当2chをわかってない
このスレではムキになって人の行為を否定するような人はあまり居ないからね。
Gaucheは使いものになるし、 本も出ているし、いちいち宣伝に来ない
>>191 ヘッダファイルの中で
#if (_WIN32_WINNT >= 0x0501)
という記述で囲まれて宣言しているので、
マクロ定義次第で同様のことは避けられそう。
>>208 何言ってるんだ。宣伝しに来たことあるよ。
宣伝っていうかバージョンアップ通知だろ。 このスレ住人で今まで Mosh 知らんかったやつがいるのか?
テンプレにも入ってるし。
Gauche並に使えるようになったら 通知してくれ
使えるかどうかはユーザー (つまりはおまいら) が判断することじゃないのけ?
Mosh ver0.2 (Windows) エラーメッセージがEmacsで拾えなかった。STDERRへの出力に問題があるのでは? R6RSだとloadが無いけどどうするの? 竹内関数、かなり速かった。 mosh>(time (tak 12 6 0)) ;;1.6406230926513672 real 1.625 user 0.0 sys 12 mosh> gosh> (time (tak 12 6 0)) ;(time (tak 12 6 0)) ; real 1.390 ; user 1.391 ; sys 0.000 12 gosh>
別に宣伝するのは構わないが、もう少しスレで質問に答えたりすれば そんなに悪く言う奴もいなくなると思うが。ひげぽん、どうよ?
ソース公開されているんだから 直してパッチ送れよ つかえないなあ
また途中で投げ出す可能性が高いからな 今の段階で宣伝されてもうざいだけ
>>215 0x00 が出力されてるな。
内部的には ucs4 を使ってるとかいう話があったので、
変換がうまくいってないのかも。
(error "a") だけでも再現する。 (display "a" (standard-error-port)) でもやっぱりおかしい。 stderr への出力全般がダメっぽいな。
>>215 > エラーメッセージがEmacsで拾えなかった。STDERRへの出力に問題があるのでは?
Windows では標準出力、エラー出力で WriteConsole 関数を使っているのですがそれがまずいのかもしれません。
Emacs は Meadow とかでしょうか?(試してみたいので)
> R6RSだとloadが無いけどどうするの?
REPL から動的にコードをロードしたいという意味でしょうか?
ライブラリ形式で保存しておいて (import library-name) はどうでしょう。
> 竹内関数、かなり速かった。
まだ Gauche より若干遅いですね。がんばります。
> 216
> 別に宣伝するのは構わないが、もう少しスレで質問に答えたりすれば
> そんなに悪く言う奴もいなくなると思うが。ひげぽん、どうよ?
可能な限りがんばります。
>>217 いえバグの内容を指摘してもらえるだけで十分ですよ。
>>219 すみません。
どれくらいの段階になったらよいでしょう?
言語処理系は完成の定義が難しいですよね。
>>220 >>221 ありがとうございます。
内部コードは UCS4 でそれを UTF16 にして WriteConsole に渡しています。
cmd.exe でも出力されていないとかだったらかなりまずいですね。
>>224 cmd.exe の上ではちゃんと表示される。
>>223 > Emacs は Meadow とかでしょうか?
俺は
>>215 じゃないけど、少なくとも GNU Emacs 23.1.1 では再現することを確認した。
具体的には GNU Emacs 23.1.1 (i386-mingw-nt5.1.2600) of 2009-07-30 on SOFT-MJASON
>>215 > R6RSだとloadが無いけどどうするの?
そんなこと言ったらそもそも repl だって R6RS には無いぞ。
Haskell みたいに repl では定義を禁止にしたら意味論の破綻はないかも。
そう考えると R6RS って動的な性質が制限されてて Lisp 系言語っぽくないよね。
とりあえず emacs から使う分にはファイル範囲を全選択して C-c C-r でいいんじゃね?
パッチ作って送れよ。 使えないなぁ…。
コンパイラが Scheme で書いてあったりするので、 Mosh のコンパイルには Mosh が必要だったり、 環境を構築するのが面倒なんだわ。 今までは Linux とかのまともに Mosh が動く環境で一部の処理をしてから もちこんだりとか、かなり構造を理解してないとわけわかんなかったけど、 今回は Windows でもそれなりに動くバイナリ提供してくれたんで、 これでコンパイル環境ととのえてみる。
configure で gauche の存在をチェックしてるなぁ。 まだ gosh 使ってんの?
ブートストラップだろ
ところで最近は IRC の #Lisp_Scheme チャンネルが過疎ってるようなんだけど、 ネタが無いのかね。
>>230 いや、そこで Mosh 自身を使うもんじゃね?
という意味で。
とりあえず動作報告。 おそまきながら mosh(0.2.0) インストール(Mac OS X 10.4.11)。 make test も多分問題ないと思う(8917 tests passed と出た)。
Windows だと Running 1898/1943 まで表示してエラー。 エラーっていうか Windows が 「問題が発生したため、mosh.exe を終了します。ご不便をおかけして申し訳ありません。」 のダイアログを表示するエラー。 test/ffi.scm の途中でも同様のエラー。 その他はOK。
>>232 ブートストラップ的に不可能なんじゃないの?
>>235 gauche は gauche 使ってるよ。
svn trunk も常に「最も最近のリリース版」を使ってビルドできるようになってる。
(たまにミスってるときもあるけど)
>>65 ,72
遅レスだが、 gauche の define-macro で書いてみた。
(use srfi-1)
(define-macro (curry p . a)
(define (e a)
(define s '(<1> <2> <3> <4> <5> <6> <7> <8> <9>))
(take s (+ 1 (apply max -1
(filter-map
(lambda(p)(list-index (cut eq? p <>) s)) a)))))
(receive (h t) (break (pa$ eq? '<...>) a)
(if (null? t)
`(lambda ,(e a) (,p ,@a))
(let ((r (gensym)))
`(lambda (,@(e a) . ,r)(apply ,p ,@h ,r))))))
最後以外に <...> があった場合のことは考えてない。
R6RS でも書いてみた。 (import (rnrs) (only (srfi :1) take list-index filter-map) (only (srfi :26) cut)) (define-syntax curry (lambda(x) (define (e a) (define s '(<1> <2> <3> <4> <5> <6> <7> <8> <9>)) (take s (+ 1 (apply max -1 (filter-map (lambda(p)(list-index (cut eq? p <>) s)) (syntax->datum a)))))) (syntax-case x () ((k t a ...) (with-syntax (((p ...) (datum->syntax #'k (e #'(a ...))))) #`(lambda (p ... . r) #,(syntax-case #'(a ...) (<...>) ((a ... <...>) #'(apply t a ... r)) (_ #'(t a ...)))))))))
細かいけど手持ちのscheme処理系のプロンプト。 guile> 1 gosh> 1 mosh>1 なんかポリシーがあるのかな。moshだけ空白が無い。
>>240 Ypsilon と Petite Chez Scheme も空白アリだったぜ!
VistaにMosh 0.2.0をインストールして、バージョンを調べたら以下のようになりました。 C:\Users\username>mosh -v Mosh R6RS scheme interpreter, version 0.0.8 こういうものなんですか?
>>236 gaucheはschemeの実行に必要な部分をschemeで作ってないからできるんじゃないか?
最初にIEが入ってないとFirefoxをダウンロードできないようなものですね。わかります
>>243 関係ない。
Gauche のコンパイラ部分は全面的に Scheme で記述されているし、
VM も Scheme で記述されるようになってる部分がある。
VM についてはインストラクションの合成を簡単に記述したいといった
性能向上を目的とした改善が最近のバージョンで有り、
切り替えの際には多少の混乱があったが、
今は VM が変わっても大丈夫なシカケが入っている。
もちろん、ずっと前の初期の Gauche だと話は別だが、
現在は Gauche 自身でブートストラップが完結するようになっている。
246 :
245 :2009/08/08(土) 16:02:27
>>246 > このプリコンパイルには既にインストールされている、その時点での最新リリースのGaucheを使うことになっている。
ブートストラップの疑問は解決しないように見えるんだが。
俺の理解不足?
リリース版は前処理を済ませてから配布される。
250 :
215 :2009/08/08(土) 17:05:24
>>223 Meadowです。
importを使ってみます。使い方がまだよくわからないもので。
Replでの実行中にCtrl+Cでの中断に反応してこないです。
WindowsのAPIではGenerateConsoleCtrlEventが使われているはずです。
http://msdn.microsoft.com/ja-jp/library/cc429265.aspx CTRL_C_EVENT には反応しないのですが、
CTRL_BREAK_EVENT(Ctrl+D)には反応して処理系が強制終了します。
REPLでのプログラムファイルの読み込み、実行、中断がやり易くなるとうれしいです。
R6RS なマクロのデバッグって何を使うのがいいんだろ ypsilon には macro-expand があるけど全部展開しちゃうし(macroexpand-1 みたいなのはないみたい mosh や ikarus にはそういう機能がないっぽい DrScheme の Macro Stepper が今のところ最有力なのかな
LOL売り切れトル
宣伝はやめてください おねがいします。
売り切れているのを宣伝するか?
宣伝はやめてください おねがいします。
「Scheme and the Art of Programming」 (George Springer and Daniel P. Friedman) ↑こんな易しめな入門書の邦訳があったらいいかも。
どなたか、Peter Seibel『実践Common Lisp』をテキストにして、 Windows上でLispを勉強するサイトを作ってください。 お願いします。
>>261 いいだしっぺの法則というのがあってだな…
勉強する気が本当にあるなら、テキストになるその本買ってきて自分でやれw
>>225 > cmd.exe の上ではちゃんと表示される。
確認ありがとうございます。
> 俺は
>>215 じゃないけど、少なくとも GNU Emacs 23.1.1 では再現することを確認した。
> 具体的には GNU Emacs 23.1.1 (i386-mingw-nt5.1.2600) of 2009-07-30 on SOFT-MJASON
ありがとうございます。詳細情報助かります。
>>226 >
http://msdn.microsoft.com/ja-jp/library/cc429845.aspx > WriteConsole 関数は、コンソールハンドル以外にリダイレクトされている標準ハンドルを渡すと失敗します。
emacs はリダイレクトしているんでしょうか。まだ関連を追い切れていません。
>>228 > これでコンパイル環境ととのえてみる。
お手数おかけします。
Visual C++ 2008 Express Edition で一発コンパイルできますので、もし良かったら
ご利用ください。
>>229 > configure で gauche の存在をチェックしてるなぁ。
> まだ gosh 使ってんの?
う。しまった。存在チェックは不要です。消しておきます。
Mosh 開発者以外は gosh は必要ありません。
>>231 > ところで最近は IRC の #Lisp_Scheme チャンネルが過疎ってるようなんだけど、
> ネタが無いのかね。
ネタを提供できてなくてすいません。どうしたらよいですかね。
気軽に発言してもらいたいのですが難しいですね。
>>232 > いや、そこで Mosh 自身を使うもんじゃね?
> という意味で。
すみません。さぼっています。多分 Mosh でもブートストラップできるんですが
vm.scm を Mosh に移植するのが面倒で。
>>233 > とりあえず動作報告。
> おそまきながら mosh(0.2.0) インストール(Mac OS X 10.4.11)。
> make test も多分問題ないと思う(8917 tests passed と出た)。
ありがとうございます。動作報告は実はとてもうれしいのです。
>>234 > Windows だと
> Running 1898/1943
> まで表示してエラー。
FFI のテストが Windows にきちんと対応していないのが原因ですね。
修正します。(FFI以外の動作には支障がないと思います)
>>240 >>241 > 細かいけど手持ちのscheme処理系のプロンプト。
> guile> 1
> gosh> 1
> mosh>1
> なんかポリシーがあるのかな。moshだけ空白が無い。
大変良い指摘。ポリシーないのであわせます。
>>242 > Mosh R6RS scheme interpreter, version 0.0.8
> こういうものなんですか?
ありがとうございます。ミスです。修正します。
>>247 > Mosh でも動いた。
やった!
>>250 > Meadowです。
ありがとうございます。
> Replでの実行中にCtrl+Cでの中断に反応してこないです。
> WindowsのAPIではGenerateConsoleCtrlEventが使われているはずです。
>
http://msdn.microsoft.com/ja-jp/library/cc429265.aspx > CTRL_C_EVENT には反応しないのですが、
> CTRL_BREAK_EVENT(Ctrl+D)には反応して処理系が強制終了します。
情報ありがとうございます。
Ctrl-D は eof なので対応できているのだと思います。
Ctrl-C も可能な限り対応したいと思います。
> REPLでのプログラムファイルの読み込み、実行、中断がやり易くなるとうれしいです。
具体的にイメージされているものはありますでしょうか?
もしくは他の処理系のこの機能をよく利用しているとか。
>>251 > R6RS なマクロのデバッグって何を使うのがいいんだろ
泥臭い方法ですが例えば以下の let1 の展開をデバッグしている場合であれば
(define-syntax let1
(lambda (x)
(syntax-case x ()
[(_ var val body body* ...)
#'(let ([var val]) body body* ...)])))
#' の部分を #'' とすれば展開後の S式が返るので
(display (let1 x 3 x x)) に対して
(let ((x 3)) x x) が表示されるようになります。
というのはどうでしょうか。
>>255 > SICP訳してみてるんだけど、需要ある?
おお。がんばっていますね。
新訳は結構需要があるのではないかと思います。
269 :
234 :2009/08/08(土) 22:32:18
Mingw でコンパイルしても同じ結果に。 Mingw は想定内なんだろうか?
>>255 需要あります。取っ付きやすくなれば、下手に出回ってる難しいという印象なくなるし。
>>255 需要あります。ちょっと読んだ限りだと和田訳よりは良いみたいだし。
旧訳の「プログラムの構造と実行」でいいじゃん
moshのmingw/cygwin担当のおくむらです
>>234 ,
>>269 これは完全に僕のミスで、FFI.cppのコミット忘れです。。
const char* FFI::lastError()
{
#ifdef _WIN32
return "win32 error";
#else
みたいに何か文字列を返せば落ちなくなります。
テストも通したいときは
gcc -o libffitest.so.1.0 -shared ffitest.c
あたりで一つ。
svnのtrunkはMinGWは4.4.0とCygwin1.7でチェックしてます。
個人的にはCygwinがお勧め。Windows固有のtrickが少ないので。
なら積極的に Mingw をチェックしよう。
そういうあまりにも環境依存な内容は別の場所でやりなされ
どうせ他に話題も無いくせに
自分の居場所を汚されたという気分だけでいちゃもんつける
>>275 のようなやつ
Arcがバージョンアップらしいぞ。俺は使う気もないけど。
他に話題あるじゃん 出て行けよ
Arcは専用スレあるからね。
>>281 釣りだよ。
そうやって盛り上げてんだよ。
読めないオープンソースはオープンソースの意味が無いから 人間が読むために作られた仕様書のほうがましだね でも凡人が読めるオープンソースも無いわけではないね
>>282 そんな方法でしか盛り上げられないなら、やっぱり老害だな
>>285 聞いてるだけだが、何か?答える気無いなら糞レスいらないぞ
老害を辞書で引いてみたら
聞いてるだけって 自分がキチガイだと教えてもらったら納得するのか?
黒田乙
Schemeでマクロはかけないとか言って反論されてた人か
冗談でも何でもなく、まさに馬鹿には理解できないレベルの議論だからな。 溢れる自尊心と足りない知性の組み合わせで無根拠に大きく出ちゃう学生さんには、 黒田氏の話は毒。
>溢れる自尊心と足りない知性の組み合わせで無根拠に大きく出ちゃう 黒田さんのことですねわかります
>>296 つまりそういう反応しか出来ないから
君のレベルでは毒なのw
再帰w
Common lisp中華思想ですから、 それに迎合出来無い全員に取って毒ですよ で、迎合できない者を指して「レベルの低い」と称するんですね
とまぁ、こういうレベルの人が騒ぐわけです。 わかってなきゃ言えないことを一つも言えないまま、いかに「わかった風な空気」をまとうか。 それがこの人らの書き込みのコンセプト。
はいはい、そうやってずっとcommon lispのアンチを増やしてればいいんですよ レベルの低い信者なんていても仕方がないから合理的ではありますね
限界集落みたいな狭い狭いlisp村内で釣りしてどうすんだという気もするが。 釣るなら村外へ向けてするべき。
common lispの良いところと悪いところ、Schemeの良いところと悪いところってのが宗教みたいに本当に相容れないからね 煽りの痛さはどっちもどっちなんだけどなぜか両方を受け入れてだからどうしたって言えるレベルの人は少ないよね
CommonLisp は何でもアリだからな。 「強い言語」と言えばそう言える。 でも、 CommonLisp に批判的な立場っていうのはその強さが ある意味で使い難いって言うのが主な主張だろう。 「CommonLisp は強いんだ!」 って言ったって、 そんなことはとっくに承知で、 その上で強さがダメだって言ってるんだよ。 そこんところをもうちょっと掘り下げないと平行線だよな… なんて思うわけですよ。
>>302 村外で釣ってる人ってrubyスレで暴れてるみたいな恥さらしばっかりな気がする
通りがかりの低レベラーが横レスしますよ Schemeって研究あるいは教育用の言語みたいなもんじゃないの?元々は。 Common Lispは実用のために「工学的強度を持った言語」としてうんたらかんたら・・・ 目指してる方向が違うんじゃないの。
だからどうした 同意してほしいのか
何この人^^
>>306 おたがいの批判はいわゆる「オヤクソク」であって、
初心者にそれぞれの言語の立場をわかりやすく説明するコントなんだよ。
大抵の人の場合仕事で使ってるのはCLでもSchemeでもないから、 論争もまた遊びみたいなもの。さらに言えば仕事で使ってるような言語での ネタすら遊びでしかないという人は多いだろう。 で、黒田さんはそういう中途半端な人達にLispを語って欲しくない という事も言っている。とりあえず本気の人も遊びの人も 互いに有益な範囲のみで関わっていれば問題はないだろうよ。
>>309 一般的にはそうかもしれない。でもこの場合は違うかな。
初心者とか無能に理解されることを期待してないから、ああいう書き方になる。
いやむしろ、馬鹿が読んだ時に、馬鹿な理屈で馬鹿な誤読をして、馬鹿丸出しの敵になることを
黒田氏は期待してるかもしれない。
馬鹿な味方ほど邪魔なものはないからね(PやRから始まるあの言語の信者を想像してみよう)。
黒田−shoro間では濃い議論になるものが、黒田−ねらー間だと全くそうならない。
熱くなればなるほど、根拠が薄くなり、結論の語気だけが上がる、悲惨極まりない人種が
噛み付いてるだけの、この無様な状況。
つまり、何を言ってるのか理解するところにも達していないわけ。
黒田vsShiroさんの議論のレベルに達してないのは自覚してる。 そこまで自惚れてるわけじゃない。 しかし、突き放して、理解させようという努力をしないなら、 ただの見下し厨と変わらないように思うけどなぁ。
>>311 shoro さんの意見を聞いてみたいですね
>>314 本質でないところでこういう揚げ足をとる馬鹿
>>312 最初から理解できるようなレベルの人以外は
味方になって欲しくないということでしょう
彼等の目標を踏まえればそれ程のフィルターが必要であることは
容易に想像できます。
やっぱlispスレはこうでないとな
言語知識ゼロでも構わない感じの空気になると 水を得た魚のように活発になる人が多いのは、 Lispスレでも他のほげ言語スレでも同じ。
自転車置き場がうんたらかんたらだっけか?
>>313 というその一文が、根拠が薄く、結論の語気だけが上がってる悲惨な人種の
典型的な産物ですね。
えらい加速してると思ったら・・
>>255 SICPの日本語訳、2章まで読めるとこあるよ
sicp tmuでぐぐれば今3番手に出る
原著読んでて翻訳つらいなって思った練習問題なんかは
この訳でもスキップされてたりするけど、
訳はわかりやすいので参考になれば
論争読んだけど、ようするに R5RSの仕様だと解釈の仕方によってはマクロ作るときに問題があるが、 別の解釈の仕方では問題ないし、問題ないように実装することもできる しかも、R6RSでは問題ない ってことだろ 結局Schemeに対する言いがかりに感じた
>>325 んで、さらに Schemer の内部では、 R6RS には思想がないとか
syntax-case ごちゃごちゃし過ぎ、 Explicit Renaming とか Syntactic Closures 忘れるな
っていう内ゲバが起こるんですね、わかります
と煽ってみる
328 :
158 :2009/08/10(月) 09:24:57
Connniverってなんて読むの?
こんにぼぁー
SHRDLUをGCLで動かそうとしたところたくさんあるファイルのうちの DICTIOというファイルでエラー。単語や意味を教えるファイルらしい。 エラーになるのは (DEFS \#DIRECTION FEXPR (LAMBDA (A B) NIL) NOGOAL T) という関数。 これをコメントアウトすれば一応動作開始する。でも何を聞いても 「Sorry I don't know.」ばかり。 辞書が不完全だからかな。
common lispとschemを並行して勉強するのってこんがらがってやめたほうがいい?
やめとけやめとけ
>>333 ありがとうございます。じゃあschmeから先に勉強します(^_^)
schemもschmeもやめて common lispにしておけ
黒板に書いて遊ぶならSchemeやschmeやschem、ソフトウェアを作るならCommon Lisp。
CommonLispで最近出てきた何か面白い処理系ある?
ないからクソだね!schemeがいいよ!
schemeとschmeとschemではどれがいいんだ?
夏休みだなあ
みなさん処理系は何をお使いですか? わたしはGaucheを使っています。 Little Schemerで勉強中
GaucheとかPLTとか。 IA-32のSolarisに対応してたらLarceny使うのに。 あとは、IkarusとYpsilonとMosh検討中。 R6RS対応したライブラリが少ないのがネック。 識別子の最初に@使えないからSXMLとかでも問題あるし。
Schemeでネイティブコードまでコンパイルするのってstalinだけ?
BiglooとかCHICKENとかいろいろ
>>343 中間言語としてのC経由なら、Stalin、Bigloo、Chicken、Gambitとか。
直接ネイティブコード吐くのはLarceny、Ikarusとか。
JITでネイティブコードにコンパイルするのはPLT。Ypsilonも開発中。
バイトコードにコンパイルして実行するのはGauche、Mosh、Guileとか。
>>345 ありがと
SBCLの様な感じのはIkarusだけみたいだね、試したらめちゃ高速
だけどなぜにバージョンがこんなに小さいんだろう?
stalin はマクロがなぁ…。 だいたい Scheme でむやみに速度を目指したって仕方がないじゃないかって気がする。 速いにこしたことはないし、そういう選択でやってみたってのは価値があるけど、 Scheme で数値計算をバリバリやるって場面はそんなにない。
お前に言われる筋合いもないw
Schemeの「速さ」に釣られるのは、C/C++がキライな奴だけだ
ちょっとした思いつきなんだが、 (let ((x 1)) (outer-scope (let ((x 2)) (inner-scope x)))) このときに 1 を返す、つまり inner-scope の内側では outer-scope の外側の束縛を参照 するようなマクロ outer-scope inner-scope を定義してみた。 (define-syntax outer-scope (lambda(x) (syntax-case x () ((k body ...) (with-syntax ((inner-scope (datum->syntax #'k 'inner-scope)) (k (syntax k))) #'(let-syntax ((inner-scope (lambda(x) (syntax-case x () ((j b (... ...)) #`(begin #,@(datum->syntax #'k (syntax->datum #'(b (... ...)))))))))) body ...)))))) 未だに datum->syntax の第一引数の意味がよくわからん。 規格には > (datum->syntax template-id datum) > template-id はテンプレート識別子であり、datum はデータ値でなければならない。 > この手続きは template-id と同一の文脈情報をもつ datum の構文オブジェクト表現を返す。 > このとき、この構文オブジェクトは template-id が挿入されたのと同時にコードに挿入されたかのようにあつかわれる。 って書いたるんだが、文脈情報って何だ? 自分の中ではスコープだと思って使ってて、だいたい期待する挙動になるみたいなんだが、その理解でいいの? もうちょっとわかりやすい説明があれば助かる。 拙者は日本人なので英語の文献とか紹介しようとしないで頂ければ助かるでゴザルよ。
難しい話題は WiLiKi の方でやれよ
これから一週間、
>>351 にはdatum->syntaxと一緒に過ごしてもらう!
datum->syntax「えー」
>>351 ビューティフルコードの25章はどうだろう
maximaで数式計算してtrsanslateでlispとして吐き出して lispのコードを少し書き換えてstalinで高速実行
>>332 SchemeとCommonLispは並行して勉強すると混乱するから
どっちか一方を先にやった方がいいと思うよ。
高階関数の扱いがすっきりしているSchemeの方が理論的
なので萩谷先生の「関数プログラミング」の問題をSchemeで解く
ってのはどう。
> SchemeとCommonLispは並行して勉強すると混乱するから なんで??? 俺は、全然平気だったけど
並行して勉強するメリットは?
>>358 特にないけど、不自由もしなかった
強いて上げるなら、CL はネィティブに落す処理系が多いので
処理系をどう作るかって意味ではとても勉強になった
並行するのもそうでないのも一長一短ある。 混乱すると言うが、最初から両方の違いを認識しながらの方が混乱しにくいという見方もある。 それにひとつしか知らないというのは大抵の場合はそのひとつさえ知ってない。 概念が生じるのは「そうでないもの」と区別するからであって、 自然に身につけたものは意外に理解できてなかったりする。 結局のところ、本人の資質にもよるから、意見を聞いたところでムダだよ。 やりたいようにやればいい。
黒板に書いて遊ぶならCommon LISP。ソフトウェアを作るならマクロアセンブラ。
webアプリ書くなら継続のあるSchemeの方がcommon lispより便利だったりするんでしょうか
「Scheme の第一級継続」と「継続渡しスタイル」で言う継続は同じものじゃないよ。 まぁ、違うものとも言えないんだけど、直接的に便利ということはない。
>>346 リリースエンジニアリングが終わってるから。
> 2008-12-26: Release 0.0.4 almost final
↑はLaunchpadにあるアナウンスメントだ。
しかし現状での最新の安定版は0.0.3。後は分かるな?
というのは半分冗談だけど、まだ新しい処理系だから、
先端追っかけた方が楽しいというのはある。
365 :
351 :2009/08/12(水) 00:46:31
色々と考えたけど、 α変換のルールに干渉するってことかなぁ… と思った。
PLT Scheme の Scribble って使ってる人いる? よさげに見えるんだけどドキュメントがしっかりしすぎてて読むのがめどい
今朝ネットサーフィンしていてふと思ったんだけど、 Lisp系言語のキラーアプリって何だと思う? Ruby だったら Railsだけど、Lispについて考えてみたら 思い浮かばなかったから意見を聞きたいです。
Emacs lisp is not Lisp.
>>366 複雑な名前空間を持ってるわけじゃないし、
そんなの出来てもしかたないだろう。
>>368 Lisp系は無理に大衆化しなくてもいいんじゃない。
悟りを得ようとする人のための孤高の言語。
...というのは半分冗談だけど。
Lispがお金になる状況を作らんと黒田さんに言われちゃうよね。
「Javaで稼いで趣味でSchemeやってるのってどうよ」って。
maxima超便利
>>374 その昔、Winで稼いでMacにつぎ込むと雑誌に書いて炎上した人がいたのを思い出したぜ
Lispが取っつきにくいのってLispコミュニティーが俺様モード発動しちゃうのと、商用処理系がどうしてもランタイムライセンス必要なところにあるんじゃないの?
組み込み系のLispで成功したのは全部独自実装ばっかりだってのもその影響じゃないのかな?
そうだよ だからみんな俺LISPを作り、それぞれの目指す頂に登ろうとしている
バベルの塔崩壊後みたいな状況だな
>>373 ダミーでもいいから引数取れよ!ポータビリティが下がるじゃないか!
てことでは?
ファーストクラスの環境を持たない処理系でもシンボルを受け付ける物もありますしね
>>368 LISPって40年前からあるんだぜ ?
なんでもええけど、Lisp で飯食える環境を作りたいとは思いませんか?
そういう話を人に振る奴は他人にやらせてそれにのっかることしか考えてない
キラーアプリは、やっぱり
>>372 の云う通り、『Paul Graham』じゃないか
>>382 なことはないんだよな
個人の範囲で取れる仕事は極力 lisp 系で取ってくるようにしてるし,
実際に, 仕事の 1/3 位は lisp で納品してる.
でも, メンテがどうとかって話になると受注競争にマジで弱い.
一瞬、メンテが メガンテに見えた
自分が爆発してまわりにもダメージあたえまくり。 まさにメガンテ
メンテが・・・ ↓ 後進を育てればいい ↓ 会社にしてしまえばいい って事?384が言いたいのは。
> 会社にしてしまえばいい まぁ, それもあるんだが, 現実問題, 1社だけだと致命的に弱いのよ 特定の会社だけに頼りきる状態になると, そこつぶれた場合どうする? とか考えるだろ, 普通は. そうゆう意味では, いろんなところが lisp 系で受注取ってくれると 嬉しいかなと………
協会とか連合とかそんな感じにならないと駄目なのかな。
Lispといったらこれ!っていう処理系ってなんだろうか?
>>389 どんな形を取るかは別として,
「lisp 系でやってるのは, 他にも結構あるんで安心できますよ」
ってな事が言いやすい環境がほしいのはたしか
>>388 1社だろうが10社だろうが関係ない
「下請け」だから致命的に弱い
なるほど、 「まずは自分で仕事作れるようになれ話はそれからだ」 …と
Mosh 0.2.0 リリース時にみなさんにご指摘いただいた点を修正しました。
http://www.monaos.org/tmp/mosh-0.2.1-setup-win32.exe 修正した点は
・Windows 上 Emacs において run-scheme でエラーがとれない件(Meadow3 で確認)
・Windows 2000 で freeaddrinfo エラー(対応したつもりですが検証環境がなく直っているか確認できず)
・REPL のスペースを他の処理系にあわせる
・Windows でも Ctrl-c で REPL 終了
・Windows で mosh -V の結果がおかしい
・Windows で mosh -t のテストが FFI 関係でエラーになる
・configure で Gauche チェックやめる
・shebang に '-' が含まれるとエラーになる
・Windows では loadpath の区切り文字を : ではなく ; にする
もし特に問題が見つからなければ 0.2.1 としてリリースしようと思っています。
フィードバックをいただけると大変助かります。
>>368 キラーアプリといって思いつくのは、ポールグレアムが書いた Yahoo!Store 。
でもだいぶ前だし、他の言語で書き直されてしまったので最近ではないですが。
キラーアプリや、キラーアプリが出てくるような環境を作りたいとは思いますね。
そう、とにかく必要なのはアプリなんだよ。 Lispが良い絵の具だと言うのなら、それで素晴しい絵を描かなきゃ。 がんばろうぜ。
>>394 乙。
gaucheでRails作ってる人いたよね。>キラーアプリ
>>396 コンセプトをそのままよそから持ち込むのは Lisp でやることじゃないさ。
あんなのは余興だよ。 キラーと言えるものじゃない。
>>394 windows2000で問題なく起動したよ
いろいろアプリ作るのは良いんだけど、それを発表したり使ってもらおうとする時って みんなどうしてるの? 一行のコードからそれこそキラーアプリまでカバーするような、ローチンのハブサイトって無いのかな? 無いならマジで作ろうかな。
発表(笑)
発狂()
ポールグレアムも画家だから、良い絵の具を見極める目は持っているのだろう。 その答えのひとつがCommon Lispだ。Shcemeではない。
でもarcの最初の実装は・・
マクロが書きにくい、あとは名前空間さえ解決できれば、 ライブラリも仕様を規格化されているなら、 黒田氏の批判はあたらないんじゃない? 後は、好みで、PL/Iが好きならCommon Lisp、Argolが好きならSchemeかな。
>>394 STDERRの出力の件、うまく表示されていました。
Meadow、xyzzy、Chezedit-Ntで試しました。
Ctrl+cの件:
>具体的にイメージされているものはありますでしょうか?
petite chez Scheme の動作をイメージしていました。
REPLで計算実行中にCtrl+cで中断し、プロンプトが break> となります。
例えば、(tak 18 9 0) とすると計算が当分、終わりそうもないので
Ctrl+Cで無理やり終わらせるような場合です。
Meadowだと処理系が強制終了しました。
xyzzy,ChezEdit-NTでは Ctrl+C は効いていないようです。
>>404 君の批判も当たっているとは思えないけど
arcっていいものなの?
>>404 Fortranが好きならCommon Lisp、Pascalが好きならScheme
どっちも嫌いな人は?
プログラマを辞めたほうがいい
Haskellやろうぜ
OCamlやろうぜ
> そう、とにかく必要なのはアプリなんだよ。 アホがいるw アプリ支える為にはそれなりのマスが必要
Erlang やろうぜ
いやいや、Scalaやろうぜ
Oz…はやらなくてもいいな
>>396 どもども。
>>398 ご確認ありがとうございます。Windows 2000 はまだまだ残っていると思うのでサポートできて良かったです。
>>399 確かに発表の場はないですね。どうするのが良いかな。
小さなものでも発表できるという意味では、
http://gist.github.com/gists にコードを貼って
このスレで書いたよー。ってつぶやくだけでもいいかも。
>>405 多くの環境で確認いただき恐縮です。
Ctrl-C の件ですが、なるほど納得しました。
その機能をつけることは多分簡単にできるんですが、強く必要だと感じるまでではないので一旦保留とさせてください。
>>415 最近 Erlang 触っていますが良いところもたくさんあると感じます。
影響を受けて Scheme でも match-lambda* を使うようになったり (mosh concurrent) を書いたりしました。
>>414 そのマスを生むためにアプリがいるんですね、わかります
mosh って repl はユーザーカスタマイズできるようになってるのかな? よく見てないけど、 gosh みたいなのなら、 Ctrl+C があれば 例外なりシグナルなりを投げて repl で捕捉すればいいので、 そのへんは勝手にやってもらえばいいと思う。 Windows で使うことを考えたらシグナルはよくないかな。
モッシュムラムラ
R6RSって全く調べてないんだけど(というか調べても多分わからない) 5とどのくらい違うのですか?
基本はマクロとライブラリだよな。 あとはそれを成立させるのに必要なことを細かく決めましたって感じ。 大文字小文字の区別だとか Unicode がどうだとかいった実用的な意味での規定もあるけど、 全体にしたらささいなことだと思う。
CommonLispの空リストってのは不思議だ。 お盆なもんで般若心経を読んでるんだが 「色即是空」とか「空」が度々現れる。 存在はするのだが空なのだってのは悟りに至らんとわからん。 CommonLispの空リストもアトムだし、リストだし、 否定でもあるし、仏教思想か? >(atom '()) T >(listp '()) T >(eq '() nil) T >(null '()) T >(null nil) T
伝統的なLispでは「空リスト」==「NIL」と決まっているから。 写経だとおもってCONSペアの図とリスト探索を100種類くらい書いてみるといい。 その上で、どうしても空のリストとNILを区別しないと許せないとかなら Schemeのほうが向いてるかもしれない。
> お盆なもんで般若心経を読んでるんだが そういうことが好きな人ならお盆に限らず読むべし
maximaのlistとlispのlistを変換する関数がみつからない trasnなんとかというファイルをひととおりみてみたけど らしいものがない
maxima ! 一緒に日本に帰ろう !
maximaや あぁmaximaや maximaや
南無maxima
歎異抄より 唯円 「念仏唱えてもあんまうれしくない」 親鸞 「じつはおれも」
お寺様向けの専用システムにLispは向いてないか? 漢字データベースを基礎とした戒名の生成補助、重複チェック。 檀家の家系図作成、保存。 法事スケジュール調整エキスパートシステム。
木魚の音「CONS CONS CONS ……」
いんきんの音「(CAR N)」
>>434 笑いすぎて鼻にコーラがはいっちゃったじゃないか!
こういうcdrらない流れ大好きw
急に「みそサウナ」ってことばが頭に浮かんだのですが、 そういったことはどのスレに書けばよいでしょうか。 スレ違いは承知ですが、妥当なのがどこかわからなかったので… 誘導して頂ければ助かります。
このスレは君のママじゃないんだから どこのスレがいいかという質問にふさわしい板でたずねなさいよ。
マジレスすると調味料板の味噌スレ
そこはnilわにしないとw
すてきなconsを今夜もたのしむか。
444 :
デフォルトの名無しさん :2009/08/18(火) 08:31:55
>Lispは非常にシンプルであり、ほんの数分で学ぶことができる。 >私はさっきバスを待っている間に学んだ。 嘘だッ!!
>>444 >>445 それ、ネタページだから。
> Paul Graham自身すべてLispで書かれている。
なんだかラファティみたいな匂いのする文章だ
「色即是空」 (eq 'atom '())
(是 (即 色) 空)
>>444 マジレスすると、「ここの方々」の5割位はEmacsLispで書かれてるよ
確かに一番触ってるLispといわれればemacs lispかもしれない…
452 :
399 :2009/08/18(火) 22:41:50
かなり遅レスだけど、 コードとかサイトの発表(笑)の場みたいの作ってみたんだけど、需要ある?
454 :
399 :2009/08/18(火) 22:46:12
了解、少し待ってて。サーバ設定してくる。
codepad.orgはログインしないと24時間で消える糞だから 実行機能はないけどpastebin.comみたいな長く残るところを使ったほうがいい
457 :
399 :2009/08/18(火) 23:11:11
なるほどー、結構にたようなのあるなぁ。 (kahua make中)
458 :
399 :2009/08/18(火) 23:40:34
>>453 すんません。ちょっとトラブル。完全に動いてから報告して晒しますね。
459 :
399 :2009/08/19(水) 03:25:05
461 :
453 :2009/08/19(水) 11:12:04
>>459 乙。もしかしてこのために徹夜した?
コメントの文字が背景色と同じ黒で読めないので、改善していただけたら嬉しい鴨。
462 :
399 :2009/08/19(水) 12:46:16
>>461 サンクス。
>コメントの文字が背景色と同じ黒
ありゃ。おかしいな。できればOSとかブラウザの環境教えていただけませんか?。
本当は背景は全部白しか使ってないはずなので、cssミスったかも。
463 :
399 :2009/08/19(水) 14:22:10
>>461 Win(IE)で黒くなるの確認しました。直します。
>>399 まずは公開お疲れ様です。
投稿してみました。
投稿が増えてきたら新着を気軽にチェックできるように RSS を
出力してもらえるとうれしいです。
あとは貼られたコードをファイルでダウンロードとかもあると良いかも。
466 :
399 :2009/08/19(水) 21:18:57
>>464 ,465
早速ありがとうございます!。
RSSとファイルでダウンロード実装してみます。
>>399 ありがとうございます。
無理せず、自分のペースで実装してください〜。
>>463 背景色は白くなりましたが、「投稿テスト(階乗)」を選ぶと、ヘッダ部分と投稿記事本文が白紙に
見える。セパレータとコメントは正常に表示されている。
セパレータで挟まれた白紙の領域をマウスでドラッグするとヘッダ部分と投稿記事が出てくるから、
IE6との相性が良くないのでしょうね。
469 :
399 :2009/08/20(木) 20:15:55
>>468 ありがとうございます。本当に助かります。
>> ヘッダ部分と投稿記事本文が白紙に ... マウスでドラッグするとヘッダ部分と投稿記事が出てくる ...
実はそうなんですよ。すみません。こちらでもまったく同じ状況を再現しているのですが、何分知識不足なもんで、
手を焼いてる状況なんです。こちらのCSSとHTMLのコーディングの不備なのは確かなのでもうちょい試行錯誤してみます。
WinでypsilonでSDL使いたいんだけど、開発版はVC++ExpressEditionでコンパイルできない vdprojがサポートされてないと出るんだけど、なんか回避方法はないかな
XML梅込みでLISPみたいなのできる? phpみたいに、リスト主導じゃなくてテキスト主導みたいな 書き方ができるといいんじゃないかな
いやそれは素直にPHPやれよ Lispは最強言語だが万能言語じゃねえよ
>>473 いあ、テキスト処理とか特定分野での話ね
rubyに何だったか擬似言語があるように
俺Lispという万能言語があるじゃないか
6はVistaみたいなもん 7に期待しましょう
ワロタ
>>480 この本を手に取ったあなたは、すでにトップ1%のプログラマだと感じるだろう。
>>480 読んだが、難しかったよ
CommonLispをある程度知ってないと読めない
ただ、SchemeとCommonLispの違いがよくわかってよかった
Common Lisp派の立場から書かれてる本だけどね
あと、480の本で定義されてるdefmacro!は結構使えそうだと思った それ以外にも使えそうなマクロがあって、結構実用的な本かもしれない あとは、OnLisp前提なところがあるから、OnLispを先に読むか、 平行して読むといいかも
>>480 PG の ANSI Common Lisp と On Lisp を読んだくらいで挑戦してみた Schemer だけど、
最適化まわりでの CL の強力さがよくわかったよ。
マクロ関連は R6RS マクロでも実現できるし、 Schemer でも一読の価値はあると思う。
最終章は Forth もわかってた方が面白いのかなあ、俺はそこで一旦止まってる。
俺には無理だった。 唯一!を「バン」って読むということがわかった。
付録Bの避けるべき言語って何なの?
488 :
デフォルトの名無しさん :2009/08/23(日) 10:13:18
>>480 最初の4章を online でサラッと目を通してみたが、面白い。
エッセイ感覚で読むのが正しいね。
On Lisp の addendum として読むと知識が深まると思った。
online で pdf が公開されたら全部読もうとおもう。
>>489 PHPのことなん?
Lispの対極ってPascalあたりかと思ってたけど。
C# (Blub Central) と Python (Niche Blub) と思ったけど違うの?
「例えば、PHPを避ける」ってIPAのネタ文書なのかw
「本物のプログラマーはパスカルを使わない」みたいなもんかw
>>493 ネタ文書というほどでもない
あれを必要としている人向けにはそこそこ妥当
あれは、プロジェクトチーム内の開発言語をPHP以外に切り替えろという話ではない
そういう言語を使ってるような会社に発注すんのやめとけと言う話
常にPHPで思考している駄目会社というのは相当量存在するからな
あれは実のところ「わざわざPHPで請けるような会社はセキュリティが甘い傾向にある」という話なのだ
>>495 IPAより直球で酷い事を書いているなwww
>>494 「本物のプログラマはFORTRANを使う」と言うのもあるな。
*.php なサイトにはどうしてもアタックをし掛けたくなるのは俺だけかな。 とりあえずスクリプトで脆弱性テスト、みたいな。
> 「本物のプログラマ」 この表現を使う人間は大抵、実力の無い "プログラマwanna-be" だと思うんだが。 もしそうでなければ、実力に伴わない自尊心を持つ輩。
Real Programmer Don't Use Pascal とか、 The Story of Mel: A Real Programmer みたいなネタをきちんと知っていて、 理解してる奴ってのは普通実力のある奴なんだがな。 残念ながら、500が何も知らない奴だとしか思えないな。
真の実力ってなにさ
「本物のプログラマーはPASCALを使わない 」ってタイトルのエッセイがあって、 そのタイトルだけが独り歩きしているんだよね。
>>502 バグを出しても仕様だと言ってうまくエンドユーザを丸め込むスキル。
そもそもプログラマに real も fake もないから。 自分が "Real Programmer" だと思っていて、それを他人に 強要したいが為に勝手にそうカテゴライズしたがっているだけ。 Real Programmers don't ... とか言っても、実際はそれがプラクティカルな場合だってある。 開発時間、ベネフィット、プラクティカリティーによって言語の 書き方だって変わってくる。goto を使用した方が良い場面だってある。 いちいち自分の理想を強要して、勝手に real だか fake だか 言ってる馬鹿は放っておくのが一番。
むしろ何%かバグを混入させてメンテを継続する 完全なものは納品しないスキルと言い換えよう
>>505 原文嫁
タイトルの印象だけで語る典型だな
まさに今ここでもタイトルが独り歩きしてるな。
だな
Lispって使えるん?趣味の言語なの?
>>510 学べばどこかの会社が社員として雇ってくれることをして「使える」と表現するのであれば、使えない言語
Why Pascal is not my favorite programming language も読んでおくといいぞ
>>510 とりあえず設計や分析の腕は上がる。
それで評価が上がるともかぎらないけど。
>>513 > とりあえず設計や分析の腕は上がる。
設計というか「コーディングの」だろ?
設計はピュアなOO言語に成れてないといかん。
誰かから給料もらいたいんなら素直にJava勉強しろ
またここに馬鹿がいた @
>>515 。俺の中で
JAVA厨 = 馬鹿
という方程式が成り立っているが、それは未だに健在だ。
Lispの仕事よりもJavaの仕事の方が圧倒的に多いんだから
>>515 はJava厨でもなんでもなく正論だよ。
マジレスするとLispとC言語が完璧に理解できていればどの言語も大丈夫 のはず。。
>>518 PHPやC++の方が仕事が多いわけだが。
Javaなんて死にかけ言語引き合いに出すなよ。
またPHPとかw
>>521 Web寄りの話な。
ハードに近ければ近いほどCやC++の仕事が多くなる。
Javaなんて糞は居場所がないんだよね。
その居場所の無いクソ言語よりもLispの仕事は少ないだろ。
>>514 オブジェクト指向的なアプローチの設計もあれば、
関数プログラミング的なアプローチの設計もある。
どちらがよりフィットするかは、問題領域に依る。
この辺は先人が色々言ってるから詳しくは言及しないけど。
アンチJava厨の自演だろこれw 鬱陶しいから去れよw 515 名前:デフォルトの名無しさん[sage] 投稿日:2009/08/23(日) 13:38:02 516 名前:デフォルトの名無しさん[sage] 投稿日:2009/08/23(日) 13:39:04 517 名前:デフォルトの名無しさん[sage] 投稿日:2009/08/23(日) 13:41:12
>>514 関数型は設計などほとんどいらない
小規模なプロジェクト向きだし、そもそも
関数型言語でそれ以上の規模のプロジェクトの
コーディングをすることが少ないと思うんだけど。
中規模-大規模なプロジェクトならOO言語使うでしょ、普通。
デジタル大手ゼネコンの下請けの下請けデジドカにはJavaは向いていますな。 中小デジタル土建屋にはJavaはコストがかかり過ぎてむりですわ。
さすがlispスレ。lispのプログラミングと関係ない話題になると異様に盛り上がるぜ。
Scheme でデバッグするときってどうするのが簡単だろう? Gauche だと #?= で debug-print を埋め込むのが簡単だけど、 他の処理系で #?= 相当のを埋め込んだり外したりするのは結構面倒臭い。 何か別の方法を考えた方がいいのかなあ。
すいません、ちょっと流れに遅れてしまったんですが、
>>480 の本って
翻訳的にはどうでしょうか?
>>529 #?=は確かに便利だけど、gauche のエラーメッセージはもうちょっと
情報が欲しい。正直今のままだと辛いよ。
MIT Schemeでいいじゃない。
>>526 それも一概に言えないんじゃないかなぁ。
Lisp が使われた有名な案件っていうとむしろ大規模だし。
ただ、少数精鋭でやることを前提としないと Lisp は向かない。
人海戦術でやるようなプロジェクトだとやっぱ Java だろうな。
CommonLisp には CLOS があってかなり活用されてるってことも考慮しなきゃな。 だいたい CommonLisp は関数型言語と呼ぶにはあんまり関数型って感じでもないし。 Scheme を先にやっちゃうと CommonLisp って滅茶苦茶フリーダムだと思う。 大人数が強調するには制約があって統制がとれる言語じゃないとね。
>>536 > CommonLisp は関数型言語と呼ぶにはあんまり関数型って感じでもないし。
CLのどの辺が「関数型」じゃないかを言ってみな。
お前の「関数型」の認識が外れていることを証明してやるから。
>>537 一々頭に血を昇らせるなよ。
>>536 はCLがマルチパラダイム言語であると言いたかっただけだろ。
540 :
536 :2009/08/23(日) 21:39:56
ある程度は関数型的なスタイルが推奨されてもいるみたいだけど、 一般に関数型言語と呼ばれる言語のスタイルと比較すると 破壊的更新を選択肢に含める度合は高い。 CommonLisp の持ち味は関数型ってことよりもマクロだと思うんだよね。 マクロが有用なのは DSL というか勝手なパラダイムを表現できることにあるのは同意してもらえると思う。 つまりマクロは「関数型」というパラダイムを積極的に破る機能とも言える。 言うなれば CommonLisp では関数型的スタイルがデフォルトではあっても、 いくらでも自由な表現が許されていて、しかも機能として一応可能であるというだけでなく 様々なパラダイムを許容する文化的土壌もある。 「思う」ばっかりなので実際にはそうでないところもあるかもしれないけどさ。 CL は非常にフリーダムなのに「関数型」という縛りにこだわってるのはナンセンスじゃないかな。
単なる道具だろ、言語なんて。 コンピュータなんて単なる箱だろ、どんなに突き詰めても有限な電気信号でしかないよ。 完璧な観念求めるなら数学やろうよ。
>>540 第一段落はSchemeにも当てはまっちゃうからその意見はどうなんだろうと思わざるを得ない。
学術にこだわったのがScheme,実学が良いのだと言うのがCLだって言う言い方の方がまだ納得できる様な気がする。
俺としちゃなんでどっちもいがみ合うんだろうと不思議でしょうがないんだけどね
(emacs vs viみたいであほらしい)
例えるならキリスト教とイスラム教でしょう。 どちらも元は同じ。
なんだかなー。
>>540 を読んで、「本当にこの人マクロを理解できてるのかな?」と疑問に思った。
マクロは実行前にエクスパンドされるコードのエイリアス的な存在。
事実、clコードのコンパイル後にはマクロなどすっかり消えて無くなっている。
関数型のスタイルも破られない。
LOLにも書いてあったよな確か。CLは関数型言語ではない。って。
>>544 何か誤読してない?
>>540 が言ってるのは、一番上のレイヤーの話だと思うんだけど。
副作用のある処理を関数的にラップしたりするのと同じで、あくまでも表現の話。
実際のところ、Lisp/Schemeプログラマはどの程度副作用の無いプログラミングを 心がけているの?
>>547 可能な限り避けて、使うところはできるだけまとめる。
変なバグに悩まされるの嫌だし。
そもそも、ある言語が「関数型」であるかどうかの判定は、 その言葉の定義によって変わるものなんだから、あまり議論する意味がないんだよね。 例えば、グローバル変数がある言語は関数型ではない、と言ってしまえば、ほとんど どの言語も関数型ではなくなってしまう。 言語の基本的なプログラミングスタイルで 考慮するならば、cl も scheme も関数型と言えるだろうし。
551 :
547 :2009/08/23(日) 22:27:05
>>537 血の巡りは悪いのに、血がたぎるのだけは早いんだねw
>>552 ad hominem で行くことしかできないのかもしれないけど、駄レスは付けないでね
>>552 血の巡りが悪いから一箇所に滞るわけで。それが頭だけどね。
人身攻撃(ラテン語: ad hominem)とは
俺はad hominem より ad aerarium の方が好きだなぁ
>>555 もう、子供なんだから。一人じゃ何もできないのね。
ttp://en.wikipedia.org/wiki/Ad_hominem An ad hominem argument, also known as argumentum ad hominem (Latin: "argument to
the man" or "argument against the man") consists of replying to an argument or
factual claim by attacking or appealing to a characteristic or belief of the
person making the argument or claim, rather than by addressing the substance of
the argument or producing evidence against the claim.
>>557 ミイラ取りがミイラになってるぞ
本当にこのスレの住人は罵り合いが好きだな
言葉遊びを言葉遊びと認知できない人は (ry
set!/setf < 私たちのための争うのはやめて!
言葉遊びしたいならVIP行けや
>>560 いやお前たちがいないと銀行すら作れないしさ
563 :
デフォルトの名無しさん :2009/08/23(日) 23:10:36
でマクロと関数型の相性はどうなのよ?
俺もそこに興味がある。誰か教えて
565 :
536 :2009/08/23(日) 23:28:12
>>542 一応ことわっておくけど、
>>535 も俺で、
>>536 はその続きのつもり。
Scheme と CommonLisp の対比をしたいわけじゃなくて、
>>526 に対する反論。
OO ってことを言うのなら CLOS があるし、
Lisp を使わない理由にはならないという主張。
Scheme と CommonLisp で比較すれば関数型的スタイルは程度問題だとは思うよ。
ただその「程度」の差が 一般的な案件に使えるかどうかは影響する。
>>563 悪くないというか、むしろ良いと思う
どちらも原則として副作用を嫌うし、結果として単純な合成が効く
ってか小難しいこと考えなくても、
Lispの、おそらく成功と言っていい歴史が
相性の良さを保証していると思う
567 :
デフォルトの名無しさん :2009/08/23(日) 23:40:03
「practical common lisp」 のほうが「on lisp」より難しくない?
マクロと関数型の相性って言われても。直交する概念だと思うけど。 S式とマクロの相性とか、Lisp-1とマクロの相性とかならまだしも。
>>568 完全に直交する概念なら相性は良いと言えるんじゃないか?
>>567 OnLispは読み物としても良くできてるからじゃないの?
全然関係無いけど久しぶりに「対話によるCommonlisp」を読んだらギャグの寒さに泣いた(内容じゃなくてだじゃれ成分に)
>>567 お前、どっちも読んだことないだろ?
practical common lisp は初心者向けの本だぞ。
最近Lispに興味を持ち勉強中を始めました。 古本屋で「これがLispだ」という本を見つけ、通読したのですが、この先読むとしたら 何が良いでしょうか?今の所はOn Lispを読もうと考えています。 関数型プログラミングはMLで慣れているので、Lisp特有のテクニック等を学びたいと 思っています。良い本があれば教えてください。
>>572 > 関数型プログラミングはMLで慣れているので、Lisp特有のテクニック等を学びたいと
じゃマクロだわ。 On Lisp にしとけ。
>>572 今手に入る物ならどれ読んでも大丈夫だから全部読んじゃえばいいと思う(もちろん予算が厳しいならしょうがない)
でもLispの本ってあんまり数無いのよ
個人的に実践とOnLispは読むこと自体に喜びがあるよ
あとANSI CommonLispも良いと思う
>>573 >>574 ありがとうございます。まずOn Lispを読んでマクロの使い方を学びたいと思います。
今まで括弧の多さから敬遠していましたが、かなり面白い言語ですね。
>>570 ギャグの寒さは初めての人のためのLISPのが上だろう。
>>575 マクロを使い熟せるようになると面白みが倍以上になる。
俺みたいに子供の頃積み木遊びやLEGOにはまったような人ならなおさらね。
金ないなら図書館で読めよ
こんな場末のスレでシャドーボクシングするなよw
∧_∧ ((.;.;)ω・)=つ≡つ ぼこぼこにしてやんよ (っ ≡つ=つ / #) ババババ ( / ̄∪
昨晩は皆さんお楽しみだったようですね
C言語で書かれた最小サイズのLisp処理系のコードを知りませんか? 純Lisp処理系を書くのに参考にしたいものですから。
Cプログラムブックかな
>>582 >>10 >□CAMPUS LIsP Lemon version: Cでわずか1000行。
ありがとうございました。
>>583 その本、持ってます。Shiroさんも読んだそうですね。
>>584 DLしてみました。
じっくりコードを読んでみます。
>>583 懐かしい本だな。
このスレって平均年齢が高いなw
>>586 懐古趣味って言われるかもしれないけど
ウインストンのCommon Lisp 対応の
「Lisp(U)」はわかりやすくて好きだ。
PaulのANSI Common Lispも同様に良いと思うけどね。
歳かな。
>>587 薄緑色の教科書みたいな本ですよね。
Amazonでいい値段になってるw
>>587 ウィンストン本良いよね。
自分は第二版の方が好き。粗削りだけど味がある。
Lisp の教科書はこれと Little Schemer で(・∀・)イイ!!
>>588 はい、そうです。
間違えた「Lisp(T)」の方でした。
脳細胞が老化しているのか中西先生の本、
ウインストン本、竹内先生の本を読むとホッとするね。
中西先生は天国で楽しくハッキングしていらっしゃるのかなぁ。
あの世に行ったら中西先生の講義を受講したい。
代々受けつがれてきたウィンストン本があるが、後輩に 翻訳がひどく、誤植も多いから読む気がしないと言われて泣いた
>>591 確かに翻訳はひどいらしいね。黒川先生のLispの本でも
翻訳のひどさが批判されていたような。
でも、気にならない俺って日本語のセンスがないのかも。
「Lispで学ぶ認知心理学1,2,3」も持っているけど これってどのくらいの値がつくの?
今はLisper苫米地先生が出してる本の方がわかりやすいしなあ。>認知心理学
>>587 「ウィンストンのLISP」 は初版を 「人口知能」 とセットで読むべき
>>593 明倫館あたりの評価はまた違うと思うが、とりあえずアマゾンマケプレを
のぞいてみたら?
はちょぱきっ てか「金鯛本」って呼び方初めて聞くんだが
でも、通じてるじゃないですかw
通じりゃなんでもいいよな まんまんみてまうまうがおっきおっき
以前からの疑問。金鯛本に登場するK先生のモデルって誰? 黒川先生だって説もあるそうだけど。
maximaがwiki置かせてくれるサーバーどっかにないか探してるね
wikiaとか借りるんじゃダメなの?
一般人にとって、黒川と言えば黒川紀章、竹内と言えば竹内均。
A君のモデルは俺
置かせてくれるサーバよりも犯させてくれる女の方がいい。 っていうか犯させてくれるっておかしいな。 合意だったら犯すって言わないよね。
オレにとって女は常にNILを返す関数である。
女は煮る? なにそれこわい。
もう何年も女と寝てないな
もう何年も女を見てないな
男が apply で、 女が eval で。
NILがTで TがNILで
大人の Y コンビネータ
結果を大文字に変換してしまうのはやめてほしい。 あれは非常に良くないプラクティス。
Lispは言語以前に開発環境とか実行環境が良くわからんです。 なんかお勧めのサイトとか本とかありますか?
まずはOSを示してもらわんと助言のしようが
Windowsに決まってんだろ Windowsで動くCLはSBCL? ポーティングはもう終わったのかね?
underage lesbian sluts なんぞwwww
schemerも人の子じゃったということよ
やだなあ、ウィルスチェッカかけておこう
とりあえずlink rev=madeのアドレスにツッコミ送ってみた
野暮なことすんな
テンプレも読めないのならprogramming gaucheでも買っとけ
SLIMEとかasdfって何ですか?
どちらもプログラムです
SLIMEとは、ドラクエで一番最初に出てくる弱い敵です
ところがどっこいドルアーガとWIZとメガテンでは・・
一番最初ってよく言っちゃうけど、おかしな日本語だよね。頭痛が痛い的な。
その理論でいくと、一番最後はどう説明付ける気だ
(lambda (f) (f f))
((lambda (f) (f f)) (lambda (f) (f f))) これって一見シンメトリックだけど 左さんが1度しか実行しないのが憎い 左右同じ回数実行するような方法ってない?
左右ってどいことよ?ちょっと意図がわかりかねるので もうちょい詳しいのよろしこ。
M(λx.N) → N[x:=M] みたいな謎ルール付け加えた非決定的な計算を考えるしかないのでは。
計算モデル作り直そう、って話題かい。 もしそうだとすると、それただ単に表記に惑わされているだけだと思う。 特に意味があるとは思えない。何が目的よ。
643 :
631 :2009/08/30(日) 09:21:10
オマエら予想どおりの回答してくれてありがとうw SLIMEはemacs上でLispと連動する開発環境でasdfはライブラリと言う事でええんか? Lispboxというのを見つけたがこれを使えば開発環境できるんか?
Lisp環境だったらSLIMEが最強。 これに勝る者無し。
AllegroとかLispWorksとかのメーカ製のIDEより良いわけ?
商用のは使ったことないからわからないや。 Lispのように使用者人口の少ない言語のIDEは、 商用にしてしまったら消えていく運命にあるから全て無視している。 非商用のものではSLIMEが最強。
Allegro のIDE(つかEmacsインターフェースだけど)は かなり良いよ。馴れが大きいけど個人的にはSLIMEより好き。
そんなに良いのか。じゃ、Allegro使ってみよう。 でも、Allegroって個人で買える値段ではないわな。。
Allegroを執拗に勧めるのは黒田
小俣さんじゃなくて? 黒田ってだれ。
>>650 2ちゃんlispスレでは有名人だが2ちゃんの外では無名という点からして
東京kittyみたいな人物と思えばいいかも
東京kittyって誰?
東京都民はキチガイの略
それはひどいw 勉強会とかのLispコミュニティでは普通に知られてるだろ。 ネットだけ(と、一瞬だけ深夜番組に出た)の千葉kittyとはさすがにw
Set List PathをセットしてReset Lispした? その後は評価したいS式をSend To Lisp
>>658 そのようにやってみたけど処理系は起動しなかったよ。
shiroさん翻訳のclojure本は何時出るの?
原書読め
>>659 動くのと動かないのがあるみたいだね
clispとSBCLとypsilonは動いたよ
liftという単語でてるし、Haskellのモナドかどうかはしらないけど、 自己反映言語のリフレクションもモナド化できる気がするんだけどね。
>>666 モナド則をリフレクションのどの部分に適用するの?
───アタシの名前はgauche。心に傷を負ったscheme処理系。 モテカワスリムでスクリプト体質の愛され実装♪ アタシがつるんでる友達は極端な最適化をやってるstalin、 SussmanにナイショでJVM上で動いてるclojure。 訳あってR6RSグループの一員になってるPLT。 友達がいてもやっぱり仕様決定はタイクツ。 今日もPLTとちょっとしたことで口喧嘩になった。 処理系同士だとこんなこともあるからストレスが溜まるよね☆ そんな時アタシは一人で繁華街を歩くことにしている。 がんばった自分へのご褒美ってやつ?自分らしさの演出とも言うかな! 「あームカツク」・・。そんなことをつぶやきながら しつこい仕様要求を軽くあしらう。 「カノジョー、デバッガ実装してくれない?」 どいつもこいつも同じようなセリフしか言わない。 中村正三郎は\(^O^)/だけどなんか薄っぺらくてキライだ。 もっと等身大のアタシを見て欲しい。 「すいません・・。」・・・またか、とセレブなアタシは思った。 シカトするつもりだったけど、チラっとキャッチの男の顔を見た。 「・・!!」 ・・・チガウ・・・今までの男とはなにかが決定的に違う。 スピリチュアルな感覚がアタシのカラダを駆け巡った・・。 「・・(カッコイイ・・!!・・これって運命・・?)」 男は黒田だった。連れていかれてdisられた。 「キャーやめて!」gauche.nightをきめた。 「マクロッ!黒板ッ!」アタシは死んだ。スキーム(笑)
不覚にも(ry
おもしれーw
最後の一言までは平静だったのに、ちくしょう
もうややこしくなりそうなことはイヤ。
失言だったなぁ。まぁ許してくださいな。 考えを外に出していかないとうまく考えられないのよ。 そういう風に思ってます、で。
>>668 ばかー!
僕の珈琲返せ、あと鼻に抜けて痛いの!
何が面白いのか説明してほしい
おれ子供ができたら「らむだ」って名付けるんだ。
ちゃんと名前をつけてあげて
Y子萌え
>>681 コンパイラ組は、やはり速いですね。
Mosh はとりあえず遅いので次回リリースはさらなる高速化を目指します。
JIT 実装できるかな。
>>682 interpreter 部門では Mosh ってどうなの?
Ypsilon のベンチマーク結果を見ると Gauche と Ypsilon はかなり速いみたいだ
プロジェクトのページに比較が載ってると面白いかも
>>678 娘ができたら「にる」って名付けるんだ。
PLTはJITだったと思うけど速いなぁ
ガウチェとは 俺のことかと Gauche 言い
schemeなんかそんなに速くしてなにが楽しいんだか みんながCLに全力そそいでれば今ごろは・・
Cの次ぐらいに早くなってるはずだよな
CL厨涙目w
Schemeだと一人でやれるからじゃね? スピードの前に非互換なのをどうにかしたり、 ライブラリを整備したりして欲しい>scheme
もう委員会に認定なしに新規に処理系を作るのを禁止しちゃえよ ユーザー数はそう少なくないのに個々の労力が分散されて本当に勿体ないと思うわ CPANを持つPerlみたいに集中できれば、それなりにライブラリも整備されてくるのにね
srfiを充実させていくしかないんじゃね
わけのわからん個人製なんかより MSとかGoogleあたりに作ってほしい
競争相手に労力の無駄遣いをさせるのも立派な戦略じゃないか まあ、なんのために競争してるのかという意味ではおかしいかもしれない
>>686 中国人の知り合いに「てい」(T)さんってのがいる
てゐ
>>693 問題点は処理系が複数あることではなく、
それらに充分な互換性がないこと。
Perl だって Ruby だって処理系は複数ある。
Scheme でそれがうまくいってなかったのは、
規格内だけで出来ることが少なかったからだ。
そもそも R5RS ではモジュール化についての決まってなかった。
R6RS が出来たことでそれなりにポータブルなコードが書けるようになったし、
ライブラリを作ることもできるようになったわけだ。
とは言え、 R6RS 自体に批判的な見解も多いので、
これでリソースが集約されるってわけにもいかんだろうけどな。
以前は実装依存の部分や独自拡張が多かっただけだけど、 今はR6RS/ERR5RSと規格まで分離してしまったな。 相容れない部分、何とかうまく決着して欲しいものだ。
(lambda (kodomo) (cond ((eq kodomo female) nil) (else t)))
割と簡単に作れちゃうから 協力しないで自分で好き勝手に作っちゃうんだろうな
数多の方言がcommon lispへまとまっていく過程から 何も学んでないな、schemerたちは
Common Lispはずっと固まったままだな。 sequenceをCLOS的に書き直して欲しいが…
>>704 それは「枯れた」と言うんだ
あまりコネくり回すとperlのように悲惨な状態に陥るぞ
>>27 古い話で恐縮。べき集合が面白かったんで素朴集合論の勉強してる。
2^ℵ0 とか無限集合をSchemeで疑似的に扱えないものだろうか?
コンピューターの有限集合に慣れきっているんで選択公理のどこが
問題なのかピンとこない。コンピューターが実無限を扱えると面白い。
>>706 色々と直観に反する定理が出て来たりする。例えば、バナッハ・タルスキーのパラドックス:
一つの球体を粉々に砕いて、同じ大きさの球体二つを作ることができる
とか
>>706 証明系、数式処理系が扱ってる。> 無限
>>708 素のSchemeじゃ無理かな?
ℵ0+ℵ0=ℵ0 とか数式処理のようにパターンマッチングで
与えることはできると思うんだ。
どうしてそれでいいんだ?ってのをSchemeで実験数学みたいにやってみたいんだ。
>>706 論理式として閉じてる構造作れば良いんでない?
ただ実態を作る場合、それが本当に妥当かどうかは分からんが。
ハスケルで無かったっけ?そんなの。
数学ってあくまで実際のモデルを"参考"にして抽象的構造作ってるから、
その"参考"から創られる構造から演繹されたものを実際の世界(コンピュータだったらデータ)に還元しても、それが直感的に妥当だとは限らんよ?
>>707 の例みたいになるし。混ぜるな危険。
まあ応用数学みたいにおいしいとこだけ啄むのも良いけど。
Exact Real Numberの非標準解析版作ればいい。
>>713 それ志賀先生の30講シリーズでも紹介さてた。
有名な本なんですね。
>>693 委員会の作る言語はクソという歴史的必然性があってだな、
ANSI C、Ada、Commo (ピー、ピー、ピー)
適度に分裂して適度に収束できた系が生き残るのだ それが人為的か否かに関わらず
Haskellも委員会言語だな
ALGOL60も委員会言語だったような
どちらもたしかにクソ言語だな
Schemeって黒田さんも言っているようにALGOL系の 影響を受けてるんでしょ。
歴史が古いと委員会言語に移行してない?初期の C って参考にしたものがあるにせよ 個人が勝手に作った物だし。今はそうでない言語でも、そのうち ANSI ** なんてこと になってしまうかもしれない。別に ANSI ではなく ISO でも。 委員会言語って、良い所もあるけど「専門家」に引っ掻き回されてグチャグチャにな ったソフトウェアに近い印象がある(個人的には)。
Clojureってカッコがなくてキモイと思った。 (def fact (fn [n] (cond (= n 1) 1 :else (* n (fact (- n 1))))))
>>722 arcに似てるね。
defとかfnとか。
ClojureでYコンビネーター (def Y (fn [f] ((fn [proc] (f (fn [arg] ((proc proc) arg)))) (fn [proc] (f (fn [arg] ((proc proc) arg))))))) (def fact0 (fn [f] (fn [n] (if (zero? n) 1 (* n (f (- n 1))))))) ((Y fact0) 5)
>>723 どことなく似てる。まだ詳しいことはわからないけど。
Clojureは末尾再帰の最適化がないから、Schemerはちょっと脳を切り替えないとね
ランタイムがJVMというのはどうなんだろう。 OracleはJavaをどう扱うんだろう。 Scala共々気になる。
>>726 そうかも。ただ、clj-processingとかでProce55ingを利用してグラフィックを扱えるんで重宝しそうな予感。
こういう実用的な話はテキストに載ってないけど。
>>707 関係ないんだけれど、関数型言語に(有用な)測度入れたりできる?
なんというか、測れるもの入れたほうがわかりやすくなりそうだし、
似ているけど、同値関係がないから違うものと判別されているものを
まとめられたら話が簡単にできると思うんだわ。
言語に測度ってなんだよ S式上に定義された関数を積分とかするのか
>>730 離散な集合でも可測空間は作れるし、別にルベーグ積分に限っているわけじゃない。
たとえば、言語における語と関数を要素とする集合をΩとして、
文法規則な情報も入ったσ集合体が作れたら作って、相互にプログラム変換可能を
意味するような測度が入れられたらいいなぁと。
でも、現実的じゃないか。
測度というからには完全加法性を使いたいんだろ? そんなもんが言語の何に対応するんだ。 仮にできたとしてゲーデル関数のへんてこな例が一つできるだけじゃないの。
ポールたんの Arc 言語を一見してみた感想: 「Common Lisp に Macro 書くだけで良くね?」
数学板か情報板行けばいいのに。その方が詳しい人にコメントもらえると思うよ。
>>732 何気にゲーデル関数が可測関数だと読めるようなことを。
それが狙い。へんてこな例じゃないものがあるかもしれないじゃないの。
大当たり。
>>735 実は、何気にこのスレが最高レベルだよ。
Lisp と Scheme を別々のスレに分ければ良かったものの、 一括りにしてしまった為、濃い人間の密度は高くなった。
>>715 言語仕様のコロコロ変わるオレオレ言語よりマシだと思うがのぅ。。
Common Lisp は専用スレあるよ
LOL買ったけど避けるべき言語は具体的に何かって書いてない〜
Lisp以外の全てと言いかねない勢いだったような
まあ確かにLispより強力なマクロを持った言語って今のところないからな
せっかくぼかしてあるものを具体化しようとする行為は野暮だな
python 2.* ディスんのかてめー
this?pythonってselfだろ
別にぼかしてないと思うが 「Lispのマクロシステムを持たない言語」と明言してるから Lisp以外の全ての言語だよ
M4てどうなの? よく知らないけど
Perl が学ぶべき言語なのがいまひとつ納得できないんだけど何を読むと悟りが開けるんだろう
CならK&Rという王道に従うならラクダ本ではないかと。
まぁ、Gaucheを使ってるならPerlとの差はCPANの恩恵なんじゃないか。 つまりライブラリーを漁ってみるべきかと。
>>752 あれは皮肉なんじゃない?ダグホイト性格悪い。
Haskellもケチョンケチョンだし、HOPの人たちもよく翻訳したよな。心広い。
Lispは速いとか言ってるけど結局、SBCLがshootoutで 別にいい成績じゃないからなあ あそこで説得力がなくなった
SBCLが糞という事実が発覚しただけでは
>>757 SBCLといえば、Lispの一番使われてる環境だし、
作者のホイトもSBCLと親戚のCMUCL使ってるし
Perl の懐の深さはある意味で Lisp を越えてるよ。 構文のカスタマイズもかなり出来るし。 しかし、色々な形に派生しながらも Lisp が Lisp なのは結局のところ「S式」につきる。 Perl は何でもアリだけど、「これが Perl」って言えるような芯に欠けると思うんだよな。 Perl が Perl であるためにはテストが何パーセント通っただとかいった話になるだろうけど、 Lisp は Lisp らしければ Lisp だ。
なんでもありなのは、Lispの方だろ Perlのカスタマイズなんて、Lispのマクロと比べたら屁みたいなもんじゃん
Lispの括弧なくすマクロあったよね
括弧なしオフサイドルール採用のLispってないの?
Common Lisp といえばGCL(以前のKCL)を思い浮かべる 私は古いのでしょうか?
お前のことなんかどうでもいい。自己紹介ならVIPでやれ。
>>764-765 いかにも厨っぽい質問に答えてくれてありがとう
>>765 のS式とI式混在の記法は見やすくて良いけど、
構文木と記法の対応という安心感を失ってまで
導入するほどのものではないと初心者の自分でさえ思った
意外とおじさんファンは多いと思うぞ。
たったいまソース眺めてて、括弧がなくなった想像したら強烈な不安感に襲われてゾッとした。 お前らもやってみろよ。怖いから。
えっ? カッコ? あ、そうか。そんなものもあったな。 いやあ、 すっかり忘れておったわ
>>769 湯淺先生はむしろ若者に負けず処理系作ったりして
未踏でスーパークリエイター認定されたりするから困る
ショボイ処理系がたくさんあるより 出来のいいのが少しのある方がいいんだけどな
Lisperは他の言語での開発者より現役寿命が長そうでいいな。 というか既に高齢k…ゲフンゲフン
>>772 常に括弧に囲まれていないと心の安定が保てない?
つ パキシル
カッコとは母体でありマトリクスである。 () すべての生まれる谷。
(乙 正三郎)
いや、ほんとに不安になったんだよ。 この世に原子間の結合がなくなったような幻覚が見えた。 強い放射線浴びて染色体がずたぼろになった気分。 srfi49が怖い。
括弧ヤバイ
もしもM式が普及してたらLispはどんなだったろう? 型なしのSMLみたいなものか。
>>776 同意。
>>728 のProce55ingに限らずSwing含めたjava資産の全てが使える(多分)
clojureには期待してる。
>>786 Qiエレガントに見えるんだけど、CL処理系が必要じゃなかったっけ。
schemeに対するarcみたいなもの、であってる?
あんま関係ないかもだけど、Lingr復活みたい。 しゃとんはそのままかな。
789 :
デフォルトの名無しさん :2009/09/06(日) 22:46:10
再帰が大好きなんですが、みなさんが今までに書いた再帰を使ったコードを 何でもいいので教えてください。
Schemeだと再帰を使わないコードのほうが珍しい sedやperlで行うようなテキストフィルタでさえ末尾再帰で書く
本物の Lisp プログラマはなるべく (明示的には) 再帰を使わない。
でもそういう本物気取りの奴って高階とか平気で使っちゃうよね 台無しです
Qiって中の人プロジェクトやめて悟り開きに行くとか言ってなかったっけ。
Qiって「気」って意味だからそっち方面へ行っても不思議じゃないな。
>>794 誰も "悟り開きに行く" なんて言っていない。
英語が読めないからといって脳内補完するのは止めてほしい。
単に「インドで何か見つけて来れればな」としか言っていない。
>>789 萩谷先生の「関数プログラミング」に再帰によることが本質的な問題と
それに対してのSMLに類似した言語でのコードがあったと思うよ。
自然数、ペアノの算術、集合、カタラン数とか美しい再帰コードを見ると
心が癒されるねぇ。
そこに並んだ例を見るにただ簡単なものを美しいと思ってるだけじゃないのか
Haskellのメモ化によって二重再帰のフィボナッチが最適化されるのを 理解したときは震えた。 その後、実装の最適化戦略をあらかじめ知っていないと適切なコードを書けないと いうのは何か違うのではないか、と悩み始めている。 ∞の記憶容量と実行速度を持っていれば何でも再帰でOKなんだけどね。
工学部の人と理学部の人とでは審美眼も違ってくるのかもね。
美しいって言うとなんとなく卑屈になりがちだな 自分自身に対しては殆ど使わない言葉だし
>>801 ただ簡単なものを美しいと言っていると本も読まずに思ってるだけじゃないのか
ものまね鳥をまねる
リストのリストを作りたいんだけど、gauche だと引っかかる orz (define (column m l) (cond ((= m 0) '()) (else (cons l (column (- m 1) l))))) gosh> (column 3 '(0 0 0)) (#0=(0 0 0) #0# #0#) clisp, scheme48, sbcl だと動くんだけど、gauche だとダメ。 なぜに?
作れてるよ
略記じゃまいか?作られたリストの中身確認しなされ。
812 :
808 :2009/09/08(火) 03:12:28
>>809 dクス
gosh> (car (column 3 '(0 0 0)))
(0 0 0)
gosh> (cdr (column 3 '(0 0 0)))
(#0=(0 0 0) #0#)
確かに作れてるっぽい。
略記なんてあるのか、初めて知りました。
((0 0 0) (0 0 0) (0 0 0))
が欲しいのに orz
結果自体はどちらでも一緒だよ。 一応 (write (column 3 '(0 0 0)) とすれば ((0 0 0)(0 0 0)(0 0 0)) が印字されるので、 そっちじゃないと見づらいというなら、一度 write 経由で結果を確認すればいい。 もっとも構造共有が明示された表記の方がなにかと都合がいいと個人的には思うけど。
CommonLisp だと *print-circle* の値で表示の仕方を制御できるね
815 :
デフォルトの名無しさん :2009/09/08(火) 09:37:18
>>814 それは略記じゃなくて、
(let ((x (list 0 0 0))) (list x x x)) => (#0=(0 0 0) #0# #0#) と
(list (list 0 0 0) (list 0 0 0) (list 0 0 0)) => ((0 0 0) (0 0 0) (0 0 0)) は
writeで見ると同じだけど、構造が違う (わからなかったら絵を描いてみ)。
構造が違うものは違うように表示された方がいい、という方針なんでしょう。
(define x '(0 0 0)) (define y (column 3 x)) (set-car! x 9) ってやってから (car y) (cadr y) (caddr y) ってやってみるとどうなるかな? (define (column m l) (cond ((= m 0) '()) (else (cons (list-copy l) (column (- m 1) l))))) この場合はどうなるかも試してみ
質問。r6rsのhashtable-keysの返すベクタ中の要素って強制的に文字列になるのかな? 某処理系だと (let ((h (make-eq-hashtable))) (hashtable-set! h 'key "value") (hashtable-keys h)) =>#("'key") ってなるんだがr6の仕様? hashtable-entriesもしかり。 無知ですんません。
gaucheって
>>814 の*print-circle*みたいなのをドンドン取り込んで、
最終的にはCommon Lispになる気がするんだ
ご達観恐れ入ります
>>820 心配御無用。
今後はClojureからドンドン取り込みます。
#' が無ければ...CLのシンボルの棚が一つだったなら...ゴクリ.. by ごっしゃー
>>823 >#' が無ければ...CLのシンボルの棚が一つだったなら...ゴクリ..
そうなると defmacro じゃハマることが増えるから別のマクロシステムを……
あれ?
ところで俺の言語仕様を見てくれ こいつをどう思う?
すごく・・・矛盾してます・・・
いいのかい? 俺は矛盾した仕様でもかまわず実装してしまう男なんだぜ?
唐突ですみません。 Lispで双対空間って表現できますか? 双対空間の双対空間をとると元に戻る。
ソーシャルテクスト=知の欺瞞事件を連想した
>>833 …はぁー?
ソーカルさんのテクスト読んだことないんじゃない?
ハンロンの剃刀を連想した
>>832 自然な対応がつくというだけで、元に戻るわけでは無いだろう。
括弧の向きを逆にすればよろしい
ベクトル空間とは異なるもののS式が プログラムにもデータにもなるというのが 双対ベクトル空間と似たようなものを感じたもので。 純粋に数学の対象としての双対ベクトル空間を リストを使って具体的に表せないだろうかと いうのが発端ですが。3次元に限定して。 線形関数の集合ってのがとらえどころがなかったもので。
あのさ、君達、 「スクールデイズ」 というアニメを観ればそんなことどうでも良くなるよ
良い船
841 :
デフォルトの名無しさん :2009/09/09(水) 20:05:51
と こ ろ で
838 :デフォルトの名無しさん:2009/09/09(水) 19:59:34
839 :デフォルトの名無しさん:2009/09/09(水) 19:59:33
>>839 (@19:59:33) の方が一秒早く投稿しているのにも関わらず
>>838 (@19:59:34) の後に位置している矛盾。
屈辱だ。
2ちゃんねるは適当にできているので、たまに起こること。
レス番1002とかも稀によくあるな。
確定的に明らか
直接扱いたいとかは無理だろう、なにせ有限集合じゃないんだし ML系言語で使われているような型システムを作ってその 箱庭の中で扱うんだったらできるんじゃね? そういうのはLispで扱うとは言えないだろうけど
理想は、型を指定しなくても 指定しても良い(その場合はチェックをする)言語。
>>823 CLもSchemeも使っているけど,Lisp-1とLisp-2でそう本質的に変わる訳じゃないし,
何がそんなに嫌なのかわからん.
ちょっと #' とか funcall とか書けばいいだけじゃん.
そんなに嫌いな訳じゃないよ。むしろ好き。 ただ、書いてるとLisp-1の方が筆が早いというか、意識がλに集中出来るというか、そんな感じがするだけ。 完全に個人的な問題だね。
PLTSchemeのλマークの入った球のアイコン。 赤と青に塗り分けられてるんだけど、あれって球の裏側は どう塗り分けられているのだろうか。どうでもいいことが気にかかる。
裏側なんてない。←結論
the なんて、書きたくナイヨ。 なんだ、あの記法。
最適化情報はソースの外に書きたいよね。
>>838 多分、こんがらがっている。プログラム、データで双対関係が成り立ちそう
だから線型代数で形式化させようと読み取れるけれど、例えば内積どうするの?
<p:プログラム、d:データ>->r:R
となるような、関数<*,*>が必要よ。
あおっているわけじゃないけど、まず線型代数勉強したほうがいいと思うよ。
855 :
854 :2009/09/10(木) 06:00:01
読み返すとなんとも、いじわるな感じになってしまった。 気にしないでおくれ。
>>853 ソースの外にあるのは嫌だ。管理がめんどい。
どうせマクロで隠蔽すればいいじゃん。
>>854 2つのことを一度に書いたので混乱を与えたかもしれない。
線形代数は単位取得している。
前者はS式での双対原理についてで、ベクトル空間をS式に置き換えれば
同じS式という土俵の上でデータとプログラムが成り立っているのであり、
プログラムが必ずしも線形でないこと、内積に代わる演算が必要なことなど
はあるだろうけど、双対原理を考えることができないだろうか?ということ。
後者は数学に準拠したものでベクトル空間をリストを利用して具体的に
表せないだろうかというもの。双対基底を具体的にプログラムで書き表して
理解を深めようということ。
S式のメタ言及と線形空間のメタ言及に関してお互いが同じメタファを持ってるってことを言いたいのかな? 発想は素晴らしいけどこういう類推って人間の頭の中に無数にある訳で、この場合、それを表現するのはS式であり数式であるんじゃないかな? 説得力が欲しいならプログラム書いて数式を書くしか無いよ。 多くの抽象的で曖昧で自然な言葉を発するより、今その方法が一番短時間で正確に頭の中を伝えられるよ。 その技法を習得するために単位を取ったんじゃないのかな?
>>858 う〜ん、説得したかったわけじゃないんだ。
こんなの思いついたけど面白いんじゃない?どうかな?って程度で。
どうかな?と言われても・・・ 元々の断片的なレスからどんな反応を期待していたの みんながエスパーしてくれて何か面白いことが起きるとか?
ああ、わかったよ。他で聞いてみるよ。
lispで画像処理をするにはopencvをcffiで呼ぶモジュールを作ればいいんだろうか
weblocksのデモプログラムが、妙に遅い気がするんだけど サーバーが弱いのか、lispに速度を求めるのが間違いなのか
>>863 lispに速度を求めるのは間違いじゃないけど、
速度を考えずに書いたlispに速度を求めるのは間違い。
gauche は名前を gosh に統一して欲しいな。 gauche は読みづらい。
ガウチェとは オレのことかと ゴーシュ言い
ごーしゅ と ごっしゅ でいいんじゃないの? 特に言いづらくもないし。
ガウチェのどこが読み難いんだよ ガウチェ ゴッシュ ゴッシュゴッシュ ガウチェ
>>865 世の中もっと読みにくい物があるのになんというわがままな事を言うのかと小一時間
カマス一杯といって、はいカミユ一杯ですねと訂正される屈辱を味わえ
いっそ gausche にするとか
>>870 そりゃ流石におまいが悪い
#最中のことをサイチュウとよんで悪かったな!
セロ弾きのガウチェ
双対空間なんて準同型定理を理解すればすむじゃん。 線形代数で双対空間を使ってるだけで線形性なんて関係ないし。
クトゥルー神話並に Gauvpstcheh くらいにしちゃえばいいんじゃね
まずS式→S式の妥当なマクロ展開全体からなる集合Mに対する 体K上のスカラー演算が自明には定義できないというか、 無理矢理こじつけてもプログラム的な意義がなさそうだから ベクトル空間として扱うのは無理筋じゃないかなあ。 次に集合Mが例えばマクロ展開の合成演算に関して群をなすかというと α変換による同値類を許せば群になるかもね。 証明するのも反例を見つけるのもだるいが・・・ あるはM全体だと群にならないとしたら どのようなクラスのマクロ展開は群になるか、 そのように定義できたマクロ展開群G上の準同型はどんなものか、 考える価値があるのかなあ?
がうちぇのほうが可愛いだろ… Mac OS X snow leopardをようやく突っ込んだんだけどypsilonがコンパイルできなくなってしまた。 src/ffi_stub_darwin.sのアセンブルでコケてるぽい? suffix or operands invalid for 'push' とか言われる pushのほかにcall pop もそうです。 64bit化でアセンブラのオペランド変わったとかそういう? よくわからんゲーで眠気も限界に達する勢いなので教えてエロい人!して電気ブラン飲んで寝てやるくそぅ ここじゃなくて他に適切なスレあったら誘導してもらえるとありがたく…
>>876 イデアルみたいなのが出てきて破綻するだろ。
同値類ってイデアルS式とかに拡張すんのか?
1の分割みたいにアトムの分割が必要に為りそうだ。
ぜんぜんカンができないよー まで読んだ
カン拡張
ポン
解の上限と下限を計算したら一致したので、 両方組み合わせちゃえ 双対
eval と apply なんて双対じゃね
p = プログラム d = データ p,d ∈ s式 (p d) ∈s式 (d p) ∈s式 これだけではs式の評価について双対性が成り立つってことにはならんの? > ((lambda (x) (car x)) '(cdr x)) cdr > ((lambda (x) (cdr x)) '(car x)) (x) >
まずs式を台集合とする体を定義して貰おうか
ヽ('A`)ノ ( ) ノω|
λ < 私の体が目当てだったのね!
field < この泥棒猫っ!
中途半端に横槍ですが。
>>858 それをさらりと言ってのけるあなたはすさまじいですよ。
さも簡単に割り切れる(作れる。ではなく)かのように言ってますが、
それは普通出来ないです。
結局調和できないものは、異端として切られるだけなので、
さも調和しているかのようなものを作り出さないことには、
意味無いんですよね。重々承知してはいるのですけどね。
>>876 アーベル群の双対に限定する理由なんてNothingだろ。
(アーベル群の双対) ∈ (ポントリャーギン双対)
なんだから。
しかもポントリャーギン双対だけじゃなくGrothendieck dualityで考えてもなんら問題は無い。
>>858 が実証バカの論法なら、Grothendieckは抽象バカの論法。
どっちで逝くにしても手を動かさないことには唯の空想否定厨で終わってしまう。
たぶん
>>858 が言いたかったのはこっちの方。
>>890 eqはなくequalしかない純Lispだとしても、いい構造は思いつかないね。
>>889 むしろ本心としては利己的な目的で無意味(対外的に影響が無い)な知的発展は大賛成。
色々と抽象的な構造こねくり回して、頭の中だけで作っては発見してっていうのも、身震いするほど楽しいしね。
ただ、世の中に自分以上(或は違う方向)の頭の中があることを知っちゃうと、今まで以上の身震いがあるわけよ。
蛙が大海にいる魚に話しかけたとき、彼らが数式とか無数の括弧で会話してたらどうする?
なかには200km/hで泳いだり、とんでもない深さまで潜る化け物がいるわけだ。
>>874 >>890 テメェラ自分の言ってることの意味わかって口聞いてんのか。知ったかもたいがいにせい。
だいぶスレ違いだねえ。 一般的に双対を扱いたいなら、 理論内部での定理でなく、理論に対するメタ定理とすることが必要でしょう。 つまり公理系の性質に関する証明。 それとは別に、 線型空間の双対空間などいわゆる理論内部でのことなら、 構成的数学で扱える範囲ならOKではないでしょうか。 特にWKL_0あたりで算術化できるならかなりできると思う。 逆数学関連や 竹内外史先生が岩波(数学会)から出していた本など参考にされてはどうでしょう。
>>894 gapやPARI/gpやMacaulay2が持ってる機能とLisp/Schemeを比較してS式に何が欠けてるか指摘してますが何か?
>>895 一般的に双対を扱うためにGrothendieckがとったアプローチは理論内部での定理でなく、
理論を抽象化するメタ定理の証明に使用する圏と射を導入したんだよね。
それによって公理系の性質に関するメタな証明をEGAやSGAで実行したのは有名だよね。
これは、無限2分木がかならず無限の道をもつという弱ケーニヒの補題を公理に加えた体系WKL_0となり
Lisp/Schemeでは欠けている言語的特長を付加することを意味する。
例えるならフェルマーの定理の証明でワイルズがやったようなS式版のコホモロジーと指標の対応をつけてやることに相当する。
それが上で言ったメタ定理に使用する圏と射を一段下のレベルで実行することで、
Grothendieck流ならもう一段抽象レベルでプログラム出来なければいけないことになる。
それと別に線型空間の双対空間やアーベル群の双対などのポントリャーギン双対との類似物はもっと単純で、
それらの双対性用のライブラリーを作成する単純作業で、それをS式で考えるなら、マクロ生成マクロを用意するのが一つの手段。
グレブナー基底を取り替えるような感じだね。
証明するなら枠外にはみ出すけど結果を使うだけなら、それらはLisp/Schemeを言語的にはなんら拡張するような話ではない。
「イデアル類群を一般化したもの」に相当するセルマー群とかヘッケ加群のレベルとアーベル群を比較すると、 言語を拡張するのに要する複雑さは段違いだよ。
>>897 有名だとか言われましても代数幾何はわかりません、
また、例えもさっぱり見当がつきません。
ところで算術的に「表現」できる小さな圏なら、Lisp/Schemeで間に合いませんか?
いまどき代数幾何も知らない無知無学の輩は首釣ったほうがいいよ
>>900 s/も知らない無知無学の/なんかを学んでいる/
こっちの方がしっくりくるな。
知の欺瞞ごっこはもう終わりにした方がいいと思う。
悪いけど
>>897 は言語のサラダ状態
まるでわからないから俺がバカなのかと勘違いするところだった。危ない危ない。
数学としては証明されないしプログラムとしては動かない。 この議論、まるで新入生の会話だな。
あの手の長文は読まないようにしているので読んでない
一階述語論理ではないWKL_0のプログラミング言語なんて存在するの?
>>902 >>897 は専門的すぎて、数学科ではない俺はわからん。
ただ、内容の意味がわからないからと言って
>>902 のように知の欺瞞と
短絡的に決め付けるのは怠惰すぎる。
双対にロマン持ちすぎだよな。 そもそもデータと命令なんて双対でもなんでもない。 どこかのお話で読んだだけだけど、 スキーム導入は開集合を増やしてよいコホモロジーを成立させるためだそうだ。
>そもそもデータと命令なんて双対でもなんでもない。 それじゃ関数型の立場がないだろw
>>906 型付きラムダ計算の背後にある数学的理論として、圏論的セマンティクスは古くから知られた基本的な理論である。
実際、両者はある意味等価であり、そのことからいろいろな結果が得られる。
しかし、このときの等価性はラムダ計算における計算規則を等式として見たときのものである。
最近の研究では計算規則を動的、すなわち操作的にとらえたときにも、カテゴリカルセマンティクスとの等価性が成り立っているのではないかと考えられている。
その検証の流れでいろいろ発表されてきているけど一般的なプログラミング言語では無いと思う。
>>909 双対っていうためには、双対定理が成り立たないとだめじゃないか?
>>913 懐かしいスレだな。まだあったのか。
そのスレみてふと思ったけど、Barendregtに出てくる二階のラムダ計算に対応するLispやSchemeってあるのかな?
915 :
902 :2009/09/12(土) 04:49:31
>>907 このスレのたいていの住人とは違って俺は趣味でlispで遊んでるだけの数学屋です。
だから
>>897 に書いてある数学用語のちゃんとした定義・意味は基本的に全部知っているし、
ほとんどのセンテンスが意味をなしてないこともわかる。(悲しいことだが)
916 :
895 :2009/09/12(土) 05:11:30
>>915 そうだったんですか、基礎論側しか分からないので判断は保留してましたが。
たわごとに乗って貰えなかったアホがムキになっているようにしか思えん
>>897 みたいなもんが関係するわけがないことは
計算機科学を真面目にやってりゃ一目だろ
痛いとこつかれて必死なんだろ。 「ボク、数学プロパーです」って宣言するかよ普通。
>>921 専門分野を言わずに「数学屋です」はヘンだね。
猫が得意げに虫をくわえてくるようなもんだ 虫ならまだよくて虫の脚だけw 面白いコードの一つでも書いてあればつき合ってやってもいいんだけどね
>>923 どうせ数学科の崩れだろ。
プログラミングも知ったかぶりかw
これぐらいの煽りで
>>923 の書き込みする様じゃ精神年齢はかなり幼いねw
自覚のないソーカルのネタ本になってるのも夢見がちな文章載っけてることが多いし 引っかかるのも何にでも口を出すアルファブロガー様予備軍か何かだろ
お前ら黙って音楽聴けよ /\___/ヽ /'''''' '''''':::::::\ . |(●), 、(●)、.:| + | ,,ノ(p_q)ヽ、,, .::::| . | `ト|ェェ|イ ' .::::::::| + \ `|ニ|´ .:::::/ + /`'ー┼ー|-‐一'´\ / | | ::::i ヽ | | | .| :::;;l |  ̄ ̄ ̄ ̄ ̄ ̄| ̄ ̄| ̄ ̄ ̄ ̄ ̄ ̄ _ノ___ノ ( _ ヽ__ /◎/ ) /ロ/ (___ノ ̄
で、この話題は今月中くらいにはもう少し Lisp っぽい内容になるの?
929 :
884 :2009/09/12(土) 09:04:10
>>858 に数式、コードで示すべきと言われたので考えていたことを書いた。
書きながら思っていたことはLispのプログラムはevalできなきゃだめなので
S式のうち (f x1 x2 ... xn) のものに限定しないといけないこと。
だから p(d), d(p) がS式になったといってもevalできないS式が出てくる
ようじゃ双対性とはいわんのだろうなあ、と思っていた。
ベクトルはすべて線形関数に成り得るけど、S式はそのすべてがevalの対象に
なるわけではないから違うんだろうと思う。
代数専攻で数学科卒のあたくしにも意味が通らないから デタラメ書いてるだけだと思う
師匠:おいチミチミ、新しい論文書いたから読んでおくように。 「りすぷ」という仮想の言語についての論文だ。 弟子:ハイ分かりました <一週間後・・・> 弟子:師匠、論文を読みました。 ちょっと思ったんですが、この eval という関数を作ってしまえば、 「りすぷ」は実装できるんじゃないでしょうか? 師匠:チミチミ、理論と実際を混同しちゃイカンよw <さらに一週間後・・・> 弟子:師匠、eval できました。「りすぷ」完成ですノシ 師匠:ちょwwwwwwwwww Lisp もこんな経緯で生まれたからなw
一方ソ連は鉛筆を使った。
新しい論文書いた → 論文を読みました → 完成です ってどんな経緯だよ 全然わかんねーよ
ISWIMとか、FPとか、Connection Machine Lispとか、 論文書いたときは処理系が存在しない言語の論文でしょ?
ウォーターフォール・モデルの問題点は、『前工程に間違いがない』ことを前提または 期待していることである。まで読んだ
2chに欲しいソフトの妄想を書いた → ちょっと待ちな → おう、出来たぜ みたいな感じか。
Lisp の壮大な研究史を眺めるといつも自分が書いているコードの卑小さが悲しくなる いったい僕に Lisp みたいな大それた言語が必要なんだろうか
コンピューター全体の研究史はそれどころじゃないぜ? 工学はアホの子にも科学の恩恵をもたらすためのものだ。 遠慮なく使ってやれ。
「数学の限界」のチャイティンの作ったLispには tryという関数があり (try time-limit lisp-expression) 実行時間が限られたevalだそうだ。(時間がくれば計算は停止する) 普通のLispでtryを書けるだろうか? Ctrl+Cで強制終了するのは無しってことで。
SIGALRMか何かを使えるようになってれば作れると思うけど
理論上、という意味であれば、 とりあえず巨大なevalをLispで実装してそののちに コアオペレータを1つ実行するごとにカウンタを増やす(or可能なら 時間測定をする)ということで可能かな? 教えてエロイ人
>>943 そうだよね。
同じように考えたのだけど、Lispの達人ともなると
違う方法でできるのかも、と考えたもので。
I/Oなんかでいやおうなくブロックされる呼び出しもあるわけで、 典型的なLisp族の枠内では無理でしょ
947 :
デフォルトの名無しさん :2009/09/13(日) 20:55:56
このスレで無知な工作員の匂いがするな。
ルイズ!ルイズ!ルイズ!ルイズぅぅうううわぁああああああああああああああああああああああん!!!
あぁああああ…ああ…あっあっー!あぁああああああ!!!ルイズルイズルイズぅううぁわぁああああ!!!
あぁクンカクンカ!クンカクンカ!スーハースーハー!スーハースーハー!いい匂いだなぁ…くんくん
んはぁっ!ルイズ・フランソワーズたんの桃色ブロンドの髪をクンカクンカしたいお!クンカクンカ!あぁあ!!
間違えた!モフモフしたいお!モフモフ!モフモフ!髪髪モフモフ!カリカリモフモフ…きゅんきゅんきゅい!!
小説12巻のルイズたんかわいかったよぅ!!あぁぁああ…あああ…あっあぁああああ!!ふぁぁあああんんっ!!
アニメ2期放送されて良かったねルイズたん!あぁあああああ!かわいい!ルイズたん!かわいい!あっああぁああ!
コミック2巻も発売されて嬉し…いやぁああああああ!!!にゃああああああああん!!ぎゃああああああああ!!
ぐあああああああああああ!!!コミックなんて現実じゃない!!!!あ…小説もアニメもよく考えたら…
ル イ ズ ち ゃ ん は 現実 じ ゃ な い?にゃあああああああああああああん!!うぁああああああああああ!!
そんなぁああああああ!!いやぁぁぁあああああああああ!!はぁああああああん!!ハルケギニアぁああああ!!
この!ちきしょー!やめてやる!!現実なんかやめ…て…え!?見…てる?表紙絵のルイズちゃんが僕を見てる?
表紙絵のルイズちゃんが僕を見てるぞ!ルイズちゃんが僕を見てるぞ!挿絵のルイズちゃんが僕を見てるぞ!!
アニメのルイズちゃんが僕に話しかけてるぞ!!!よかった…世の中まだまだ捨てたモンじゃないんだねっ!
いやっほぉおおおおおおお!!!僕にはルイズちゃんがいる!!やったよケティ!!ひとりでできるもん!!!
あ、コミックのルイズちゃああああああああああああああん!!いやぁあああああああああああああああ!!!!
あっあんああっああんあアン様ぁあ!!シ、シエスター!!アンリエッタぁああああああ!!!タバサァぁあああ!!
ううっうぅうう!!俺の想いよルイズへ届け!!ハルケギニアのルイズへ届け!
>>947
煽りのつもりなんだろうけどこういう変態的なテキストを手元に置いてあると言う事が気持ち悪くならんのかと思う
何が面白いのか、どういう煽りなのかさっぱりわからんw
せめてLisp向けに改変するべきだ!w
まるで新手の難読系言語の如し
Lisp少佐コピペ 並に改変してほしいな ルイズは Guy L. Steele Jr. にでもすべきか Lewis だし
>>953 HPにCで書かれた独自拡張Lispがあった。
Borland C++で動いた。try関数の第3引数がなんとも独特。
そうなんだ。オンラインで読めるんだけど黒川さんの訳は
好きなんで3150円、ま、いっかな。その辺で一杯飲んだと思ったら安いもの。
クンカをnconc モフをmap って感じか?w
うちの Mac OS X でも lisp.c のコンパイルが出来た これも 1,000 行以下の Lisp インタープリタだね
そんなことより Lisp の話しよーぜ
ガラパゴス化賛成。鎖国賛成。
>>960 そんなこと言ってると割り込みベースの言語とかが生まれちゃうぞ(割り込みの概念の持ち込みが実は日本発だとしってびっくり中)
>>958 「ガラパゴス化」って言いたい病を治さないとな。
963 :
デフォルトの名無しさん :2009/09/14(月) 00:48:46
「もうひとつのScheme入門」見てちょっと触ってみようかとDrScheme入れてみた。
http://www.shido.info/lisp/scheme3.html の段階で (cons 1 2) したら
> cons: second argument must be of type <list>, given 1 and 2
と言われる。原因は「言語」をHow to Design Programsに
設定してたせいみたいなんだけど(Essencials...なら通る)
How to ... で cons を通す(第二引数をリストにする)にはどう書いたらいいの?
SICP に書いてある内容なんて 職業プログラマなら一般教養として学生時代に勉強してるべきことだし 今更読書会で読む必要もないよね とか言ってみる
>>965 そこが学生モードのリファレンスなんだね。今度からそこに当たるわ。
HtDP の言語だと cons の第二引数はリストしか取れないようにしてあるみたいね PLT Scheme のデフォルト言語だと set-car! とかできないのと似たような話かな
>>963 普通のScheme言語(R5RSとか)でやるのが何故気に入らないのか理解できません。
例えるなら「JavaのプログラムがなぜC++で動かないのか」とか言ってるようなもので、答えるのに困ります。
言語が違うので通りませんとしか答えようがないですね。そのかわり普通のSchemeと違って
(cons 1 empty)
は通ります。
>>969 いやいや、気に入らないなんて言ったつもりはないよ。
今は「もうひとつの」を進めるつもりで、そのためには「普通の」を使う必要があるし
むしろ、なぜこんなものがあるのかわからなかった。
でも書き方をそのように制限/変更することが初学者の学習に役立つと
HtDPの設計者が考えたことは推測できて、その理由が気になったとこはある。
なにせまだ右も左もわからないので・・・
>HtDPの設計者が考えたことは推測できて、その理由が気になったとこはある。
ならHtDPを読むんだね。オンラインで読めるし。
http://www.htdp.org/ 「もうひとつの」を読むのにHtDPの設計者が何か関係してるのかな?質問の意図が全く不明です。
>>970 君の最初の質問が、
「HtDPとはどういうものなのでしょうか?」
なら、まだ分かるんだが…
>>970 右も左もわからなくても、「普通の」がある、という意味で「前」方向はわかってたんでしょ
それが HtDP じゃないっていうのもわかってるみたいなのに、なんで横に逸れて行くんだ
RMS!RMS!RMS!RMSぅぅうううわぁああああああああああああああああああああああん!!! あぁああああ…ああ…あっあっー!あぁああああああ!!!RMSRMSRMSぅううぁわぁああああ!!! あぁクンカクンカ!クンカクンカ!スーハースーハー!スーハースーハー!いい匂いだなぁ…くんくん んはぁっ!RMSたんの桃色の足の皮をクンカクンカしたいお!クンカクンカ!あぁあ!! 間違えた!モフモフしたいお!モフモフ!モフモフ!皮皮モフモフ!カリカリモフモフ…きゅんきゅんきゅい!! emacs21のRMSたんかわいかったよぅ!!あぁぁああ…あああ…あっあぁああああ!!ふぁぁあああんんっ!! emacs23リーリースれて良かったねRMSたん!あぁあああああ!かわいい!RMSたん!かわいい!あっああぁああ! emacsがUTFされて嬉し…いやぁああああああ!!!にゃああああああああん!!ぎゃああああああああ!! ぐあああああああああああ!!!vimなんて現実じゃない!!!!あ…emacsもよく考えたら… R M Sち ゃ ん は 現実 じ ゃ な い?にゃあああああああああああああん!!うぁああああああああああ!! そんなぁああああああ!!いやぁぁぁあああああああああ!!はぁああああああん!!C-g C-gぁああああ!! この!ちきしょー!やめてやる!!現実なんかやめ…て…え!?見…てる?表紙絵のRMSちゃんが僕を見てる? 表紙絵のRMSちゃんが僕を見てるぞ!RMSちゃんが僕を見てるぞ!挿絵のRMSちゃんが僕を見てるぞ!! M-x doctorのRMSちゃんが僕に話しかけてるぞ!!!よかった…世の中まだまだ捨てたモンじゃないんだねっ! いやっほぉおおおおおおお!!!僕にはRMSちゃんがいる!!やったよケティ!!ひとりでできるもん!!! あ、M-x doctorのRMSちゃああああああああああああああん!!いやぁあああああああああああああああ!!!! あっあんああっああんあアン様ぁあ!!シ、シエスター!!アンリエッタぁああああああ!!!タバサァぁあああ!! ううっうぅうう!!俺の想いよRMSへ届け!!ハルケギニアのRMSへ届け!
>>974 中途半端だな。
ハルケギニアのRMSって何だよ
能が足りないんだからほっとけ
M-x doctor の RMS はちょっと笑った FSF の所在に合わせるとボストンの RMS かな あとは RMS 以外の名前か
>>974 はチューリングテストか?
コンピュータープログラムが統合失調症患者を装って
文字列を生成させている?
"SICP"ってScheme流で書くと"SICK?(病気?)"ってことなんだな。
SICP = Structure and Interpretation of Computer Programs 最後の "P" は -predicate の意味ではないので、 "?" とはならない。
lispでは「〜であるか?」はpで表します。 従って、"lisp"自身が"list?(リストですか?)"を意味しています。
>>981 <⌒/ヽ-、___ はいはいわろすわろす
/<_/____/
> ROFLMAO<3 くわしく
>>893 またさらりと一番恐ろしい書込みをされる。
一生飽きないゲームが存在している、未知なるゲームの対戦相手が無数に
湧いて出てくるという事実は、自分にとっては、何事にも代えがたい事実
であることは確かです。
やっぱり、途中で飽きてしまうようなものはダメですよ。
987 :
986 :2009/09/14(月) 23:03:00
読み返してみたら、厨房くさい。まだまだやれることいっぱいあるのね。
馬鹿をやって評価される者とただの馬鹿とは 小学校あたりですでに分かれている 高校から大学にかけては仕上げの段階で 馬鹿をやってる暇はない
昔はオッサンばかりのスレだった気がするけど、 今は学生さんしか居ないスレなのね。
昔は東大生が居たぞ。
ホント学生だけなんだな…
黒板の前に座るのは学生と決まってるわけでして…
On Lisp に続いて、 ANSI Common Lisp Reference Book を翻訳してくれる学生さん募集、とか
>>989 ,
>>991 (student? 昔の住人)
=> #f
(sick? 昔の住人)
=> #f
(student? 今の住人)
=> #t
(sick? 今の住人)
=> #t
Zzzz
NSFW
WTF
QQQ
OMG
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。