1 :
デフォルトの名無しさん :
2007/02/25(日) 20:59:55
2 :
デフォルトの名無しさん :2007/02/25(日) 21:01:31
以上です 他に何かある人は貼っちゃって下さい
黒田氏関連をテンプレに入れるのはどうかと思うんだけど……。 いちいち同じ話題がループする現状ではやむなしか。
>>1 *** - EVAL: variable LISP has no value
>>13 黒田氏の文章はともかくとして、Shiro氏の反論は読む価値があるから桶
蒸し返すようだが、両者の論調の共通点は、SchemeはLispではない、というとこだな。 黒田氏はLispでない言語の弄り方は知らない(興味ない)のではないだろうか。
17 :
デフォルトの名無しさん :2007/02/25(日) 22:07:56
ずいぶんアッサリしたスレタイになったなぁ
■LISPとSchemeについて
LISPはFORTRANに次いで歴史が長く、そのぶん方言が沢山ある言語です。
今日まで淘汰を繰り返し、現在一般的にLISPと言えば商用LISPを統合する
役目を果たしたCommonLISPを指す事が多くなりました。
CommonLISPは複雑な言語ですが、実用的機能を積極的に言語仕様に
盛り込んでいるためコードチューニングが行いやすく、処理系によっては
C言語に匹敵する速度が出せるでしょう。
http://ja.wikipedia.org/wiki/Common_Lisp Schemeは淘汰で生き残ったLISP族の1つで、明快な概念を目指しており、
その独特な設計思想はCommonLISPの対極にあると言えます。
その基本仕様は他の言語の見本になる程完成度が高く、人気も強い
言語であるため、現在も進化を続けています。
http://ja.wikipedia.org/wiki/Scheme
>>16 >SchemeはLispではない
言葉の定義の問題なのか?
SchemerからしてもSchemeをそこらの野良LISPと
同一視されるのも心外じゃないかと
かっこついたタイトル好きだったのになあ
C++ と Java くらいには違うね
■その他のLISPについて いわゆる俺言語の範疇になります。 LISPは元々実装が簡単であるため処理系が数多く作られました。 その数はLisperの数だけ処理系が存在すると言われた程です。 Lisperならば一度は自分の処理系を作るべきでしょう。 新たな発見があるかもしれません。 Schemeは言語仕様が物量的に実装しやすいため、サブセットや 個人で目指せる実装として対象になる事が多い様です。 CommonLispは、それに変わる言語仕様としてISOLISPが提案されたり しましたが、普及しているという話は聞かないので無駄だった様です。 CommonLispの機能が欲しいなら素直に既製品を使いましょう。
× ISOLISP ○ ISLISP
まだ終了するのは先なのに、ずいぶん入札されてるなぁ… …と思ったら二人で競り合ってるだけか。
■EmacsLISPについて 統合環境としての評価が先行しがちですがLISP実装の1つです。 年代的に古臭いLISP仕様に基づいた実装なので、現在は 見るべき所は多くありませんが、アプリケーションへのLISPの 組み込み方としては今でも参考になるでしょう。 日本ではLISP=Emacsと認識する人も多く、実質LISP存続の要に なっていた事も忘れてはいけません。これまで一部でviに並ぶ 変態エディタと言われ続けてもなお愛用し続けてきたEmacs贔屓の 方々には感謝すべきかもしれません。
Emacs嫌いなlisperっているの?
Paul Graham が Emacs じゃなくて vi を使っていると知ってビックリした
Emacsは好きだがxyzzyは嫌い
xyzzyはCommon Lispだから好き
DrSchemeがよく固まる。 けど、Edwinの使い方がよくわからないのでDrで良いやw
Emacs はともかく、Emacs Lisp は好きではないな
ちゃんとしたCommon Lisp上で作り直してほしいね
今の若い人は知らんだろうが、Emacs LispだってGoslingのMocklispよりはマシなんだぞ
>>32 いずれ互換性の壁にぶち当たってうまくいかなくなる
漏れけっこう emacs と vi 並べて同時に使ったりするw
viでもけっこう書きやすいぜ?
vimなんかlispのインデント完ぺきだしな テキストオブジェクトでS式移動も簡単だし
書くだけなら vi でもあんま不便しないけど、やっぱ SLIME があるからなぁ。 SLIME on vim はまだまだって感じだし。前スレ 1000 ワロタ。
リリカルLISPと地獄LISPもテンプレに加えてください
LISP は機能不足の Scheme の呼称じゃないんだから Scheme と名乗ればいいのに
日本語でおk
リリカルLispの開発日誌より [おれんじ・きゃんどる] 2月23日(金) DSハード上でのエディタ&インタープリタ DSLisp開発中!! ちょっと楽しみ
地獄 LISP って真偽が #t #f なんだし Scheme って名乗ったほうがいいんじゃね。 と思っただけ。
それだけだと弱いだろう オレLISPで良いじゃない Schemeと違ってLISPはグローバルな名称なんだから
そうか?LISP と Scheme で一番多きな違いじゃない? T-NIL と #t-#f って 互換性ないし。LISP 方言のなかで #t #f なんて唯一 Scheme だけじゃん。 というか Scheme の特徴しかないのになんで LISP なんかなーと。 フルスペックの実装じゃ無いから遠慮したんかなーと思って LISP != Scheme の機能不足版 だよと。入門向けだとの事なんで LISP と Scheme は区別しとくほうが くだらん事で悩まなせなくて親切だと思う。
テンプレのSECDR-Schemeの先が消えてるね… 興味あるんだけど、どっかにない?
>>48 大分前から消えてた気がするなあ
一応、LispMeとかがSECDマシン(を拡張)で実装してたりするお
>>47 なんで真偽値の扱い程度で大騒ぎしてんの・・・
薄ら寒いんですけど
Schemeを名乗るには条件全然満たしてないし LISPの方言なんだからLISPでいいだろと
空リストがシンボルなのかどうかのほうが重要な分岐点だな
空リストがシンボルなわけーねだろ
クマー
>>51 Scheme を名乗るのに必要なのってどんな条件?
RRS くらいだと継続も末尾再帰の最適化も規定されてないよ。
(symbol? '()) => ()
Schemeは継続が特徴的だが、半端に実装されてる(偽)Schemeも多いよな
(symbolp '()) => T
>>55 RRSて何?
R5RSには
>真正な末尾再帰は,Steele とSussman のオリジナル版Scheme
>にあった中心的なアイディアの一つだった。
とあるけど。
要するに R1RS のことだろ
(symbol? ''()) => ()
nilとtはシンボルじゃないよーと思う。でもシンボルだから困っちゃう。
>>55 せせこましい人だね。
仕様を満たしてない場合の区別なんて主観でしかないだろ。
ご自分でも書いてる継続と末尾再帰が特徴的と捉えてるんなら
それの有無で勝手に判断しろよ。
今更古い仕様書引っ張り出してきて昔はこうだったとかいう
線引きを今更やって何の意味があるんだ。
とりあえず代表的な教科書としてSICPのコード試せるなら Schemeと見なしていいんじゃない? 継続は概念ぐらいだけど、末尾再帰前提なコードは出てくる。
フレームは厨房の始まりですよ。
>>62 schemeなら#fじゃね?ってことじゃね?
>>64 何か困ることある?とCommon Lisperのおいらが優しく聞いてあげよう
レキシカルスコープで変数と関数の名前空間が同じなら Scheme だろ
>>70 シンボルを機械的に区切りで分解(例えば-)してその結果のシンボルを
多値で返すプログラムを書いたとする。入力がエラーの場合はnilを返す。
nil-to-falseというシンボルを与えると、nil、to、falseが返る。
使う側が多値の最初しかみないで判断した場合エラーと誤認する。
この例はこじつけだけど、かのポールグラハムも自分の著書で
曖昧性に困ってると愚痴ってるお^^;
>>69 全てアフォーダンスで片付くってもんでもないだろ
>>71 レキシカルスコープはCommon Lispを含め多くのLispで導入されてるから現代ではScheme
の特徴とは言えないが、値と関数値を区別しないのはSchemeの特徴と呼んでも良いかも
しれないね。
funcallはどうも印象悪い。 最初にLisp勉強し始めたとき「データとプログラムを同等に扱える」とか言われて なんか惹かれたのに、 すぐ後で「実は組み込み関数と自作関数は同等に表現できません」って言われてこけた。
根拠も示さずに誤解とか言われてもねえ
根拠も示さずに誤解とか言われてもねえと言われてもねえ
揚げ足や言質取られるのが嫌だからってぎりぎりまで意図をはっきりさせない姿勢は感心しない
>>77 > 「実は組み込み関数と自作関数は同等に表現できません」
これ意味不明だよ。組み込みかどうかと funcall なんて関係ないよ。
どういう意味で言われたのか文脈書かないと煽られて当然じゃない?
(嫉妬 77 人気)
煽りたきゃ黒板にでも書いてろお前ら
欠陥を突かれないため必死に論点にすり替えた「つもり」になって苦笑い。
反論も展開できずお茶を濁してる様は見てて気味が悪い。
まるっきり頭の悪い集団にしか見えないが、それでほんとに満足か?
そろそろ退場してもらいたいんだけど。
>>83 その文はともかく
>>77 の大筋は初心者が感じる率直な感想に見える。
関数の違いについては追々判る事だし
funcallにうんざりしてる一点において文脈なんか関係ないと思うが。
欠陥ってwww
wの数の増減だけじゃキャラ分けは無理だと思うよ
キャラ分けってWWW
>>91 勘違いなら正してやれよ。
コンセンサス取るだけのゴミレスなんかしてないでさ。
正そうにも言ってる意味が全く理解できない。誰か意味を説明してくれよ。 なんで自作関数とか出てくるの?
えっと、この流れずっと続くわけ?
>>93 91が「勘違いだなぁ」とか言って詳しそうだから聞いてみなよ
97 :
デフォルトの名無しさん :2007/02/27(火) 21:42:59
>>93 理解できないならスルー推薦。
話の腰を折るなよ。
schemeのcurrent-continuationは失敗だと思う。 それだったらgccみたいなLabel as Valueとcurrent-environment を導入してくれた方がありがたい。 協調型スレッドもどきを作れたとしても、コストが掛かりすぎる。 IPとその時の環境が見えればccは実装できるんだから、 個別に取得できるようにすべきだった。
99 :
デフォルトの名無しさん :2007/02/27(火) 22:55:24
Common Lispで定義された関数の定義部を見る方法ってありますか? (↓の????にあたるものがあるかという意味) (defun add1 (x) (+ x 1)) ; => add1 (???? add1) ; => (+ x 1)
つうか、(symbol-function 'add1) とかかな。
102 :
デフォルトの名無しさん :2007/02/27(火) 23:23:44
それだと #<Closure〜> みたいな感じになるのですが、 (+ x 1) というリストの形で欲しいんです。
>>102 処理系独自の拡張とかを調べれ。
コンパイル後のコードを吐く関数とかがあるはず。
>>102 Common Lispの仕様には存在しない。
(処理系によってはそういうリストを必ず保持しているとは限らないので)
処理系依存でよければあるかもしれない。
S 式を取れるかどうかは処理系依存だけど function-lambda-expression が 仕様として定義されてるだろ。
コンパイル後のコードなら disassemble だけど、リストは返ってこないね。 本当の Common Lisp ではないけど、xyzzy なら system:closure-body というのがある。
>>77 の勘違いは、funcall は組み込み関数と自作関数とかは関係ない。
入門Common Lispスレ 546 より転載
> Common Lisp では関数呼び出しの先頭はシンボル(関数名、マクロ名、スペシャルフォーム名)かラムダ式
> じゃないといけないと規定されているから。
>
> そうなっている理由は、それだとネストが深くなったら見難いとかだろ。
> ((((foo) 1) 2) 3)
> 明示したほうがいい。
> (funcall (funcall (funcall (foo) 1) 2) 3)
> まぁ、チームでやってるときに「開き括弧を数えてください」と「funcall の数を数えてください」のどっちが
> 言いやすいかって話だよな。
フォームの先頭は「評価しない」ということで統一したのだろうね。 CLでは変数値と関数値は別物だから、評価することにすると曖昧性が出てきちゃう。 (関数値優先とかすれば一見良さそうだが、コンパイル後に関数定義されたときなどの 扱いが面倒になる)
そもそも別にするのが特別扱いで胡散臭い
Lisp-1 と Lisp-2 議論はされ尽されてんだから、いちいち蒸し返さなくても…。 別にしないと関数名と被る名前が変数に使えないだろう。 メリットデメリットあるんだし、誰も君に Lisp-2 を使えなんて 強制しないんだからほっとけばいいじゃん。
突然ファビョるわ、蒸し返すわ、おまいらときたらw
>>110 実用性を重んじればこその名前空間分離でしょ。
関数と変数がいっしょくただとどんだけバグが混入するかわかったもんじゃない。
別のほうがコンパイラは楽な気がするなぁ。Common Lispはコンパイル前提の言語だが、 Schemeはあまりネイティブコンパイルを考えてない気がする。(Shiro氏に反論されそうw)
別にいいんじゃね。Matz さんの話も聞けたらおもしろいんじゃない。
なんでバグが起きやすくなるんだろう
>>50 >>47 は、作者自ら WiLiKi で「Scheme 指向なんだけど継続がないから LISP」
と書いてるのに対してなんじゃない?俺もあの仕様なら Scheme を名乗るべき
だと思うけど。LISP っても「リスト遊び」レベルの古典的な処理すらそのまま動かないし。
「元祖」LISP 1.5はLisp-2だが、フォームのcarを必要であれば評価するので、
>>109 のような
問題が実際に起きると思う。その後のMacLisp系にfuncallが導入されたのはその反省がある
んじゃないかな。
つーかこのイベントってわざわざそう言う人間ばかり集めているように思える 悪趣味じゃないか?
朝まで生テレビと同じ手法だなw
>>123 朝生は終わった後に敵味方関係なく楽しく酒盛りしてると北野誠が暴露してたけど、
これはマジ禍根が残ったりしてねw
>>120 黒田さんも気の毒だねぇ…。どこにも「Matz は〜」なんて書いてないじゃん。
むしろ「Lisp を知らない奴に限って」といってんだから Matz さんは対象外に近いだろ。
「自称」Lisp 好きで、Emacs-Lisp パッケージのメンテナ経験があって、
CLOS を参考にして、たまに CLtL を引いて仕様を考えるようなハッカーが
「Lisp を知らない奴」なんか?その日の日記は悪い Matz が出ているような気がする。
>>112 の4人のうち2〜3人くらいはこのスレに混じってる気がするw
>>114 みたいなステロタイプの人間ってどうよ
実用性がほんとにあると疑いもしないのか?
妥協の産物だとは微塵も思わないのか?
名前空間分離だとか、もっともらしい言葉並べて
自分を騙してるだけじゃないか?
そんな物が本気で必要だと思ってるのか?
何故パッケージじゃダメなんだ?
>>115 どの辺が「楽な気がする」のかね。
>>126 妄想乙。まぁ、俺も最近の内容のない一行レスとかはお前さんの自作自演だと妄想してるけどな。
>>127 しつこいなぁ… Lisp-1 vs Lisp-2 を読めって…。
一例を挙げるなら、おまえは、関数名とあたらないように変数名を
不自然な名前にしたことないのか? vector -> vec とか list -> lst とか?
もうここ二十年以上さんざん議論され尽してんだから、ちょっとは自分で調べろよ。
トートロジーって言葉は例の赤いスパゲッティのコピペで認知が広まったと思う 2chて偉大だよね
他のスレに比べるとそれなりにレベルの高い人が集まっているところだと思うけど IDが無いとやっぱりこうなっちゃうね
延々と粘着煽りするやつがひとり居つくと、たとえ残りの参加者が全員 GLS だった としても、こうなるだろうねぇ。ID 欲しい。
そうでも無いと思うけど。 このスレのレベルは、貼られるソースコードの数に比例している(と言ってみるテスツ
>>127 > どの辺が「楽な気がする」のかね。
carがsymbolであれば、素の「関数」を呼び出すものとしてコンパイルできるよね。
(例えばfastcall化できる)
素の関数とクロージャで呼び出しシーケンスが違う場合など、コンパイル時にどちらか
確定できないのは効率を考えると嬉しくない気がするんだよ。
ま、気がするだけだから、あまり深くつっこまれても困るが。
>>120 一番気になったのが、下の検索ワードに入ってる「めこすじ」だw
137 :
77 :2007/02/28(水) 06:17:12
77だけど、実際に初心者だから、一連のスレは割と参考になってるですよ。
ただ、俺が言ってることを「自分の知ってるCommon Lispの詳細なところ」と
勝手に繋げて、全然別の方向に話を伸ばしちゃってるヒトタチがいるのも確か。
俺は「組み込み関数と自作関数をまったく同じ表現で呼び出すことができないことに驚いた」から
「funcallの印象が悪い」と言っているのであって、funcallとはどういう機能か、何の為に
存在するのか、ということに関する自分の認識なんてまったく書いていないですよ。
なのに「funcallとは
>>77 が考えているようなモノじゃない。勘違いしてる」とか言われても困るです。
結果的に色々教えてもらえたのは嬉しいし、実際今の俺がfuncallの定義を正しく述べようとしても
そこにはボコボコ穴があるとは思うんですが、かといって言ってないことに突っ込まれると苦笑いです。
>>77 に「勘違い」があるとしたら、「funcallを使わずに書くのが普通」であるという場合ですね。
書けるのに書けないと言ってるから、これはもう完璧に「勘違い」。
でも
>>108 とか見ると、つまり結局要するに、俺の言ってる通り「書けない」んでしょう?
> 「組み込み関数と自作関数をまったく同じ表現で呼び出すことができないことに驚いた」
そもそも、ここが勘違いだと云われてるんだけど。
「組み込み関数と自作関数をまったく同じ表現で呼び出すことができる」
が真実。むしろ、同じ表現で呼び出せないケースを教えてくれ。
>>108 は関数呼び出しの先頭が「関数名」であればいいんだから、
その関数が組み込みだろうが自作だろうが関係ないよ。
139 :
77 :2007/02/28(水) 06:29:42
>>138 どうも俺の初心者視点がおもっくそ初心者すぎて
もうちょっと先のところ話にどうしても再解釈されちゃうみたいですな。
俺が追いつかない限り会話すら成り立たないので、もうちょっと修行してからまた来るですよ。
修行云々つーより具体例を一個出してくれればいいんじゃないの? 組み込み関数: (+ 1 2) 自作関数: (defun my-plus (x y) (+ x y)) (my-plus 1 2) 自作関数と組み込み関数で呼び出しについては同じに見える。funcall 使う時も (funcall #'+ 1 2) (funcall #'my-plus 1 2) で同じに見える。うーむ。
>98が何を言っているのか、 誰かアホな俺に説明してください。
>>139 ああ。失礼だが、もうちょっと日本語を習得してから来て頂けると有り難い。
「初心者」を自称する奴は結局ダメだという例がまた一つ増えてしまったな。 本人は謙遜のつもりかもしれんが。
Common Lispのフリーのコンパイラでおすすめのものは何ですか?
SBCLかな
夢の中で、Lispが国技になってた…
のび太のあやとり思い出した
夢の中でカッコつけてる俺がいた…
おまえら一生やってろよ
>>138 その理屈っておかしくない?
((lambda (x y) (+ x y)) 1 2)は動くんでしょ?
>>151 日本語で書いて頂かないと理解しにくいです
>>151 お前が言ってるのは lambda form で、
>>138 が言ってるのは function form だ。
((lambda ...) ...) は (funcall #'(lambda ...) ...) の syntax sugar。
form の car が評価されてるわけではない証拠に、以下は動かない。
(#'(lambda (x y) (+ x y)) 1 2)
funcallもsyntax sugarにすりゃいいのに
上でも書かれてるとおり、実行時までfuncallの要不要を判断できないんだよ。 字面としてはどちらもcarがsymbolだからね。
やっぱり Scheme に限るな
Scheme も form の car に応じて評価のやり方を変えるだろ
>>158 そういう意味で言うと、Schemeのcarは「必ず」評価される。
Common Lispのようにコンパイラでガリガリにネイティブチューンすることは意図して
いないように思える。(declareとか無いし)
必ずじゃないよ
ちょっと流れをぶった切りますよ。 schemeで ((lambda arg (write arg)) 'a 'b) とした場合、表示されたのは (a b) でした。 なんで ('a 'b) になんないの?
渡される直前に評価されるから 'aはシンボルaをquoteした物だから評価したらaになる ((lambda arg (write arg)) ''a ''b) => ('a 'b) 二重にquoteしておけば('a 'b)が返るよ
このサイトの集計での common lisp の不人気は異常。どうやったらそうなるのか不明。 あと scheme は誤検出が多いんじゃないかな。
すべての世論調査なんてそんなもんだよ
出品者乙
>>167 上がってきたじゃないか。良かったね。w
gaucheで 全ての引数を評価してから defineの動作をするようなマクロを作りたいのですが、 どうすれば良いのでしょうか。
>>170 言ってる意味がよくわからん。
簡単なテストケースかいてみ
172 :
170 :2007/03/03(土) 19:31:41
>171 こんな感じです。 (define (symbol-append 'a 'b) 1) ab ;=> 1
173 :
171 :2007/03/03(土) 19:56:46
>>172 こんなんでどうや
(define-syntax eval&define
(syntax-rules ()
((_ var body ...)
(eval `(define ,var body ...) (interaction-environment)))))
174 :
170 :2007/03/03(土) 20:33:55
>173 ありがとうございます。 ポールグラハムの本にevalはあまり使わない方がいいとか書いてあったので、 その方向で考えてたんですが、 やっぱり使わないとダメですかね。
175 :
デフォルトの名無しさん :2007/03/04(日) 00:21:33
Common Lisp なら setq/setf に対して set があるけど、Scheme には set! に対して シンボルの値を変更する関数がないからね。
Schemeのシンボルは(所謂普通の)Lispのシンボルとはちょっと違うんですわ。 例のShiro氏の黒田氏への反論にもちょっと出てくるけど。
177 :
デフォルトの名無しさん :2007/03/04(日) 01:15:52
なんでなんだろうな。 仕様のバージョンが上がればリッチになったりするのかな。
うまく説明できないけど、(所謂普通の)Lispではプログラム=S式。 ところがSchemeではプログラム=【もっと抽象化された何か】なんだな。 プログラムは読み込まれた瞬間にシンボルなどという俗世間から解脱してしまう。
R5RSのSymbolsの節に書いてある、slashificationって何? _Note:_ Some implementations of Scheme have a feature known as "slashification" in order to guarantee write/read invariance for all symbols, but historically the most important use of this feature has been to compensate for the lack of a string data type. と書いてあるものの、そのslashificationて何かは説明されてなくて悩む。
たぶん通常使えない文字をエスケープすること
>174 マクロ展開後が以下の形になる事が確定的ならevalは必要ない。 (define symbol expression) 170の条件だとsymbolに該当する式が展開後も式であり続けるので defineの構文に当てはまらない。171のやってる事はそれを 無理矢理構文に当てはめるためにevalを使っている。 例えばマクロに渡す物を(symbol-append 'a 'b)という式ではなく、 a bという確定的なパラメータとして与えてやれば symbol-append相当の処理をマクロ展開フェーズに移す事ができる。 schemeでの定義は環境に作用するものであって シンボルに直接束縛させる物じゃない。(そういう処理系もあるだろうけど)
emacsで関数宣言とかを折りたたんだり展開したりできないものでしょうか.
183 :
デフォルトの名無しさん :2007/03/04(日) 21:46:40
>182 outline-modeのこと? scheme-modeとかで、M-x outline-minor-mode して C-c @ C-t とかするといいかも。 あとはinfoでも読んで。 気に入ったらadd-hookしよう。
184 :
170 :2007/03/04(日) 23:34:14
>181 ありがとうございます。 よくわかっていないんだと思いますが、 >マクロ展開後が以下の形になる事が確定的ならevalは必要ない。 >(define symbol expression) とのことですが、仮に(define "foo" "bar")となってもエラーを吐くだけで、 それじゃだめなんでしょうか。 構文が特殊な順序で引数の評価を行うまたは行わないものであって、 マクロが構文を作るものなら、 なんかもっと積極的に引数の評価の順序を制御する仕組みが、 既にありそうな気がするんですが... この場合は、通常の関数と同じ順序で引数を評価してくれるdefineがほしいだけなんです。 ただ、この考えはあまりうまくない部分があるような気もしています。 >schemeでの定義は環境に作用するものであって >シンボルに直接束縛させる物じゃない。(そういう処理系もあるだろうけど) すいません。 これはどういう事なのかいまいちよくわからないので、 もう少し詳しく説明していただけませんか。 上のようになっていない理由のひとつがここにありそうな気がするんですが...
>>184 引数の評価順序を決めたりするのは、あくまでも展開した結果の
コードが既存の構文を組み合わせてそういった処理を真似る
という事で、マクロによって構文的にそう見えたとしても言語仕様から
逸脱した事をしているわけじゃない。
大域環境に対して副作用を起こせる最小単位はdefineとset!しか
ないのだから、その構文に直せないのならそれ以上の事はできない。
環境は実質的にそのスコープから見える変数として束縛された、
シンボルと値の対の表の事だが、schemeではプログラム的に
シンボル名から環境を参照する様な方法は提供していないので、
evalという例外を除いて動的に変数名を決めることはできない。
最後の部分は、処理系によっては環境の表に当たる部分を
直接操作できる物があるという事だけど、代替手段がなくて
そういう物に頼るなら最初からevalで組んでしまった方が良い。
ポールグラハムが気にしてるのは効率の問題だろうから。
>>185 いわゆる黒田論争の本質もそこなんだよな。
黒田氏がそこまで理解してるかどうか別にして。w
まあマクロでシンボルを扱えた方が便利な場合も多いよね。 R5RS では quasiquote と同等な syntax は定義できないけど CL ならできるとか。
ほとんどのScheme処理系がCL流のdefmacro相当品を備えていることでも、とりあえず 需要があることはわかるよな。
>>187 え、できないの?
定義できるようなことがR5RSに書かれてあったと思うんだが。
×ぽーる・ぐらはむ ○ぽーる・ぐれあむ
191 :
170 :2007/03/05(月) 14:11:22
>185 ありがとうございます >引数の評価順序を決めたりするのは、あくまでも展開した結果の >コードが既存の構文を組み合わせてそういった処理を真似る ... ええと、つまりそもそもマクロはプログラムを生成するプログラムを書くためのもので、 引数の評価順序を制御して、構文を作るものじゃない。 たまたまそう見えるだけ、ってことでしょうか。 >schemeではプログラム的に >シンボル名から環境を参照する様な方法は提供していないので、 CommonLispではあるシンボルがどの環境に設定されているか参照できるのですか? >ポールグラハムが気にしてるのは効率の問題だろうから。 ANSI CommonLispのマクロの章には二つの理由が載っていて、 ひとつはそうでした。もうひとつはレキシカルクロージャが利用できないと言うことでした。 二つ目の理由は今回の例では問題にはなりませんでしたが、 マクロがユーザーが定義したマクロや関数に展開されて、 それが評価される必要がある場合に問題になるような気がするんですが... 長々とすいません
192 :
170 :2007/03/05(月) 14:12:34
>190 orz 間違えてました。 手元に本があるのに...
>>191 単に引数の評価順序はマクロ展開した後の式次第ということじゃないの。
マクロ自体に引数の評価順序を左右するような機能があるのでなく。
そもそもが評価順序なんて問題ではないと思うのだけど。
あえていうなら順序でなくフェーズか。
defineは変数の定義または代入なんだから、変数名を式の値から得るということは
どの変数に代入するかを実行時に決定できるようにするってことを意味する。
コンパイル時にそれが決定できる通常のdefineとは本質的に異なるものにならざるを得ない。
わかってないのにCommon Lispを引き合いに出しても混乱するだけだから
やめといた方がいいと思う。Common LispのシンボルとSchemeのそれは別物。
元の質問は「Scheme で」ではなく「Gauche で」なんだから R5RS 一般の 話をするのは不親切なような。 Gauche なら CL 式マクロも使えるからコンパイル時に評価する (define-macro (eval&define var body) `(define ,(eval var (interaction-environment)) ,body)) みたいなのもイケるし。
いろんな人のHPを見てるとGaucheを使っている人が多いみたいなのですが Gaucheを使っている人は日本語が扱いやすいから使ってるのでしょうか? 日本語使う予定がない場合は他にお勧めはないでしょうか?
処理系に迷ってるうちはまだまだ。 迷わず使えよ、使えばわかるさ
多くは無料なんだから迷ってる間に使ってみればいいじゃん。 日本語別にしてもGaucheはSchemeとしては良くできた部類だと思う。 それ以上にお勧めを聞くなら具体的な用途・要求を書いたほうがいいよ。
VBみたいに開発をGUIでぽちぽちできてWindowsと親和性が高いのがいい! とか言うんでなければGaucheを使わない理由はない 日常用スクリプト言語としてはよく出来てる Windowsで走ってGUIが付属してるDr. Schemeってのもあるけど 学習用なのでツールとしては使えないんじゃないかな
Gaucheは素人な漏れにはドキュメント類も色々と勉強になる。
>>200 それはデカいよな。日本語の詳細なドキュメントがあるってのはいい。
その仕様が何に基づくものなのか(R5RSとかSRFIの何番だとかCL由来とか)も明記
されているので学習の基点として有用。
>>199 DrScheme というか PLT Scheme は学習専用じゃないよ。
IDE だけじゃなくて MzScheme というコマンドラインのインタプリタもあるし、
mzc という C 経由でのコンパイラもある。
v300 以降で Unicode をサポートしたので日本語も使える。
PLT は JIT コンパイラなんだっけ?
>>203 そういう君のやりたいことは「マトモなこと」なのかい?
\|\_\ ∠ /|/ |○| |○| _| ̄|○ _ _ ○| ̄|_ / /|) (|\ \ | ̄| | ̄| / / \ \
__ _ お雑煮の展開図が なんという\|\_`∧_∧ ∠ /|/ 可愛く見えて仕方がない・・・ 生返事だ・・・ |(.( ;´Д`)ヘギョー _| ̄|○ _(U U)つ ○| ̄|_ お雑煮の展開図って何だよ / /|) (|\ \ 頼むからそういうのは脳内で勘弁・・・ | ̄| | ̄| / / \ \ おいお前ら schemeの大ファンのshiro氏なら 今すぐこの発言を 自宅でピクミソしてたよ・・・ 撤回しろ・・・
>>203 …テンプレよめよ。まったく延々と同じ人間が粘着投稿してるんじゃないかと勘ぐりたくなるな。
沢山釣れる餌だからね
つーか同じ人しか見てないし
>>209 もう食傷気味で辟易だと言うだけでつられた事になるのか?
>>211 なるのかもしれんねぇ。
何らかの反応されただけで釣れたという解釈の脳味噌もあるみたいよ。
まーこーいう流れになった時点で釣れたんでしょうな
燃料投下→ウザがらる で釣れたっておかしいだろ・・・常識で考えて・・・
そういう話を続けてる時点で釣られてるわけだが>俺もなw
全然関係ないけど(いやフレームの元に関係あるけど)件のschemeとlispのって話って 元ネタの名前が黒と白なのな。
うまいこと言うなぁ
219 :
195 :2007/03/09(金) 14:02:57
結局Gaucheにしました。 目的はc++のプログラムのメタ制御(または逆)がしたかったので c++とのインターフェイスについて概要で言ってる Gaucheがいいかと思いました。 あとは「普通のやつの上をいけ」というドキュメントでマクロのすばらしさを 語ってるので、マクロの使えるschemeというのも理由です
マクロのつかえないschemeなんてあるの?
non-hygienic なマクロってことでしょ。それでも使えない処理系は少ないと思うけど。
処理系作った事あるけど、hygienicマクロの構築に挫折しました めんどっちいよあれ
hygienic-macroはSRFIにすべきだったんかな。 そうするとRnRSにはdefine-macroが入ると。 やっぱマクロはLISPの基本のリスト処理でやりたいよなあ。 hygienicは規格書読んでもいまいち何のためにあるのか不明だし。 define-macroの欠点として、こういう欠点がありますよ、 気を付けて下さいね、という説明だけでいいと思うけど。
>>225 Scheme原理主義としてはリスト処理言語「ではない」のでdefine-macroなどというものは
到底許容できるものではないのだと思う。基本的にSchemeがLISP「ではない」ところだ。
でもマクロが無いのでは不便。その妥協点がhygienic-macroなのだと思う。
>>226 さん
もう少しくやしく書くと
> Scheme原理主義としては(Schemeは)リスト処理言語「ではない」ので
> (欠点のある)define-macroなどというものは到底許容できるものではないのだと思う。
SchemeはLISt ProsessorではないのでLispみたいにマクロをリストで処理する
手法を選択しなかった。
という認識でよろしいでしょうか ?
LISP の名前の由来はもう言語そのものとは関係ないだろう。 Lisp Machine の時代からすでにリスト以外もバリバリ処理してたし…。 誰も「LISt Prosessor だから (ry」なんて基準で判断してないと思うよ。
確かにそんな表層的な問題ではないな
塩山市無くなったのか
233 :
デフォルトの名無しさん :2007/03/11(日) 23:38:32
>146 lispマシン作った俺のボスが似たような話してた。 全部lispに見えるけど、 マイクロコードだかなんだかに、 アセンブラで書いたlispインタープリタが入ってたんだと。
233はshiroさん?
LISPマシンが流行った時代のCPUはマイクロコード制御が一般的だったからね
236 :
233 :2007/03/12(月) 22:27:51
>234 違います 俺もはよshiroさんみたいなハカーになりたい、ならなきゃorz
「Lisp マシン作った」だから日本の某大学か某大学の学生だろ。 Symbolics の Genera は最後は Alpha アーキテクチャに賭けてたわけだし。
富士通の人とか電電公社の人とかだな
ちょっと古くていいなら、TUS の windows 版も動かすのは楽。 図形言語使える奴はなかなかおもしろいと思う。
>>239 英語ページからダウンロードできたけど、どのヴァージョンも
インストールしようとすると↓が出る。
---------------------------
エラー
---------------------------
The setup files are corrupted. Please obtain a new copy of the program.
---------------------------
OK
---------------------------
Windows2000ならOK
243 :
241 :2007/03/13(火) 20:20:50
当方XP λ.................
244 :
デフォルトの名無しさん :2007/03/13(火) 20:24:44
245 :
デフォルトの名無しさん :2007/03/14(水) 00:44:33
電電公社のほうか
windowsな人は xyzzy がいいのでは?
Schemeのコードを書きたいならWindowsより黒板がいいですよ(^^)
黒板… (´;ω;`)ブワッ
GTEditたのしいよGTEdit
就職の面接で「Scheme使えますよ」と言ってみたら 「Lispみたいなやつだっけ?」ぐらいの反応しか帰ってきませんでした。orz
>>253 Scheme ってなんですか?って聞かれないだけマシかと
そうだな。「Lispみたいな奴」と知ってる奴が面接してるという点だけを評価すれば、 かなり見所のある会社だと言えるだろう。
求められてもいない Scheme のスキルをアピールしちゃったの? 現実は言語を好みで選べたりするところは少ないんじゃないかなぁ。
Schemeのスキルがある奴==言語の好みにうるさい奴と言う発想なのか?
とりあえず「Lispみたいなやつだっけ?」と言ってみて253氏の反応を見たのだろうな
相手が人事の人なのか呼ばれてきた開発の人なのかによるんじゃまいか?
その面接官はポール・グレアムのエッセイ読んでないな?
261 :
デフォルトの名無しさん :2007/03/15(木) 00:11:19
CommonLisp Scheme Part10
970 名前: デフォルトの名無しさん [sage] 投稿日: 04/08/04 09:32
Graham氏はJavaに対して対抗意識剥き出しにしてるが、
CommonLispやSchemeの普及を阻害してるのは、本当は
PerlやPythonだと思う。現代版Cobolに対してLispの
優位性をアピールすることにどんだけの意味があるのか。
971 名前: デフォルトの名無しさん [sage] 投稿日: 04/08/04 09:47
>>970 それがねぇ。Scheme教えようとしても、「就職に役立つのはJava」なんて
言われちゃう世の中なんですよ。
977 名前: デフォルトの名無しさん [sage] 投稿日: 04/08/07 01:42
>>971 就職の面接で「Scheme使えますよ」と言ってみたら
「Lispみたいなやつだっけ?」ぐらいの反応しか帰ってきませんでした。orz
978 名前: デフォルトの名無しさん [sage] 投稿日: 04/08/07 10:22
>>977 その答えが返ってくるだけまだよい方では・・・
うおっ!俺は釣られたのか。
釣られる快感こそが2chの醍醐味ですよ
なるほど。継続が何なのかわかったような気がする。
洒落が効いていてたいへんよろしい☆
スコープを抜けてもどこかに継続が残ってるかもしれないので油断できませんね
268 :
デフォルトの名無しさん :2007/03/15(木) 17:59:30
schemeでCommon Lispのようなリードマクロを定義する方法はありますか?
ないよ
CommonLispでScheme作ればいいんだよ
三日で作れそうだな
Scheme できないことだらけだな
Schemeでリードマクロを備えたリーダを書くことはできる。 Common Lispのような便利言語ではないから仕方ないさ。
c.l.l の gavino といい、このスレといい、 定期的につまんない煽り荒しがくるのは世界的傾向なのかなぁ…
xyxxyのscheme-modeをどなたか恵んでくださいませんか?
間違えた; xyzzyですね。
>>278 ずっとまってた。表紙(・∀・)イイ!!
>>278 おめ!けっこう分厚いね。ANSI Common Lisp買おうかと思ってたけどこっちにしようかな。
>>276 > xyxxyのscheme-modeをどなたか恵んでくださいませんか?
持ってるけど、アップローダの心当たりが無い。
どこかアップローダを指定してくれたら、そこにアップします。
>>278 うおぉぉおおおおおおお
かっこいい!!
こういう落ち着いた表紙の本がもっと増えればいいのにねぇ
向こうの本を日本に持ってくるとだいたいかっこ悪くなっちゃうのが不思議
ググってまでうpする気はないってことでしょ。 まあ俺は別にxyzzy使いじゃないしどうでもいいけど。
と言うか Scheme するなら Emacs 使えと
vimは異端ですか、そうですか・・・
Schemeするなら黒板を使いなさいよ。
黒板は使っても 黒ちゃんは使わない
>>278 ぜってえ買うから覚悟しとけくぬやらう!
>>278 野田さん、おめでとう!
なかなか良い装丁だね。もち買うですよ。
>>278 出荷は来週末だよね?
アキバが近所なので(最近じゃ行きたくも無い変態向け岡場所になっちまったが)大きな書店で買うよ!
すみません その変態ですが買わせていただきます
>>278 この表紙って CLISP のマークから来てるの?
>>296 構文『木』のイメージなんじゃないの。
なかなか良い感じの表紙だね。
>>297 オレも最初に見たとき、作者はユダヤ信者かと思った。
枝の数が9本じゃなくて7本だから、違うのかと思ったら7本でもおkなのね。
>>297 そうなんだ
お恥ずかしい
>>298 最近買った技術書の中でも一番かも
SICP の表紙も気に入ってるけど
おれ、たった今、注文完了しちゃった。
エルゼビアか日立か
304 :
デフォルトの名無しさん :2007/03/19(月) 12:13:37
見たこともーない木ですから 見たこともーないー処理になるでしょう
On Lispのサイトが丸ごと落ちてるぜ 読みかけだったのに……月末まで生殺しか……
今回の書籍化に当たっての閉鎖だったら萎えるなぁ
nslookup user.ecc.u-tokyo.ac.jpは通るけどtelnet user.ecc.u-tokyo.ac.jp 80は拒否されるね。 野田ちゃんは関係ないよ。
ハードの故障
この時期だと新年度の準備で大変なんじゃないか。
それだ。
>>306 ありがとうございます!
使わせてもらいます。
>>314 すぐ利権にからめて穿った眼で見ちゃう自分の卑しさに反省
つーか売り物にしても申し分ないぐらいの時間と労力を払っているのに文句言うのは筋違いだね
まったくオレってしょうがないヤツだ
例えば,Javaというプログラミング言語があります. 現在,JavaかPerlの求人多いみたいですね. システム何とか学科の知合いによれば,猫も杓子もWebアプリって感じで(レベルは一様に低い). Common LispがJavaに敵いそうもない分野とは? GUIは,これだけ引きはなされてしまってはまず追い抜くのは無理でしょう. でも,SwingだのAWTだのが使えるのはスタンドアローンアプリ. Javaでスタンドアローンアプリ開発を大々的に行っている所ってどこよ? (あるんでしょうけど) JavaでJEditみたいなエディタ作れると就職にいいですか? 現在のJavaは,DBやWebなどサーバサイドに活路を見出しているらしい. それなら,Common Lispがどうして敵わないことがあろうか. そりゃライブラリだってフレームワークだって現在ではJavaのN分の一だろうけど, Common Lispは言語としては本質的にJavaより優れている.完全に動的なその性格からして. (Javaさあ,クラスキャストなんぞしてるんなら静的型システムの意味ないって) Lispは遅い? 何と比べて? Javaより遅いんですか? Javaが狙っている分野は,Lispの主戦場ですよ.みなさん,ぜひぜひがんばって下さいよ.
>>317 ぐだぐだ言ってる間にLispでもJavaでも勉強しろ。
そんな風だからおまえは就職が決まらないんだ。
一生最短距離を探し続けて底辺さまよってろって感じ。
>>317 俺も学生の時はそんな感じだった。
俺の時は Smalltalk がどうして敵わないことがあろうか. だったけどね。
世の中、「言語の力」みたいなミクロな話では動いていないのよね。
「世の中」っていうか「いわゆる企業」っていうか
ちょwww 突然何が
コピペにマジレス。ここ見てるような奴が多分分かっていないこと。 企業だとホントに何にもしらない新人とかいるのよ。レベル低い話だけど。 lisp でどこまでも動的、どこまでも自由、なんてのは、素人には 皆が使ってる便利なフレームワークないですか?になっちゃう。 おまえらだって新人を1から教育するなら java の方が楽だろ? 商用だけど acache がサーバーサイド Common Lisp を復活させてくれることを 期待してるけどね。
>>323 昨晩深夜、頭がおかしい素人が来て自作自演して帰っていっただけ。
>>324 日本語が書けるようになってから来てください
過去ログ読んでると、同じような質問に 同じような回答の繰り返しだなw このスレ
妄想乙。まぁ、内容のない一行レスとかはお前さんの自作自演だと妄想してるけどな。
延々と粘着煽りするやつがひとり居つくと、たとえ残りの参加者が全員 GLS だった としても、こうなるだろうねぇ。ID 欲しい。
実は俺GLS
GLSってなに?予備校? 話がよくわからないorz
ぼくの おばあちゃんは 明治生まれのLisper 再帰 高階関数 なんでもどんとこいさ λにmapcar クロージャをapply マクロでDSL オブジェクトも楽々 CLOSでさくさく 得意の総称関数
漏れマッカーシーだけど、もまいらレベル低いな
ごめんなさい
338 :
デフォルトの名無しさん :2007/03/21(水) 16:19:12
ぼくの おばあちゃんは 明治生まれのLisper 再帰 高階関数 なんでもどんとこいさ λにmapcar クロージャをapply マクロでDSL オブジェクトも楽々 CLOSでさくさく 得意の総称関数
339 :
デフォルトの名無しさん :2007/03/21(水) 17:22:37
それだ!すげー速いレスthnx
漏れポールだけど、もまいら他のやつらの下をいきすぎww
休日だからって何この流れww
ミンスキーだけど、僕の心の社会も閉鎖されそうです><
欧米か
後藤英一だけど、とりあえずHHKB HG JAPAN買ってね
そりゃ和田英一だろ
HHKBの無刻印を掃除しようと思ってキートップ全部はずしたら後で大変だった
もう一つHHKBの無刻印版を買って、それを見ながらキーを付け直せばいいんだよ
キートップの裏側に傾斜別に3種類くらいに分類できるコードがついてたからそれを手がかりにうまいこと付けたよ。
>349 サーンクス!! これで文字コードの腐ったWeb archiveを見に行かなくて済むよ。
>336-345 つまみのチーズのどに詰まらせた お前らに謝罪と賠償を(ry
On Lisp は結局いつ発売なんだろう なんかサイトによって23日だったり27日だったり30日だったりするんだが・・・
On Lisp日本語版、装丁マジでかっこいい。 ざらっと眺めて2章のど頭からerrata確実なものを見付けてちと凹む。 贅沢を言ったらキリがないけどこれだけマニアックな本を翻訳して 一般の書籍流通に乗っけようとしている野田さんとオーム社に乾杯。
>>354 ヤバスww
いきてえけど平日じゃねーかww
夜だから、なんとか都合付けれ
>>353 すいません... ご勘弁ください < errata
どこか教えて頂けると幸いです.
... と言ってもどうしましょうか.
なるべく早くサポートページの類を用意しますが
(Errataや補足情報はそちらで管理するつもりです)
そこに掲示板でも設けておけばよいでしょうかね?
私のメアドでよろしければ t50473アットマークmail.ecc.u-tokyo.エーシー.じぇーぴー です
>>354 でっかい黒板を用意して、何か説明するならそれに書かないと
黒田さんが殴りかかってくるっていう段取りかな。
360 :
353 :2007/03/22(木) 20:57:04
>> 358 見付け次第巻末に掲載されてるアドレスにメール投げるようにします。 いずれにしても素晴らしい本をありがとう。原著を持っていないだけに嬉しい。
>>354 lispもschemeもわかんないけど、行ってもいいですか?
行ってもいいけど、変なオープンソーススクリプト言語のことを褒めたりすると 黒田さんが怒りのあまりうまく話せなくなっちゃうから気をつけてね。
>>354 Scheme 大嫌いな黒田氏に
「Gaucheのパワーと楽しさを語れ」
ってなに考えてるんだw
lisp のパワーと楽しさ、にすべきだろうなw おれも common lisper だけど参加していいのかな?>Gauche Night
コボラーだった僕は行ってもいいですか? 定年で暇で暇で仕方ないのです。
コボラーはリスパーと同じくらい古いので桶
>>366 ちょっと失礼なこと訊いてもいい?
頭はバーコード? それともお天道様?
黒田氏としては、誤解と偏見、傲慢と妄言でCommon Lispを汚す 知名度ばかりが先行した無知蒙昧な罰当たり共を成敗する良い機会だから 二つ返事で参加の旨を表明したのだろうな。 Shiroが土下座をして額を床にこすりつけ、Matzが靴の裏を舐めて許しを乞うまで 黒田氏の舌鋒は止まらないだろうな。
>>368 自分がハゲてるからって年寄りが必ずしもハゲてるとは限らんのだぞ。
366はきっと渋いロマンスグレーだよ
ストラウストラップなぞ問題外^^;
>>369 その絵を想像して腹筋が死にそうになったwww
>>370 たまに若いのに落ち武者みたいなヤツっているよね。
それよりハワイから日本に来られるのだろうか
>>375 それよりって、お前・・・明日は我が身かもしれんのだぞ?
まずい、ハゲが興奮しはじめた。
>>377 ハゲちゃうわ! つーか、ハゲなめんな!
頭から毛なんか生やしてるうちはまだまだだな。
主催が全くもって謎なんだけど、進行とか大丈夫なのかね 集まる人間的にイベント慣れしてる人がフォローしてかないと 2chオフみたいな寒いのになったりしないか不安だわ 川合さん来るとかなら行きたいけどさ
>>382 > 主催が全くもって謎なんだけど
君はLingrをヲチしてないな
黒田さんとまつもとさんが全裸で殴り合うエキシビジョンマッチ希望。
lispでbottom upプログラミングしてると確かに 綺麗になるんですけど、他人には読めないコードに なったりしません? 他人に読めないのは綺麗じゃねーって言われるかも しれませんがやはりそんな感じがします。 抽象的なロジックでも、ほとんど組み込みのリスト操作や map操作で実現できてしまうのが原因だと思うのですが、 (他の言語だといちいち名前をつけて抽出することになる) 皆さんはそういうこと感じませんか?
>>385 無理にまとめずに、論理的にわかりやすい単位で適当に名前を付ける(≒関数を分ける)
ように注意している。(本当に使い捨てにするプログラムは別だけど)
>>385 どういうコードなのか、何をもって綺麗というのか、が不明だが、
後半の記述から想像するに、その場にだらだらリスト処理を書いちゃうってこと?
それは綺麗とは言わないなあ。
むしろ逆に操作の意味を捉えて積極的に名前をつけて抽象化していき、
あるものがどういう構造で実現されているかは隠蔽するのが
きれいなコードだと思う。
SICPとかに出てくるようなコードは大抵そうなってるよね。
むしろ抽象的なロジックこそ抽出して抽象化できる・しやすいのがlispでしょ。
(修正有) 2006 12月新作 (SOD)一度はやりたい銭湯の番台 (2006.12).avi
必要な物が揃って閉じている感じがすると綺麗、と思う。 泥臭いことやってるとなかなか上手くできないけど。
letとかで定義をずらっと並べて最後の一行が英語で読み下せるようになったときは「勝った」と思う
391 :
デフォルトの名無しさん :2007/03/24(土) 16:59:20
SchemeでもCommonLispでもREPLで定義したオブジェクトを消す方法はないの?
なんか「オブジェクト」の意味を勘違いしてないか?
つGC
Common Lisp や Scheme のオブジェクトは無限 extent を持つので、明示的に 消去する処理系に依存しない方法は無い が模範回答でいいんだっけか
前から思っていたんだけど Scheme や Common Lisp の無限エクステントって 普通の GC 持ってる言語とどう違うの? 無限エクステントって言っても完ぺきに参照無くなれば掃除するんでしょ?
実装によるけど、一般的には参照が無くなっただけでは掃除されない。 メモリが不足したときに初めて掃除されるという実装が多い。
でもアクセスできる可能性が無い場合は消しても良いんでしょ? あまり大差ないと思うんだけど スレッドとか継続とかそっちの話なんだろうか
>>398 >でもアクセスできる可能性が無い場合は消しても良いんでしょ?
>あまり大差ないと思うんだけど
あまり大差がないなら、残しても良いだろ?
「今やらなくてよい作業は、出来るだけ後回しにする」ってのは
関数型言語のポリシーの一つだしね。
無限エクステントなんだから少なくとも気分的にはずっと存在してるんでしょ。 参照されなくなった物をさっさと片付けるか、場所がなくなるまで残しとくかは GCの実装の話で言語のポリシーとは関係ない気がするけど。
他の言語だってすぐに削除するわけじゃないと思うけど そこも一緒だと思うよ
無限エクステントと他の言語との差って具体的になんだい? これは無限エクステントでないと出来ないとか
>>402 ものすごくメモリを無駄に消費する富豪プログラムw
クロージャとかじゃね?
他の言語だってクロージャ作れるし
だって別にlisp固有じゃないでしょ? Cですら static つけたローカル変数は無限エクステントなんじゃないの?
で具体的な利点は?
>>406 C の static オブジェクトはすべてのオブジェクトが同じインスタンスを
共有しちゃうじゃないか。
(defun f (x)
(list x))
みたいなのは標準 C では無理だよね。
>>401 Pythonなんかはデフォルトがリファレンスカウントなので、参照が無くなった時点で
削除されることが保証されているね。
明示的なデストラクタのある言語なので、そのことを利用した記述をする場合もある。
>>408 クロージャ作るには無限エクステントだけじゃダメってことで。
>>410 それならクロージャ作れる JavaScript も Ruby も Perl も smalltalk も無限エクステントでおkですか?
その辺の言語のオブジェクトは大抵無限エクステントを持つよ
それでハゲの話題はどーなったの?
無限じゃないのってスタックに確保されてるのくらいでしょ?
>>413 ダイナミックエクステントハゲ: 単に剃ってるだけ。スコープを抜けると生えてくる
無限エクステントハゲ: 一旦抜けるともう生えてこない
GCとしてはできるだけまとめて処理したほうが効率良かったりするので、 メモリが不足したときに初めて掃除する実装が多くなるんじゃない?
>417 世代別GCってのがあるだろ。とりあえず、 『GC 高い幼児死亡率』 で検索。
CONSセルだけ頻繁に回収するっていうのもあった。
あれは大きさが揃ってるから楽だよね
マニア堂 ビデオBOX 素人持ちみ込盗撮 Vol.1.avi
set!が無ければ全くGCが起こらない仕組みが考えられそうなんですが そういうのってどこかで既出ですか?
>>423 そうっすか。ありがとうございます。もうちょっと考えてみます。
425 :
424 :2007/03/25(日) 18:10:23
てか、破壊的代入が無ければそもそもGCなんていらないわけで... 破壊的代入が無い時にコスト0にするとGCが起こってなくてもコストがあったりして それがどの程度かっていうのが問題な訳で、まあ後で考えてみます
>>425 変数がオブジェクトを指さなくなる理由は破壊的代入だけではないでしょ?
たとえば、君の言語ではローカル変数は永久的に存在し続けるの?
>>426 ん? 説明が足りなかったか
CONSセルもスタックみたくして、本物スタックのポップと同時にポップすれば
GCいらなくね?
>>427 新しいCONSセルを返す関数とか作れないじゃん
>>428 その通り。返すのも無理だったんだってことをちょっと前考えてたのを忘れてた。
しかもそれは静的に判別できないんだった。オワタ
escape解析という手法でかなりの部分をスタックに割り付けられる < 新しいconsセル
なるほどー。俺ごときが思いつくことはとっくに誰かが考えてるわけで それが知りたかったです。 ていうか東大とそれ以外って違いすぎない? とTK大の私が言ってみる 学部じゃ型推論の「か」の字も聞かんよ
別に東大だけってこたぁないと思うが、大学なんて何度でも入り直せるんだから大丈夫。w
>>427 俺が覚えている限りでも
その話題はこのスレで何度も繰り返されている。
まースレ立てて騒がないだけマシとも
あと最近は、Lispコンパイラにも型推論を取り入れた方がいい という関数言語厨の勘違いレスも多いな。 CommonLispって、言語仕様レベルで初めて型変数を採用した言語なんだけどな。 つまり、コンパイラが型推論する時のヒントを、明示的に与えるっつう。
なんか 型推論を行う静的型付けの言語と 動的型付けの言語の 違いがよく分からない俺がいる。
動的型付け: プログラミング時に型を確定せず、 実行時に型の判定、必要な型変換をして、プログラムを実行する。 動的なポリモルフィズムも動的型付けの一種。 静的型付け: プログラミング時に関数、機能、式、変数の型を確定する。 前者と比較して、高い信頼性と、高い実行性能が得られる。 静的型付けの型推論: プログラミング中で明示的な型宣言をしなくても、 コンパイル時の型推論、つまり 関数、式、型変数の型の同値性 から型宣言を推定/補完する方法。
ときどき静的型付けが欲しいことがあるよ。 おれのlispプログラムが下手なせい? assert はたくさん入れるんだけど。。
CommonLispはコンパイラの最適化目的なら型宣言できるだろ。
人気メニューは……ナポリタン……
>>436 この「初めて型変数を採用した」って話,過去ログでも読んだ覚えがあるけど
ソースはどこかにありますか?
443 :
デフォルトの名無しさん :2007/03/26(月) 08:25:23
そんな空理空論の質問を何回も繰り返して面白いのか?
そんな糞質問でageるつまらなさよりはマシだと思うよ。
レス早いねw
これで合ってる? (define (comp l r ll rr) (cond ((and (null? l) (null? r) (null? ll) (null? rr)) #t) ((pair? l) (comp (car l) r (cons (cdr l) ll) rr)) ((pair? r) (comp l (car r) ll (cons (cdr r) rr))) ((and (null? l) (not (null? ll))) (comp (car ll) r (cdr ll) rr)) ((and (null? r) (not (null? rr))) (comp l (car rr) ll (cdr rr))) (else (and (eq? l r) (comp (car ll) (car rr) (cdr ll) (cdr rr)))))) (define (samefringe l r) (comp l r '() '()))
とりあえず括弧の数は合ってるみたいだね
(samefringe '(1.0) '(1.0)) => #f
>>449 だって eq?使ってんだもん ゆるしてよ
整数でも即値じゃなくなったら #fになるだろうね だから eqv?と思ってください
野田ちゃんの本、Amazon在庫切れw
(define (samefringe l r) (cond ((and (null? l) (null? r)) #t) ((pair? (car l)) (samefringe (cons (caar l) (cons (cdar l) (cdr l))) r)) ((null? (car l)) (samefringe (cdr l) r)) ((or (pair? (car r)) (null? (car r))) (samefringe r l)) (else (and (eqv? (car l) (car r)) (samefringe (cdr l) (cdr r))))))
454 :
447 :2007/03/26(月) 19:43:03
>>453 それだと (samefringe '(() (1)) '((1)))で駄目になる。
(define (samefringe l r)
(cond ((null? l) (or (null? r) (samefringe r l)))
((pair? (car l)) (samefringe (cons (caar l) (cons (cdar l) (cdr l))) r))
((null? (car l)) (samefringe (cdr l) r))
((list? (car r)) (samefringe r l))
(else (and (eqv? (car l) (car r)) (samefringe (cdr l) (cdr r))))))
とか。
455 :
447 :2007/03/26(月) 19:47:12
>それだと (samefringe '(() (1)) '((1)))で駄目になる。 (samefringe '(()) '(())) でもいいや。とにかく lだけが ()になっちゃう。
ところで (cond ... (else (and X Y))) としてるのはなぜ? (cond ... (X Y)) でも同じだよね。
457 :
447 :2007/03/26(月) 20:19:20
>>456 とくに深い意味はありません。
Xが #fのときに #fを返してくれるのがちょっと嬉しい。
(cond ... (X Y) (else #f)) と同じです。
あー、そうか。 Scheme では cond のテストが全部失敗した時の値は偽じゃなくて未定義だった。
(define (samefringe l r)
(define (f x)
(let loop ((x x) (r (delay '())))
(cond ((null? x) (force r))
((null? (car x)) (loop (cdr x) r))
(else ((if (pair? (car x)) loop cons) (car x) (delay (loop (cdr x) r)))))))
(let loop ((l (f l)) (r (f r)))
(if (or (null? l) (null? r)) (eq? l r)
(and (eqv? (car l) (car r)) (loop (force (cdr l)) (force (cdr r)))))))
>>454 ゴメン。書いた後で気づいた。
untabify しとけ
つ&nbsp;
学生運動じゃないんだから
マクロな夜ってどんな夜なんだ?
GaucheNightに出たいとしか思えないネタだな>戸外団 ネイキッドロフトは外山のイベントをやってるし。
On Lisp在庫切れのメールがきたorz
>>471 すんません、冒頭のX Windows ってのはX10,X11とそのリリース群の意味で複数型なんですよね
X on Windowsの略。 最近はKnopix+CoLinuxの陰に隠れて存在感がない。
てっきりXbox Windowsの略かと。
On Lisp キタ━━━━(゚∀゚)━━━━ !!!!!
>>472 そこは何も考えずに原文ママということで,一つ
近所の本屋に On Lisp 置いてないなぁ 移動用と家用に二冊欲しいんだが 秋葉行けば売ってるかな?
>>477 木曜日の夜の時点では余裕で平積み。
金曜土曜でどう動くかは知らん。
>>477 秋葉原の書泉だとものすげぇ量平積みだったよ、2階のフロアの3カ所で積んでた。
#減るのも結構早かったけど(ある意味凄いよね)
>>476 いやぁ、原作者の意図をくめる人に聞いてみたかっただけなのでふ(他にも同じよな文脈でそう書いてある英文見たことあるのだけど、日本人ではそこらへんの区別がよくワカラン(商標とのね))
X Windowsというのに目くじらたてる奴がまだいるんか
UNIX 嫌いのためのハンドブックで X Windows という表記を推奨している。 細部にこだわる連中をおちょくるためとか、そんな理由で。
482 :
デフォルトの名無しさん :2007/03/31(土) 14:56:43
GNP's Not POSIX 略して「ぐぬぽ」
札幌駅前の紀伊国屋でonlisp買ったらレジ店員(男)が話しかけてきた。 当店の注目株なんだそうだ。
>>481 俺の周りにその手の奴が居たら
名前にフグリとか付けて呼んでやる。
X Windowフグリとはまた斬新なw
>>478 >>479 サンクス
いまから買ってくるわ
そう言えばるびまの書籍も出ているんだよな
出費が・・・
OnLisp購入した。 今後のLisp本もこういう格好良い装丁で行ってほしいね。
日本はOn Lispが(新品で)買える唯一の国かな。 この勢いでAMOPとかも邦訳が出るといいな。
もうさすがに Lisp の本は出版されないんじゃないの? 今回のは奇跡でしょ。
On Lisp の装丁は珍しく良いよね amazon で原書と訳書比べてみると大抵原書の方が良い装丁なんだよなぁ 日本に持ってきた瞬間ダサダサになるのはどうにかならんのか
今日届いた。確かにコンピュータがらみの本でこんな趣味の良い装丁は久し ぶりだ。人前で読めるね。ゆっくり読もう。
原著が無償で公開されてるが?
>>491 そう、人前で読めるってのは貴重だよなー。
印刷したので不自由してなかったが、俺も装丁で買ってしまった。
さんざん既出 >492 でも買え。
>>492 それを言うなら翻訳も無償で公開されているし、そんなことはここの人は皆知っている。
知りませんでした
ごめん俺知らない
もうけっこう昔だったろか(´・ω・) 最初の翻訳が投下されるまではまーた変なヤシが来たよと思ってた・・・スマソ
いや、ネタでからかってるだけだろw
ネタでからかうために本一冊丸ごと翻訳して、しかも出版させてしまうとはえらい根性入ってるなw
そっちじゃ無いよwww でも2chで煽られて高校生の時から翻訳始めたんだっけ?
今日ドイナカの地元の本屋でon Lisp見付けたよ。すごいな。
シグマ計画のこと?
これが最初かな?
http://pc5.2ch.net/tech/kako/1042/10421/1042167213.html 883 名前:まるちぽすと :03/07/06 23:28
ここはCommon LispよりSchemeな擦れだってことは知ってますが、せっかくだから聞いて下さい。
LisperのPaul Grahamが絶版になったCLについての著書On LispをPDFで配っているのですが、
そいつを勉強を兼ねて翻訳しています。
今年の始めに手を付け始め、25章の本のうちやっと7章まで終わりました。
著者の許可はとってません。勝手にやってるだけ。まずかったら引っ込めます。
まだWizard Bookも読んだことない廚ですが、サイトを覗いてやって下さい。
なんかコメントがあったらここなり私のメールアドレスなり適当に。
user.ecc.u-tokyo.ac.jp/~g340299/onlisp_j.{pdf,dvi}.bz2
# これで後にはひけなくなった...
884 名前:デフォルトの名無しさん :03/07/07 00:18
また、かわいそうな子が・・・。
ーーーーーーーーーー
このあと許可取っ手から公開しろとか散々たたかれててワロス。
もし俺だったらこの時点で投げ出してただろうな。
とりあえずおつかれ。
ここの馬鹿ども(俺も含めてw)の煽りもちょっとは社会の為になっているんだな
野田っちに2ちゃん耐性がなけりゃ、この歴史的良書の訳本がこうして広く世に出ることも なかったんだから、どうとも言えんわな。
たたかれて平気のへいざな馬鹿じゃ困るが たたかれてそれをバネに伸びる人はやっぱりスゲェ奴なんだってことやね。
野田ちゃんすげえよ。 やっぱ少しずつでも継続してやるっていうことは大事だね。 あと、2ちゃんて不思議な場所だなw
>>507 どっちかっつーと前者じゃね?
煽る奴ってのはまぁ大抵「煽られることを気にするタイプ」で(要は自分に効く攻撃をしている)、
そういう奴には煽りの影響力に対する一種の信仰みたいなもんがあって、後者を信じたほうが気持ちいいんだろうけど、
実際に形になるのは「自分がやりたい」って動機が周囲の雑音を吹き飛ばすほど強いものだと思われ。
まぁ煽り叩きは2chの華,と
>>509 ・・・とても参考になりますた。
あと、言語も参加者も成熟しているからかなぁ〜と。
わたしが関心を持っている別の分野ではもう何年間も、
どの板行ってもどのスレ行っても
同じ人達が継続的に議論妨害をしていて、全然お話になりません。
>>508 > あと、2ちゃんて不思議な場所だなw
そうだね。口汚い罵りの中に、希に卓越した知識や発想を見いだせることがある。
そのわずかな期待のためにここへ来ている人も多いのではないかな。
違うと思うがなあ。 2chでもマトモな内容の書き込みは、ほとんどの場合は口調もマトモだったよ。 口汚い書き込みは、ほぼ100%内容もゴミだった。 口汚い書き込みは全部読み飛ばすのが正解だと思う。 LISPと関係ないのでsage。
日本語が通じてませんね。
そうなのか。 口汚い書き込みにも、見るべき内容のものがある、という意味かと思ってた。
口汚い罵り合いばかりだけど、希にそうじゃないのもあるって意味だろ・・・
プログラム技術板で荒れてるスレの口汚い書き込みって、 実はほんの1名か2名の荒しがあちこちに出没しているだけのような気がする。
10日前にこのスレに来てた自作自演の人は、 先週末はHaskellスレでおなじような自作自演をやっていた。
いやさ「あ、今晩飯かな?」とか「あれ、寝たかな?」とか、 そういう感じの波があるじゃない。一人だよw
彼、今ここに来てますがな
いらっしゃいませ
口汚く罵りながらすごいヒントをくれる人とかもいるよねw
× 口汚い罵りの中に、希に卓越した知識や発想を見いだせることがある。 ○ (彼が) 口汚い罵りをしている最中にも、 (周りはスルーして議論続行したので、その結果) (彼は) 卓越した知識や発想を見いだせることがある。
荒し自身の視点: 口汚い罵りの中に、希に卓越した知識や発想を見いだせることがある。 他の人の視点: 口汚い書き込みは、ほぼ100%内容もゴミだった。
そういう人もまれにはいるが、 ほとんどの場合、すごいヒントのつもりでカスな書き込みをする奴ばかり。 LISPじゃないが、void氏は自分には素晴らしい反面教師になった。
昔 fj 今 2ch って奴だな
528 :
526 :2007/04/03(火) 16:56:34
自分が書いたのはネタとして罵りながらもっていう意味だから、ちょっと違うかな。
133 名前: デフォルトの名無しさん [sage] 投稿日: 2007/02/28(水) 02:40:22 延々と粘着煽りするやつがひとり居つくと、たとえ残りの参加者が全員 GLS だった としても、こうなるだろうねぇ。ID 欲しい。
つまるところ _ /,.ァ、\ ( ノo o ) ) 空 )ヽ ◎/(. 気 (/.(・)(・)\ . 嫁 (/| x |\) //\\ . (/ \)
ChezEditのsasagawaさんのページが復活!これでまた入門者に薦められます。
やっぱりSchemeだね
http://www1.ocn.ne.jp/~scheme/ いくつか復活していないもの
・MLの簡易開発環境 MLEditのページ
・各種エッセイ
・blog
個人的にはエッセイは復活させて欲しいなあ。
入門者には DrScheme とかの方が良いでしょ
534 :
デフォルトの名無しさん :2007/04/06(金) 02:30:15
醜い書き込みをする、または、 根拠の無い自信や意味のない煽りをするやつは 工作員か何かなので、無視するとよい。
>>533 おまえDrScheme使ったこと無いだろ
だからSchemeは黒板で十分なんだってば。
黒板=黒田さん専用の板
On Lispがけっこう売れているようで,うれしい限りです
ttp://www.php.co.jp/fun/ranking/books.php?genre=pc コンピュータ書ランキング | THE 21 なんでもランキング | お楽しみ | PHP研究所
> 『On Lisp―Advanced Techniques for Common Lisp』連続第1位!
> 順位 タイトル 出版社 価格
> 1(1) On Lisp―Advanced Techniques for Common Lisp オーム社 3800円
> ※カッコ内は前回順位。 ゲーム攻略本は含まず。書泉グランデ調べ
> (2007 年 4 月 3 日 UPDATED)
>>540 おめ!
こういう本が売れるのはマジで嬉しいよ。
宣伝と言うか、自慰は自分のサイトでしてほしい今日この頃。
543 :
デフォルトの名無しさん :2007/04/06(金) 16:21:20
Lispを極めたら、
>>542 のような人間の心を広くする
プログラムは作れるようになりますか?
もし作れるなら死ぬ気でがんばります!
いくらLispでもそれは無理
つかこれって元々このスレで宣言したのが長年かけて形になったんでしょ? がんがん宣伝しとけw
>>545 だな。ある意味、このスレが本部で、サイトが置き場所w
オライリーから「Gaucheプログラミング」という本が出るというのは本当なんでしょうか?
前々からある話なのかも知れませんが、どうもマジっぽいですね。執筆者の方々、期待してます。
552 :
デフォルトの名無しさん :2007/04/06(金) 22:12:06
黒田氏とshiroさんは知り合いですよ。つか、いっしょに仕事した事あるはず
>>553 おーー。期待あげ。
LLで販売って今年はどこでやるんだろ。
555 :
デフォルトの名無しさん :2007/04/06(金) 23:51:22
黒田氏の知識工学部はLisper集団の部門らしい
556 :
デフォルトの名無しさん :2007/04/07(土) 07:45:53
>>553 伝統的なマクロの
>((lambda (a b) (+ x y))
> a b)
lambda式の引数がabになっているのが気になった
やっぱ今年はLispバブルだな! こういうのは畳み掛けるのが大事だと思う。 面白そうなlisp/schemeプロジェクト出てこないかな?
> こういうのは畳み掛けるのが大事だと思う。 また犯罪でも始める気か
>>560 8月上旬〜中旬には書店で買えるようになりますよ。
>>561 ありがとうございます
たのしみにしております
やっとLISPの時代が来るな。40年待ったぞ。w
和田先生かw
でも、組み込みの拡張言語にlisp搭載すると非難轟々だろうな。 という事でECMA script搭載に日和りそうな俺。
>>567 そうか?
PS2やPS3でも動いてるじゃないか。
569 :
556 :2007/04/07(土) 21:20:49
小飼弾キター
弾ちゃんはいい人だけど視野は狭い
いやらしい
>>574 第3部:実用>簡易データベースを使おう
どんなデータベースを使うのが良いか?でRDBMSの利点を説明してあるのに、
RDBMSでの使い方が載っていないのはなぜですか?いまどきRDBMSの利用
は普通かと思いますが。
RDBMS絡みはカネになるから、書籍では説明できない、
別途コンサルで承ります、的な意味ですか?それとも、執筆途中で
未掲載なだけですか?
RDBMS使う実務なんてつまらない例が多いし Lisp構造と相性悪いからだろ。
Lisp構造 つか Scheme含むLisp系言語のList構造
>>576 節の名前が「簡易データベースを使おう」なんだから
本格的RDBMSの話が載ってなくてもおかしいとは言えないよね
「ただし○○などの理由により本書では省きます」くらい書くべきかもしれんが
しかしこのスレに現れる執筆者さんは名前のない名無しさんなのね
それで対話を続けているところになんか違和感が...
> RDBMS使う実務なんてつまらない例が多いし や、でも実務で使えないと普及も無いのでは? > Lisp構造と相性悪いからだろ。 や、OOも相性が悪いと言われていても、それを克服(する努力を)してるし。 自分的には相性が悪いとは思わんが。逆に相性が悪いといったら、ほとんどの 言語は相性が悪い(というか、考え方が違うような)。
>>576 RDB は独自のノウハウが必要だからな。ふつう、言語の入門書に SQL がドバドバでてくることはないだろう。
K&R にも RDB はでてこないよ。フリーの RDB もあるけど、やっぱり業務では商用のが主流だし(Oracle じゃないと
クライアントが納得しないなんて例は多い)、入門書では扱いにくいんじゃない。
たまに並列実効性とかスケーラビリティ考えてない O/R マッパで楽々ですよ!! というのは見かけるけど、あれで
RDB 楽勝とか勘違いして「いまどき SQL っすか?」みたいな若い人がでてきつつあって鬱だ…。いちおう勉強しようよ。
O/R マッパは銀の弾丸じゃないんだから…。というわけで中途半端な RDB ネタは入れないでほしい。
db のとこの構成は少しちぐはぐに感じる。 章の名前からすると dbm だけを扱うようだから、「どんなデータベースを 使うのが良いか?」なんて節で dbm と RDBMS の pros / cons を並べるのは 混乱を招くだけだと思う。 dbm 以外のデータベースの説明はもっと軽めにして、なぜここで dbm だけを 解説するのかを述べておいた方が自然に読めるんじゃないかと。
>>583 O/Rマッピングに触れると
また延々と宗教談義になるんじゃないかな。
(詳しくは存じませんが) むしろ
ODBCインタフェースを呼び出せるとか、SchemeQL移植した人が居るとか、
そっち系統の話題の方が無難かと。
国内商用ネットワークサービスの草分けやってた人が 「RDBといえどもjoinしまくるqueryはトラブルの元だから避ける」 つってたw
まぁ
>>576 は具体的なことはどうでもよくて、
> RDBMS絡みはカネになるから、書籍では説明できない、
> 別途コンサルで承ります、的な意味ですか?
ちょっと歯軋りとかしながらコレ書きたかっただけでしょw
第三者が読んでも不愉快になる文章というのは、 実は書いた本人の属性を如実に描写している、 ということだなあ
いまさら偽装工作してもバレバレなのに・・・
私の理解が不充分なのだと思いますが、 Schemeのstatic scopingで混乱しています。 次の2つのコードの違いは何でしょうか? ;; ;;code-A ;; (define foo (lambda (x y) (cons x y))) (foo 100 200) ;==> (100 . 200) (define cons list) (foo 100 200) ;==> (100 . 200) ;;シンボル「cons」の束縛を変更しても結果は変わらない。 ;; ;; code-B ;; (define x 300) (define bar (lambda () x)) (bar) ;==> 300 (define x -400) (bar) ;==> -400 ;;シンボル「x」の束縛を変更したら結果が変わってしまう!
592 :
591 :2007/04/10(火) 16:31:06
さらに、 ;; ;;code-Aの変形 ;; (define baz cons) (define (foo x y) (baz x y)) (foo 100 200) ;==> (100 . 200) (define baz list) (foo 100 200) ;==> (100 200) ;;シンボル「baz」の束縛を変更したら結果が変わる ですね。
cons は built-in 手続きだから。 R5RS 6 Standard procedures > A program may use a top-level definition to bind any variable. It may > subsequently alter any such binding by an assignment (see 4.1.6). > These operations do not modify the behavior of Scheme's built-in > procedures. Altering any top-level binding that has not been > introduced by a definition has an unspecified effect on the behavior > of the built-in procedures.
594 :
591 :2007/04/10(火) 17:37:24
>>593 情報ありがとうございます。
「These operations do not modify the behavior of Scheme's built-in
procedures.」の意味ですが、定義する前にtop-level bindingを変更してしまった
場合にはclosure生成に影響がありますね。たとえば
;;
;;code-Aの変形(その2)
;;
(define cons list)
(define foo (lambda (x y) (cons x y)))
(foo 100 200) ;==> (100 200)
;組み込み手続きconsではなく、closure生成時における
;シンボル「cons」の束縛値であるlist手続きが使われている
このへんはどう解釈すればいいのでしょう?
束縛済みの変数に対するトップレベルの define は、新たな束縛を作成する のではなく、既存の束縛を変更する。(R5RS 5.2.1) だから (define cons list) は定義を持たない束縛を変更すること、つまり > Altering any top-level binding that has not been > introduced by a definition なので、 > has an unspecified effect on the behavior > of the built-in procedures. ちゅーこと。 どう解釈もなにも、未定義なので built-in 手続きは変更しちゃだめ。 自分の使ってる処理系でどうしてそうなるかが知りたければソース嫁。
> top-level binding that has not been
> introduced by a definition
この文ちゃんと訳すと
「(define使った関数)定義で導入されなかったトップレベルの束縛」
かな〜と思ってたんで、
>>592 は何を疑問に思ったのか判らんかった。
今回の現象(処理系依存の実装)も、そう直感に反する動きをしてないっぽいし。
597 :
591 :2007/04/10(火) 18:53:40
>>595 なるほど。R5RSはそういうふうに読むのですね。
(トップレベルと、(そのさらに上の)組み込み手続きが定義されているレベルとを
明確に区別できていませんでした)
結局、
>>591 のcode-Aの例、(define cons list)の直後で
(foo 100 200) ;==> (100 200)
となったとしても、それは処理系依存でR5RSに違反しているものではないということですね。
1. Schemeの場合コンパイラ前提の言語なので、 static scopeを前提にしている。 2. シンボルの値は、C言語等と同様、 文法上のスコープで静的に決まる。 3. 関数定義では、定義時にコンパイルして 変数や関数への名前参照を解決してしまう。 従って、定義後に周り(トップレベル)の変数束縛を変更しても、 コンパイル済コードには一切影響しない。 この現象を、(インタープリタでも簡単にエミュレートできるような) 一貫した意味論で扱うために、 「関数定義はクロージャを生成する」 とかいう言語仕様になった。 4. 組み込み関数の場合: 実装によっては、一つの組み込み関数が、 他の組み込み関数に依存するかもしれない。 で?えと何説明すれば良かったっけ?
Schemeは特にコンパイラ前提の言語ではないし、3.の意味は何度読んでも理解できない。
組み込み手続きの場合、実行効率が重要なので、 ・トップレベルの手続き定義とは無関係に コンパイラがインラインのコードを吐く ってな実装系があってもいいし、 ・defineされた手続きと同様に扱う ってな実装系もあっていい。 そこは言語仕様では決めないから開発者が勝手に実装してね。 でもユーザさんは組み込み手続きを再定義するコード書いちゃダメよ。 って感じ。
>>599 えぇーと。どのレベルでお話に付き合えばいい?
shiroさんレベルじゃダメ?
1. SchemeやCommon Lisp 以前のLispは、 インタープリット時とコンパイル時で 名前解決のスコープが異なる(前者はdynamic、後者はstatic)ため、 動作が異なる処理系が多かった。 Schemeおよび 後に来るCommonLispでは、 この差異を吸収するため、コンパイラ重視のstatic scopeに統一した。 これを一言でまとめると「コンパイラ前提の言語」 3.は・・・素人レベルで書いたつもりだけど・・・
また豆腐頭のいちゃもんかなw
604 :
591 :2007/04/10(火) 21:10:54
レベルのあまり高くない質問者としては
>>600 の解説がわかりやすいです。どうもありがとうございます。
598は説明になってないしな
素人向け説明 3. 言語仕様で定められてる「Schemeのユーザ定義手続き」ってのは、 あたかも、定義した瞬間にコンパイラとダイナミックローダが走って、 必要な名前参照を全て解決済のガチガチの機械語コードが走る かのようなイメージで書かれてるんだよ。 だから、コンパイラを持ってない貧乏Schemeも、 コンパイラ持ってるようなフリして動くんだよ。 おしまい。
豆腐のいちゃもん付けは根拠なしなのでスルー
豆腐って誰?
>>608 Symbolicsの元ヘタレ技術者らしい。
Symbolicsでλ教ではなくOO教の洗脳を受けたともっぱらの噂。
ヘタレなので、20年経ってもclosureでOOモガキをしたがる、と。
いちおう書いておくが、 scheme48 では 591 の code-A で (100 200) を返す。 Gauche は 591 の通り (100 . 200) を返す。 そういうことだ。
例えば、「lengthは以下のように定義できます。」 (define length ... ) と本に書いてあっても、再定義するんじゃなくて (define my-length ... ) などどして試したほうがいい、ということですよね?
615 :
591 :2007/04/10(火) 23:10:21
>>612 情報ありがとうございます。
実装依存というのがよくわかりました。
例えばCで自分で作る関数に(仮にヘッダをincludeしてなくて、かち合わなくても)strlenとか付ける 奴はいないだろうし、常識的にそういうもんだと思うけど。
617 :
デフォルトの名無しさん :2007/04/11(水) 04:17:46
>>619 似非コンサルのハッタリだろ。
答が全然理解できない時に
とりあえず「それは違うぞ」と言っておけば
素人映りがいいらしい。
俺も598,606の意味が分からない。 普通に手続き定義後のトップレベルの変更は影響受けるだろ。 組み込み手続きの変更が例外なだけで。 依存関係を保存してトップレベル再束縛の時にリコンパイルなんてやっても いいけど普通ユーザ定義手続きはインライン展開しないでしょ。
それなんて名前の脳内妄想?
>>621 あなたの感じたくやしさをもっとくわしく
ビクビク・・・クヤシイ・・・
ちょっと筆がすべっちゃいました。 こんな感じでいかがでしょうか。 × 定義後に周り(トップレベル)の変数束縛を変更しても、 コンパイル済コードには一切影響しない。 ○ 定義後に周りの変数束縛(≠トップレベル)を変更しても、 コンパイル済コードには一切影響しない。 × 定義した瞬間にコンパイラとダイナミックローダが走って、 必要な名前参照を全て解決済のガチガチの機械語コードが走る・・・イメージ ○ 定義した瞬間にコンパイラとダイナミックローダが走って、 (トップレベルを除く)名前参照を全て解決済のガチガチの機械語コードが走る・・・イメージ
>>595 の指摘
> 束縛済みの変数に対するトップレベルの define は、新たな束縛を作成する
> のではなく、既存の束縛を変更する。(R5RS 5.2.1)
は、C言語で言う所の「グローバル変数とその値」の事だから
それはそれで正しい。
627 :
621 :2007/04/11(水) 11:55:30
>>625 上は意味が分からない
下はトップレベルだけ除いてもダメ。
環境を共有した二つのクロージャ(withdrawとdeposit)を返すような銀行アカウント作成手続きを作って
実行してみると互い連動して影響を受ける、とか Scheme習いたてのときやったでしょ。
まあ変更される変数は静的に分かるけどね。
>>627 だから何?
名前参照が解決された後も
closure通じて、同じ変数実態が共有されてるだけだろ。
まだそんな話に拘っているのか。
「Old Lisperは、SchemeにLispの夢を見るか」 by P.K.Dick
乱暴に言うと Scheme=C+continuation だろ。
631 :
621 :2007/04/11(水) 12:13:58
>>623 なんかもメンドクさいんだけど
もともと
>>598 は「トップレベル変更は定義済みの手続きに一切影響を与えない」って
言ってるよね。その理由として
>>606 は全部インライン展開されるからとか言ってるよね
(ものすごい理論だけど)。そんで
>>625 はトップレベル以外はインライン展開されるって
訂正したよね。「名前参照の解決」をインライン展開と訳さないと
>>606 の意味が通らないよね。
未定義変数を参照する手続きを作るのとかってどう考えてるんだろうね、彼は。
まあ一回簡単なインタプリタでも書いてみればそんな疑問はおきないと思うよ。
素人議論はやめとこう。 どうせキミは表面なぞるだけで、 言語仕様の本質は議論できないのだから。
Schemeのclosureの本質はcontinuation continuationをC言語的に解釈すると、 continuation作成時に別スレッドが作成され、 その別スレッド中のローカル・スタックフレームを 後から参照できる。 自分でインタープリタ作れば判るよw もちろんちゃんとcontinuationも実装してねwww
やっぱりレベルの低い議論だったw
結局、視点の違いなんだよな。 古いLispユーザは、SchemeをLispとして解釈しようとする。 しかし言語仕様は、言語処理系作成者の都合を優先した上で、 言語利用者にも適切な抽象を与えるように作成されているに過ぎない。
補足: インライン云々は、 組み込み手続き呼び出しが、 実際には呼び出しではなく 固定的なコードとしてインライン展開されても 矛盾のないように、言語仕様が作られているという話。 Lispのようにマクロを持ってたら、 ユーザ定義手続きもインライン展開し易いだろうけど、 Schemeはそこまでは考慮していない。
おまえら、親切に説明しすぎ
気付いた点
・元々の質問(
>>591 )が意味不明
・用語が間違っている
× static scope
○ lexical scope
・Schemeの関数定義時の環境をclosureと呼ぶ事があるが、
その実態は関数定義時のローカル環境
(ローカル変数の入ったスタック・フレーム)を
continuationとして保存したもの、だったと思う。
次回からはLispとSchemeはスレ分けたほうが良さそうだな。 こんなに仲が悪いとは思わなかったよ。w
質問の仕方が悪いと思う。 質問の焦点が合っていないから 余分な説明をたらたらする必要が生じる。 それに加えて、SchemeをLispとして解釈しようとするから 話が混乱しまくる。
1.不適切な初歩質問を繰り返し、 相手の失言を待つ。 2. 相手が失言するや否や 先の初歩質問の範疇を越えた反撃をして 相手を叩こうとする。 これが、レベルの低い似非コンサルが 自分よりレベルの高いコミュニティに割り込んでいく時の 常習的な手口だ。 気を付けるように。
>>639 というより、変な煽りの大半は、この板で前から暴れてる特定の人物のもの。
版画っていうリアルに頭のおかしな人。自演しまくりだけど、無視するがよろし。
>>641 まとめ情報サンクス
今後は荒れないように用心するよ。
645 :
642 :2007/04/11(水) 14:01:54
ちなみに、
>>641 ,
>>643 ,
>>644 なんかが、版画のレスだ。
脳内の悪と闘ってるので、その「悪」を叩く内容のレスをする。
…スルーしろつった俺がスルーしてないのはすまん。
>>646 カナーリ昔、この似非コンサルらしき人物に
・クロージャを使ったオブジェクト表現 (bit記事)
・Actor言語とScheme言語の関連
を教えてやった事があります。
今回の話は、その続編のつもりなんじゃないかな?
649 :
デフォルトの名無しさん :2007/04/11(水) 14:11:57
>>646-647 ちゃんとした話に持ってくとは、偉いぞ版画。
だが、上でクロージャの話を持ち出したのは俺じゃない。
似非コンサルさん必死ですね。 誰も歓迎してないけど。
この人はクロージャとかActorとか言っとけば それがSchemeの話なんだと思い込んでいるフシがある。 現実的にはほとんど関係ない話なのに。
>>643 いい歳をして、一体なにやってんだろうね。
似非の人、釣られ杉
議論に負けると、発言者を全て同一人物と決め付けて 相手を中傷しはじめて、議論の決着をウヤムヤにする これも似非コンサルの特徴。 彼ら似非コンサルが這いずり回る底辺現場では そんな子供騙しが日常茶飯事のように行われている。
おまいら的確な発言ワロタw ふつう2ちゃんではあの手の問題人物が来ると、 すべてを飲み込んですべてがグダグダになるだけなのに。
ていうか一人だけ明らかに頭の作りが劣悪だからね。 本人はバレてないと思ってるとは思うけど、一目瞭然なんだよね。 この辺は残酷なくらい憐れだと思う。
愚かな反論してきた奴が一人。 そいつにひきずられて、議論全体が転覆しかけた というのが実態。
おまいらの粘着体質もきもいよ
似非コンサルの発言の特徴 議論に的確な意見を述べず、 また自身の意見も述べず、 議論参加者全体に対する 当てこすりのような事を述べて 精神的優位に立とうとする。 ちなみに具体論は全然ダメで 議論に参加するとすぐ議論を脱線させる
>>660 当てこすられるようなことをやってる自覚は無いの?
弱ぇぇ〜
> 具体論は全然ダメで > 議論に参加するとすぐ議論を脱線させる そのようですね
いいかげんIDを導入してほしい。(またはIDのある板でやってほしい)
Schemeと他のLisp言語の相違点(R5RS日本語訳) 「Scheme は,λ計算におけるようなファースト・クラスの手 続きを具体化した初めてのプログラミング言語の一つであっ た。そしてそれによって,動的に型付けされる言語での静的 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 スコープ規則とブロック構造の有用性を証明した。Scheme 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜(1) は,手続きをλ式とシンボルから区別し,すべての変数に対 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜(2) し単一の字句的環境を使用し,手続き呼出しの演算子の位置 をオペランドの位置と同じように評価する初めての主要な Lisp 方言であった」 (1)Schemeは動的型付け、静的スコープ規則、ブロック構造を持つ (2)Schemeは、手続きそのものを、λ式とシンボルから区別する
Schemeの静的スコープ規則 (R5RS) 「Algol やPascal と同じく,そしてCommon Lisp を除く他 の大多数のLisp の方言とは異なり,Scheme はブロック構 造をもって静的にスコープが決まる言語である。プログラム の中で識別子が束縛される箇所にはそれぞれ,それに対応し て,その束縛が可視であるようなプログラム・テキストの領 域(region) がある。領域は,束縛を設けたまさにその束縛 コンストラクトによって決定される。たとえば,もし束縛が lambda 式によって設けられたならば,その束縛の領域はそ のlambda 式全体である。識別子への言及はそれぞれ,そ の識別子の使用を囲む領域のうち最内のものを設けた束縛 を参照する。もしも使用を囲むような領域をとる束縛がそ の識別子にないならば,その使用は変数に対するトップ・レ ベル環境での束縛を,もしあれば,参照する(4 章および6 章)。もしもその識別子に対する束縛が全くないならば,そ の識別子は未束縛(unbound) であると言われる。」
Schemeのトップ・レベル定義 (R5RS 5.2.1) 「プログラムのトップ・レベルでは,定義 (define <変数> <式>) は,もし<変数> が束縛されているならば,本質的に代入式 (set! <変数> <式>) と同じ効果をもつ。しかし,もし<変数> が未束縛ならば, この定義は代入を実行する前にまず<変数> を新しい場所に 束縛する。しかるにset! を未束縛の変数に対して実行する とエラーになるだろう。 (define add3 (lambda (x) (+ x 3))) (add3 3) =) 6 (define first car) (first '(1 2)) =) 1 Scheme の実装によっては,初期環境として,可能なあらゆ る変数がなんらかの場所に束縛されており,そしてその場 所の大多数が未定義値を入れている,という環境を使う。こ のような実装ではトップ・レベル定義は代入と全く等価で ある。」
Schemeの内部定義 (R5RS 5.2.2) 「定義は<本体> (つまりlambda, let, let*, letrec let-syntax, letrec-syntax の各式の本体,または適切な 形式の定義の本体) の先頭に出現してもよい。このような定義 を,上述のトップ・レベル定義に対抗して内部定義(internal definition) という。内部定義で定義される変数は<本体> にローカルである。つまり,<変数> は代入されるのではな く束縛されるのであり,その束縛の領域は<本体> 全体であ る。たとえば, (let ((x 5)) (define foo (lambda (y) (bar x y))) (define bar (lambda (a b) (+ (* a b) a))) (foo (+ x 3))) =) 45 内部定義をもつ<本体> はつねにそれと完全に等価なletrec 式に変換できる。たとえば,上の例のlet 式は次と等価で ある。 (let ((x 5)) (letrec ((foo (lambda (y) (bar x y))) (bar (lambda (a b) (+ (* a b) a)))) (foo (+ x 3)))) 等価なletrec 式がそうであるように,<本体> の中の各内 部定義のそれぞれの<式> は,そこで定義されるどの<変数> の値の代入も参照もすることなく評価可能でなければなら ない。 どこに内部定義が出現しようとも(begin <定義1> : : : ) は, そのbegin の本体をつくる定義からなる列と等価である。」
Schemeの組み込み手続き (R5RS 6) 「この章はScheme の組込み手続きを記述する。初期の(つま り“トップ・レベル” の) Scheme 環境は,有用な値を収め ている場所へと束縛された数多くの変数とともに始まる。そ して,その値の大多数はデータを操作するプリミティブ手続 きである。たとえば,変数abs は数の絶対値を計算する1 引数の手続き(を初期値として収めている場所) へと束縛さ れ,変数+ は数の和を計算する手続きへと束縛される。他 の組込み手続きを使って容易に書くことのできる組込み手続 きは,“ライブラリ手続き” として分類される。 プログラムはトップ=レベル定義を使って任意の変数を束縛 してよい。そして後からその束縛を代入によって変更してよ い(4.1.6 節参照)。これらの演算はScheme の組込み手続き の振舞を改変しない。定義によって導入されていないトップ =レベルの束縛を変更することは,組込み手続きの振舞に対 して未規定の効果をもつ。」
(R5RS 5.2.2) Schemeの内部定義 (いわゆるクロージャ)の利用例
Schemeへの道
クロージャとオブジェクト
http://www.stdio.h.kyoto-u.ac.jp/~hioki/gairon-enshuu/SchemeNotes/closure-object.html 関数本体の定義とそれを評価するための環境
を合わせてクロージャと呼ぶ.
クロージャの概念を用いれば,オブジェクト指向プログラミング
の基本要素であるオブジェクトを作成することができる.
オブジェクトとは,簡単に言えば,メンバ変数(フィールド)
といわれるデータとそれを操作するためのメンバ関数(メソッド)
をまとめた部品のようなものである.
各フィールドのスコープはオブジェクト内に局所化され,
それらにアクセスするためには必ずメソッドを用いることになる.
つまりオブジェクト内部のデータは予め指定された方法でのみ操作され,
プログラムの他の部分から予期せぬ形で影響を受けることがない.
こうすることによって,オブジェクトの内部構造がブラックボックス化され,
オブジェクトを,ある機能を提供するプログラムの抽象的な部品として,
その詳細な実現方法に左右されることなく利用することができるようになる.
ここでは環境モデルを用いて,関数がオブジェクトとして働くことをみる.
以上、この件終了
Lisp,Scheme初心者がこれってどういう風に書けばいいんですか? って聞いたり Lispは括弧が多いからとっつきにくいだの、他とは違う孤高の言語だの Lisp知りたてでもないクセに変な奴が飽きずにそんな話ばっかりするスレと 処理系作成や仕様、意味論の話題のスレに分けようよ。
>>673 それもありかもしれないけど・・・
今回のような騒ぎは普通はあまり起こらないと思う。
過去スレ見てみりゃ判るけど、
Lispコミュニティの人ってのは基本的に親切なんで
これみよがしにR5RSの英文貼り付けて回答とか
「それは違う」なんて説明抜きの否定なんてしてないでしょ?
何か勘違いした人が突然やってきて、
何かの悪さ(例えばスレを初心者向けに分断する等)
をしかけようとした、というのが実情なんじゃないかな
Schemeの手続き (R5RS 4.1.4) 「 (lambda <仮引数部> <本体>) 構文 構文: <仮引数部> は後述のような仮引数並びであること。 <本体> は1個以上の式からなる列であること。 意味: lambda 式は手続きへと評価される。lambda 式が評価 される時に有効だった環境は,その手続きの一部として記憶 される。その手続きを後からなんらかの実引数とともに呼 び出すと,lambda 式が評価された時の環境が,仮引数並び の中の各変数を新しい場所へ束縛することによって拡張さ れ,対応する実引数値がそれらの場所へ格納され,そして lambda 式の本体の各式が,その拡張された環境の中で逐次 的に評価される。本体の最後の式の(1個または複数個の) 結果が,その手続き呼出しの(1個または複数個の) 結果と して返される。(以下略)」
>>674 R5RSの英文貼り付けて回答なんてこの上なく親切じゃないか。
このスレ5年くらい見てるけど、
>>673 の前者の話題がかなり多いよ。
とくに最近はひどい。幸い、キチガイは説明するの大好きだから共存させて隔離しようよ。
何か勘違いしている基地の人が来ちゃった
すげぇ荒れようだな。 例の法則また発動かな?
法則って何?
「議論をかき回してコミュニティを分断するのが趣味の人」 が現れると、必ずそのスレに「キチガイ」という単語が書き込まれる件
キチガイ
で、かき回してたのは 598と 621どっちなの
知るか。
コミュニティを分断しようとしてるのは明らかに
>>676 こいつは根っからの荒しなんで、相手にしないのが吉
>>686 分断することは悪いことなの?
議論の内容も追わないで荒れてるのを誰かの責任にして
現状を維持するのが正しいと思ってるの?
誰もやっていないことについて「正しいと思ってるの?」とか 話のそれまくった質問しても意味無いよ。 唐突に関係ない話を持ち出さないように。
>>677 確かにスルーした方が良さそうだ。
まともなコミュニケーションができなさそうな人だ。
空気読めてないし
>>688 >>686 って議論の内容を追わないで単に沈静化しようとしてるだけじゃん
もともと CommonLispスレだって無かったし、一時期 CommonLisp初心者スレ
っていうのがあった気がする。
だから Schemeキチガイ、初心者スレっていうのがあってもいいじゃん。
691 :
デフォルトの名無しさん :2007/04/11(水) 21:53:15
す ず き た か ひ ろ って人が関わると、 どの仕事もどのスレもグダグダになる って誰かが言ってた
何もなかったようにスルーして質問 OnLispっていまどれくらい売れてるの?
>>638 lexical scopeとstatic scopeの違いって何?
694 :
デフォルトの名無しさん :2007/04/11(水) 22:29:30
そのネタ飽きた
何このどっかからコピペしてきたみたいな バラバラな書き込みはw
そういう時、なにも始めから無理矢理S式で書かせる必要はない。 フロントエンドにC風の構文を用意しておけば納得する。 自分は、C+MLっぽい文法を用意している。 コードは可逆変換できるので、Schemeの勉強にもなるかもしれない。 クロージャなどのscheme特有の概念を使わなければ、型の無いCと 同じ感覚で書ける。 これでS式の鎖国は終わった。
Lisp の括弧は メリット: ツリー的な構造+簡潔な文法+マクロ+エディタの支援 デメリット: 括弧嫌い.表示方法に気をつけないと見た目が悪い. との丁度いいトレードオフだと思うけどね.もっと複雑な構文だったら,マクロは書くのも使うのも 制限を受けそうな気がする. エディタによる支援は,たとえば if ... then ... else ... end みたいな書式で,if 上にカーソルがあるとき,if 式全体をコピーしたいという操作は無理.(対応する end まで 勝手にマークというのでもいいかもしれないけど,if だけコピーしたい場合と区別つかないよね?) (if .... .... ...) という lisp 的表記は if の前にカーソルを置いて一発で if 式がコピーできる.Emacs なら M-C-@ とか. これは括弧無しで実現できるのか? if だけをコピーしたいのか,式全体なのかを明示的に指定できるのは Lisp 記法ならではだと思うのだが.学が無いので学問的に記法がどうあるべきかってのはよくわかんないけど.
>>696 新手の荒し行為だろ。
このキ印の人、
何が悲しくてスレを荒し続けるのか理解に苦しむ。
昔買ったエディタのマクロがLispだったので、Lispでマクロを少し書いたと言うだけの経験ですが。 習得は、簡単だと思います。 (マニュアルを見ただけで書けましたし) 中級のプログラマーになるのは、 (頭の中が関数型のプログラマーになっているので) 難しいと感じました。 上級プラグラマーのレベルになったら なぜ世間は関数型の言語が流行しているのか腹立たしくなるらしいです。 なぜマイナーかと言うと それは風評の影響が大きいと思います。 また高速なプログラムが書けるかと言う問題もあると思います。 (Cの方が機械語に近い言語なので高速なプログラムを書きやすいと言う意味) 多くのプログラマーは問題解決にLISPを習ってLISPでコードを書こうと言う発想をもてないと思います。
少なくともXMLでプログラム書かされるよりは括弧のほうがまだマシだよw
1.Lispがマイナーな理由
Lispは知名度で言うと別にマイナー言語だとは思いませんが、
確かにGUIや業務系アプリケーションなどで利用される言語としてはマイナー言語なのかもしれません。
私はWeb開発関連の仕事をしていますが、JavaやC#やPerlなどが主でLispでWeb開発した話はほとんど知らないです。
任意の言語がなぜメジャーとなるのか、そのきっかけ自体は分からないですが、
いったんそのきっかけをつかむとメジャー言語の良循環(※)に乗ります。
言語自体の元々の文法や思想の良し悪しとは関係なく。
※良循環(なんとなくのイメージ):
言語のシェアアップ⇒ライブラリや開発環境の充実⇒メジャー業務やAPLへの適用⇒ノウハウや実事例の充実⇒(初めに戻る)
2.Lispの習得
Lispの習得についていうと、シンプルで美しい構造を持った言語なのでその習得は簡単なのですが、
構造がシンプルな分、利用にコツが必要で、かつ、利用方法の情報を入手しにくいため、
そういう意味での習得は難しいです。
(Smalltalkなども今となってはシンプルで美しいと感じますが、
知った当初は条件分岐や繰り返しの文法が全くなくてプログラムできるのか?と思ったものでした。)
なお、Lispの習得の導入については、やはり例のこの本が最も役立つのではないでしょうか。
英語版は無料ですべて閲覧できますし。
http://www-mitpress.mit.edu/sicp/
>>700 確かに速度の問題もあるだろうが、Lispよりはるかに遅い言語が結構普及しているのを見ると
なんだか悔しいよ。w
コピペ荒しまではじめたし、削除依頼よりアクセス禁止依頼のほうがいいかもしれんなぁ。
----------------------------------------------------------------------- 【注意】 現在、このスレには異常者が張り付いて 通常のスレの流れとは無関係なコピペ荒しを繰り返しています。 間違ってレスを付けても、通常の会話は行えませんので ご注意下さい。 -----------------------------------------------------------------------
>>696 >>699 住人が初心者に厳しいからだと思う。
説明は正しいけど誤解を招きやすい言い方をしたり、正しいけど言葉が足りてなかったり、間接的には関連するが直接は関係でない関連情報を出したりして初心者を混乱させて、混乱しているところを罵っている。
どこを誤解しているのか見極めて、その誤解を解こうという姿勢がない。
そんな義理ないといえばないのだけど。
>>710 キミのレス先はおかしい。
キミは何かとんでもない勘違いをしているのではないか?
----------------------------------------------------------------------- 【注意】 現在、このスレには異常者が張り付いて 通常のスレの流れとは無関係なコピペ荒しを繰り返しています。 間違ってレスを付けても、通常の会話は行えませんので ご注意下さい。 -----------------------------------------------------------------------
もしかして、
初心者さんに回答つけてる
>>593 ,
>>595 ,
>>596 ,
及び、それ以降の不特定多数の名無し
これ全部、別の初心者さんの書き込みで、
「自分は名無しで言いたい放題コメント付けたけど、
住人はそれに気付いて優しく扱ってくれなかった」
って駄々こねてらっしゃるんですか?
おっしゃっている意味がよく理解できません
>>710
>>710 逃げ回らず、ちゃんと答えなさい。
初心者さんの質問
>>591-592 ,
>>594 ,
>>597 初心者さんへの回答
>>593 ,
>>595-596 ,
>>598 >>597 以降、
>>591 氏は一度も発言していない。
もし初心者として考慮して欲しいのであれば、
あえてハンドルネーム 591 を消す必然性はない。
もしかして、
初心者さんに回答つけてる 593, 595-596,
及び、それ以降の不特定多数の名無し
これ全部、別の初心者さんの書き込みで、
「自分は名無しで言いたい放題コメント付けたけど、
住人はそれに気付いて優しく扱ってくれなかった」
って駄々こねてらっしゃるんですか?
君らさあ、議論にも参加しないで荒れただのなんだの言ってあげく個人攻撃までして楽しい?
ていうか初心者をいじめるのはかなりお角違いだけど、分かってないのに分かってるフリ
してるのが一番の問題でしょ。それで「言語仕様の本質は議論できない」とか捨てゼリフ
お前は言語仕様を理解してないっつーのw ていう。
そしてそういった議論に参加もせずに、質問の仕方が悪いとかLispとSchemeの違いとか
したり顔でツッコミいれておめでてーな。
>>591 の質問はなんも悪くないし
>>593 の回答もパーフェクト。
おかしいのは
>>598 とその自演だけだろ。それくらい分かれよ。
結局コンサルだの言って個人攻撃やってる奴や変な総括してる奴が一番悪いんだよ。
みんな数日ほっとこうよ。それまで一人寂しく自作自演させとこう。
720 :
717 :2007/04/11(水) 23:22:42
要するに、ここ荒してた人は、
>>598 以降の説明が気に入らなくて、
なおかつそれを指摘する気にもならず
荒しを始めたって事か
> 初心者をいじめるのはかなりお角違いだけど 初心者が初心者と名乗っている範囲では 誰もいじめてなんかいないだろ。
>>718 議論よろしく。
思い切り要点をぎゅっと圧縮した内容で。
この争いが、黄金のLisp時代の幕開けとなることを
>>1-722 は、知る由もないのだった!!!
♪♪
♪♪ ♪
結局、
>>710 は回答もせずトンズラ
>>718 は正論吐いてるフリして「議論しろ」とか言いながら
自身は議論してその仇敵みたいな奴をメタメタギタギタにする事もなくトンズラ
いつもの逃げ逃げパターンだな
726 :
718 :2007/04/11(水) 23:39:43
>>725 「議論」っていうのは
>>591 から
>>632 までの流れね。
ちなみに自分は
>>621 だから言うことは言っている。
その後の個人攻撃だの Lispと CommonLispの違いだの
どうでもいい総括だのは全く興味がない。
そういう奴こそが荒らしだと思う。
議論についての議論には興味ない Lispについての議論を頼む
>>718 >
>>591 の質問はなんも悪くないし
>>593 の回答もパーフェクト。
すると、初心者さんの質問はその「パーフェクトな回答」で終わってるはずだから
>>594 以降のレスは別の話だな。すると、
>>598 に文句を言う筋合いはなくなる。
次に
>>598 。こいつは自作自演している訳ではなく、
ただおっちょこちょいで Scheme全体の説明というよりは、
build-inの振る舞いを説明するための手がかりを説明しようと
四苦八苦してるだけだ。なんか嫌な言い方もしてるが、な。
その説明が不適切だと言うなら、
グダグダ長い文句を付けずに「答はコレだ」って所をスパっと示せば済む。
それをせずにグダグダ言ってるあたりに、痛さを感じる。
729 :
728 :2007/04/11(水) 23:44:01
730 :
728 :2007/04/11(水) 23:51:52
>>726 期待してるぞ。
ちゃんと説明する気があるなら返事をしろ。
あと、お前の説明が終わるまで、途中で口をはさむつもりはないから、
気が晴れるまで存分に説明してくれ。
これが俺のスタイルだ
732 :
728 :2007/04/12(木) 00:01:40
>>731 近所の本屋は平積みが一冊のみ、おれがそれを買ったw
>>727 同意。誰かオマエモナーって言ってね。
>>728 別にパーフェクトな回答だからって一発で理解できるとは限らないだろ。
そういうのはパーフェクトじゃないってのはなしで。別に
>>597 まで普通の流れじゃん。
>>598 がただのおっちょこちょいっていう読解力もどうかと思う。
>>599 (俺じゃないよ)への風当たりの強さがすごいおかしい。全員勘違いしてるの?
そうでなきゃ自演だよね。
そういえば
>>625 の 598=600は 598=606の間違いだと思う。606と600が同一人物とは思えない。
で、
>>625 はどう見ても理解してると思えない。
俺は621以降全力で説明したしグダグダ言ったつもりはない。だって答えは
>>593 で出てるし
(この質問とR5RSの引用は前もあった。何年か前に質問したのは俺だ。でも初心者はなんも悪くない。
過去スレ読めないしそれくらい質問してもいいし)。実装の話を付け加えただけ。
>>726 自分できちんと説明する気もないのに、
斜め上から物を語ってくるのではありませんよ。
そのような振る舞いは、不真面目な議論姿勢として
貴方の指摘する荒しと同様、排除されるべきものなのですよ。
よっぽど大きい本屋じゃないと、初回入荷分売り切れ状態っぽいね。 errata修正される増刷版も買っちゃいそうw
だから議論についての議論はもう(ry
738 :
デフォルトの名無しさん :2007/04/12(木) 00:12:48
もうその話はいいよ。うんざりだよ。そんなレス誰も読みたくないってば。
740 :
738 :2007/04/12(木) 00:18:25
> で、
>>625 はどう見ても理解してると思えない。
このフレーズもひっかかるな。
もしキミが、「
>>625 はどう見ても理解してると思えない」
と思ったなら、
>>612 ,
>>622 のような勝手な推量抜きで
間違っている点を率直に指摘すれば良い。
それが議論というものだ。
それをせずに
>>625 自体の想像まじりの事を言ってくるから
議論が成立しなくなるのだ。
ジーク・ジオン!!!
> で、
>>625 はどう見ても理解してると思えない。
このフレーズもひっかかるな。
もしキミが、「
>>625 はどう見ても理解してると思えない」
と思ったなら、
>>621 ,
>>627 のような勝手な推量抜きで
間違っている点を率直に指摘すれば良い。
それが議論というものだ。
それをせずに
>>621 ,
>>627 が勝手な推量まじりの事を言ってくるから
議論が成立しなくなるのだ。
メタ議論大好きっこばっかで、疲れた
おまえら、そんなにアンカーばっか張っても、いくら専ブラでも追ってまで読もうとは思わんぞ。w これだから負けず嫌いの人は嫌いなんだよ。ww
> 名前参照
初心者さん向けの説明の過程で
初心者さんがLispのスキルを持っていると仮定して
出した話だから、気にしないでくれ。
>>625 ,
>>627 こっちも初心者さん向けだ。
俺の理解はR5RS通りだから、もし気になるならR5RS読んでくれ。
全体として、議論の焦点が散漫になってしまって、
「理解していない人の議論」とか思われたり、
「理解していない人が誤解する」とマズイと思ったから、
夜になってから R5RSの日本語版該当項目をコピペした。
って事でもういい?
749 :
デフォルトの名無しさん :2007/04/12(木) 00:40:44
----------------------------------------------------------------------- 【注意】 現在、このスレには異常者が張り付いて 通常のスレの流れとは無関係なコピペ荒しを繰り返しています。 間違ってレスを付けても、通常の会話は行えませんので ご注意下さい。 -----------------------------------------------------------------------
750 :
デフォルトの名無しさん :2007/04/12(木) 00:41:56
ああ、終了で。 スパーンと「正解」説明してもらえるかと期待した俺がバカでした
揚足鶏じゃダメなんだよな、有益な議論つーのは。
これが俺のスタイルだ
だがおまぃのスタイルはスマートではない。
流れを読まずに Lispが流行らないのは、MSやSunみたいなでかい企業が処理系つくって大々的に宣伝しないからだと勝手に思ってたんだけど じゃあたとえばPerlやRubyはなんで流行ってるんだろう、と。 ユーザは「言語の目新しさ」に飛びついてるのかな?
Perlが流行ったのはWebというものができた時に一番手軽にCGIを書ける言語だったから じゃないかな。それ以前にもUnixコミュニティの中では使われてたけどね。 Rubyはよくわからんけど、最近欧米でもよく知られるようになったのはRoRの影響だろう。 やはり画期的なキラーアプリが必要なのかねぇ。
>>756 つemacs 22
;; だめかな〜?w
Lispはこれから流行る言語というよりは 過去に流行った言語なのだと思う。 最初のキラーアプリは数式処理。 次点でAI関連とか、あとぐーっと下がって開発環境とかCGとか。 Perlが流行った背景には、やっぱLisp的な扱いやすさがあった ような気がする。
これから Gaucheプログラミング が出るっていうのに、 そりゃ、あんまりじゃないですか _| ̄|○
>>755 なるほど、用途かぁ。Lispならではのキラーアプリ……
gaucheあたりでそのうち何か書かれてブレイク、という気はしなくもない。
あと妄想してるのは、HSPを置き換えてくれるような開発環境がLispで出てこないかなぁ、と。
HSPのユーザ層にS式はたぶんつらいから妄想なんだけど。
>>758 数式処理だと、たぶん現役のアプリ(mathematicaとか)でも使われてるよね。
でもそれだとLispはユーザの目に見えないところに隠れちゃってるから、Lisp自体の普及には貢献しないか。
エンドユーザが数式処理をプログラミングしてた頃はどんなだったんだろう。
>>757 まだ21を使ってるんだが、22で何か(Lisp的に)大きな変更あったの?
>>760 Maxima(オープンソースの数式処理システム)はCommon Lispで書かれてるから、
ソース読むと勉強になるよ。(ただし、かなり数学の知識は必要)
>>762 わーん。それ俺が言おうと思ってたのに orz
学生時代のLisp関連の締めは、やっぱMAXIMAだったな。
国内の最初のLispブームは、数式処理プログラム動かす事が目的で
Lisp処理系作ってた時代だと思う。
HLISPとかUTILISPとか。
その次に、AI用途も出てきて、
専用ハードウェアをNTTやメーカが作ったり。
そして、普及版の数式処理システムのためにReduceLisp(?)が出てきたり。
そもそも、とりあえずこれ使っとけ的な標準の処理系が無いのがですね… デファクトスタンダードなものはあるにせよ、ちょっととっつきにくい状況だと思うんだよね、と
>>764 同年代の人か?w
REDUCEはS-LISP(Standard LISPのつもりらしいが全くstandardにならなかったw)だったな。
懐かしい。
>>766 まさかー。
UTILISPは当時衰退の一途にあった大型計算機センターに載ってたから
ちょっと触ったことあるだけですよぉ。
Reduceは、BUGが専用のCPUカードと専用のLisp処理系を
一般向けに手が届く範囲で出してませんでしたっけ?
私が本格的に触り始めた数式処理システムはMAXIMAからですが・・・。
仕様が小さい
-> 処理系が割と簡単に書ける
-> 乱立する
->
>>765 Lispの性質に由来する構造的な問題だった説
CommonLispなら処理系作るの面倒だから乱立しようもなくて clispあたりが一番手頃だったと思うけど。 1?年前にはDOS上で動き始めてたし、今でもcygwinに入ってるし。 Schemeはいろいろ派閥がありそうだな。 俺はもうずっとscm〜guile系統しか見てないけど。 今メジャーな処理系ってどうよ?
UtiLispはCommon Lisp策定の直前に作られたのがある意味惜しまれるな
>>769 メジャーと言えるかどうか微妙だけど、Gnomeが使ってる関係でGuileはほとんどの
Linuxディストリに付いてくるね。Cygwinにも入ってる。
え?何故でしょう? そういえばUTILISPのオープンソースって 流れてませんでしたっけ。
>>772 言語仕様的にマイナーになってしまったよねという程度の話。
もちろん、速度優先の仕様にしたおかげで高効率で実用的な処理系になったという見方もできる。
延々引っ張った挙句、結局自分の言葉でもリファレンスでも説明しないでやんの。 数年前と比べて、著しく質が堕ちたなあ。口先ばっか。
一晩のうちにグダグダになってるw
自分の理解している定義を自分の言葉で説明しようとせずに、他人の発言に噛み付くってのは煽り・荒しの王道パターンだからな。
さくっと話題転換
あの難しい本以外に、 「猿でも分かる MOP」 みたいな解説は無いっすか? 英語でもいいんですが、いっぱい応用例が欲しい。
手習い本
783 :
デフォルトの名無しさん :2007/04/12(木) 15:56:57
>>782 当時(現役だったので)、購入して読んだけれど、
何だか、Flavorについてやたら詳しく書いてあったような
気がする。 (今や拙宅書庫の奥)
今のMOPとは少し違った気がするけれど。
Smalltalkの章もあったのでは。
−−UTILISP作者と同期のものより
>>783 今、現物を確認したが大部分はCLOSの話。実装寄りの話もあって、今読んでも面白い。
FlavorsとかLOOPSとかは、比較のところで出てくる感じだな。
(長大なソースコードがそのまま掲載されているのがネットの普及してない時代を感じる)
ちなみに第6章「メタオブジェクト」の著者はBobrowとKiczalesだ。
(言うまでもないがAMOPの著者)
CLtL2刊行前の本なので、便宜のためCLOSの仕様書も入っている。
(この辺は今では要らない部分だろう)
内容はどうよ 今でも役立つ?
自力で CLOS 作るくらい楽勝って人ならもう見るべき所はないかもね。 漏れみたいな一ユーザーにはとても勉強になる。クラスの継承関係の解決とか 細かいアルゴリズムが日本語で説明されてて当時はとっても勉強になた。
>>787 役立つかどうかは読者次第だろうけど、今でも得られるものは多いと思う。
ただ、そのまま復刊するのはいかがなものかと思う。(古臭い部分もあるので)
関係者が版権放棄してネット配布できるようになると良いだろうね。(難しいだろうけど)
>>789 キタ━━━━━━(゚∀゚)━━━━━━ !!!!!
>>789 うぉぉぉぉおおおおおぉぉぉぉおおおおおおおおおおおお!!!!!!!!!!!!
どうなってんじゃぁぁああああああああ!!!!!!!!!!!!
793 :
デフォルトの名無しさん :2007/04/13(金) 03:54:15
工作員は、工作員の話をすると寄って来るからぜっったいに工作員の話はしちゃダメだよ! ちょっと前の流れは全員自演に見えてくる。 情報操作する人(畜生の一種)は、荒らしたり、祭りにしたり忙しいからな。
お前がしてるじゃないか
なんとなく、ユダ という言葉を思いついた。
最近括弧見ねぇな
>>774 自分自身の拠所となる考え方を持っていない奴の発言は大抵そうだ。
798 :
797 :2007/04/13(金) 07:54:28
>国内の最初のLispブームは、数式処理プログラム動かす事が目的で >Lisp処理系作ってた時代だと思う。 >HLISPとかUTILISPとか。 HLISPはそうだけどUtiLispが数式処理プログラム目的だったとは初耳 ソース教えて欲しい -昔UtiLispに関わっていた者より
>>799 お疲れ様です。
貴方のご発言には別に悪意も何も持っておりませんが、
どうやら誤解が生じてしまったようですね。申し訳ない。
UtiLispの件、キラーアプリとしての数式処理という話で
よく知らないMacLispを出すのは問題あるし・・・等考えている中で、
つい筆がすべってしまいました。
私自身は、汎用機のUtiLisp上のUranusに触れた事があるだけで、
そこに設置されていたUtiLispの本来の目的は
記憶があやふやになっております。
可能であれば、UtiLisp開発の背景や目的等語って頂けないでしょうか?
ここは和田研同窓会会場ですか?
俺は中西研です
思い出話は黒板にでも書いててくれ
ここには若い奴はいないのか?
俺30になったばかりだからここでは若い方だと思う
まだ19。かなり若い方?
自作自演が続きます・・・
808 :
デフォルトの名無しさん :2007/04/14(土) 11:51:07
>ここには若い奴はいないのか? 年寄りもいるぞ!!!
nanda sorya
荒らし耐性のなさといい、自己中な思い込みの激しさといい 頭でっかちな年寄りが多いスレだな。ここはww
荒し発言、自作自演はスルーで
clisp使ってUDPの通信プログラム作りたいんだけど これってRAWSOCK packageいじるしかないの? SOCKET:SOCKET-STREAMはTCPだけ? あとRAWSOCKパッケージ使って (RAWSOCK:socket AF_INET SOCK_DGRAM 0) とやるとclispから There is no package with name "RAWSOCK"って言われるんですけど ヘルプ見る限りではGNU CLISP 2.36からRAWSOCKパッケージが追加されたんだよね? それなのにCLISP 2.41でRAWSOCK使えない... 何か別にパッケージインストールしないと駄目なんですか? どなたか教えてくれませんか?
自分の使ってるOSの名前くらい晒したまえ
あ、すみません Linux(Fedora Core 6)です
When this module is present, *FEATURES* contains the symbol :RAWSOCK.
>>815 もう少し詳しく教えてもらうわけには行きませんでしょうか?
無理して頭の弱そうな挑発しなくてもいいって
819 :
デフォルトの名無しさん :2007/04/15(日) 00:18:18
おいキチガイ お前の会話、つまんねぇんだ お前が何かコンプレックス持ってるなら、 多少は相談に乗らないでもないから、 まずはお前の悩みを語ってみろよ
2chで聞かれたら答える義務なんてないでしょ。粘着煽りきもいよ。w
手元にLinuxなCLISPが無いのでCygwinで試してみたが、やはり *features* に :rawsock は無いな。 どういう環境なら実装されてるんだろ。
>>820 僕の言うことを聞かない人間なんて
この惑星に居てはいけないのです。
ここのみんながおまえと同じ惑星に居ると思ったら大間違いだ
それは
>>799 の中の人が返事すればいいこと。
さーて、和田研関係者にそれとなく該当人物の探りを入れてこようかなw
普通、昭和時代の話なんて忘れてるだろw
実は近山先生と一緒にUtiLisp作ってた人物ってのは、 論文に出てるw
CLISP 2.41 on Linux だけど :RAWSOCK あるよ。つうか、Win32 の公式配布物にも入ってるようだが。 Fedora は全然知らんのだけど、おそらくバイナリパッケージで入れたんだよね。パッケージメンテナに聞いてみたら?
>>822 --with-module=rawsock オプション付けてリコンパイル汁
バイナリ中のモジュール足りなかったら コンパイルオプション確認してリコンパイルするのが cygwin〜linuxの常識だろ 今まで6時間、いったい何やってたの
べっ、別に6時間これに掛かりっきりになってたわけじゃないからねっ!
こんな所で遊んでるくらいだったら、 むしろErlangスレを盛り上げてろ 盛り上がって情報出揃った頃合を見計らって おいらが内容をチュルッと吸い上げるから
>cygwin〜linuxの常識だろ そーゆーのがすっごい障壁なんだよね。 linux系の常識的なことってロクに情報がない or 見つけにくい。
学生さん?訓練足りてねぇ〜よ Linuxのパッケージ再構築して自分の環境カスタマイズなんて 中高生でもやってる基本スキルなんだから、きちんとマスター汁。
やっぱ、こいつらには何を言っても無駄なんだなぁ。
Windowsでインストーラ叩くのが精一杯の人にはLinuxを使いこなすのは難しい。 ムリにLinux使わず、Windows用のバイナリ探した方がいいんじゃね?
>>838 (その人、パッケージソフトマンセーでオプソOSの詳しい内容など知りたくも無いっつうタイプの人らしいよ)
>>840-841 お前がダメダメなのはよく判った。
とりあえず、Windows用のバイナリ探してみそ。
もし見つからないようなら、リコンパイルの方法教えてやるから
Linuxはタコユーザを神として扱わなけりゃならん文化だから疲れる。
>>840-841 ダメダメなタコユーザ様、Windows用バイナリの所在は探せましたか?
ダメダメなタコユーザ様は不貞寝をなされた模様ですwww
タコって久し振りに聞いた。懐かしいな。悪しき習慣だったけど。 自分が使う道具は隅々まで手を入れたい職人気質と、使えれば何でも良い 一般人の考えが相容れないのは仕方が無かろう。双方とも矛を納めよ。
847 :
834 :2007/04/15(日) 01:35:45
俺は
>>831 の一言に横から反応しただけなんで、そんなもん探してない。
そういう問題ではない。 clispで何か開発しようというのに、 そのバイナリのコンパイルオプションに無頓着なのは 素人じみている。 俺は別に素人にlisp広めようとか、ぜひ使って欲しいとか 思わないから、厳しく扱うだけだ。おk?
849 :
834 :2007/04/15(日) 01:38:45
>>846 俺は使えれば何でも良いっていうよりは職人気質に近いんだが。
だからこそ、Linux系は好かん。お前らにここでグダグダ言っても
仕方がないことであることも十分理解しているから矛は収める。
もし、このスレを通じてlispの普及を図りたいという人間が居るなら 自分で資料を探して、ここにそれを書けばいい。 質問の礼儀を知らないカスは、冷淡に扱う。それが人間関係の基本だ。
>>849 職人様のお好きな環境は何ですか?
Windows?Solaris?HPUX?
まあ、矛をおさめるって言ってるんだから、もう良いじゃん。
結局職人様は、ここで愚痴を言いたかっただけで、 この場を通じて問題解決を図る気など毛頭なかった という訳ですか。 しょーもねぇスレ汚しですね。
結論:自称職人様はLinuxを使いこなせないので愚痴が多い
すぐ調子に乗って荒らし煽りに反応する。 そういうのに餌やってるだけって解ってるだろ? いい加減にスルーしなさいよ。
>>855 そういう本筋から外れた話をぐちぐち続けるのを「スレ汚し」と言う。
本筋覚えてる?
結構みんな CLISP 使ってるの? SBCL 一択だと思ってた。
そういう話は
>>812 に聞いてくれ。
何故SBCL使わないんだって
数年前までに書かれた入門サイトとかは CLISP 前提なのが多かった様な気がする。 SBCL 前提の日本語のサイトは比較的少ない感じなんで、その所為かもね。
リコンパイルの話はどこに消えた? また脳内仮定で質問しただけか
その話はもう終わってるよ。
職人様のLinuix嫌いの話はどこへ行った? 全然関係ない話でスレ汚ししただけか。
SBCLで何をしたいんだ
以前、日本人で x86 向けの Scheme コンパイラ作ってる人居なかったっけ? ホムペ探したけど見つからなかった。その後どうなったのかなあ。
話題飛びすぎ。相手にするに値しない。スルー。
スルー出来てねえwww
>>850 特に礼を失しているわけでもない質問に「礼儀がなってない」というレッテルを貼って
勝手な理屈で冷淡に扱ってストレス解消するのは、あんまり人間関係の基本ではないよ。
礼を失しているかどうかは、第三者ではなく当事者間で決めるべきこと。 貴方は当事者ですか?
>第三者ではなく当事者間で決めるべきこと。 んなことはない。評価は誰でも行うモンだ。 それよりも話題戻そうぜ。 CLOSの総称関数は引数の数を同じにする必要があるけど、これって何で?
>>868 常識に照らし合わせつつ、当事者の片方の「そう思いたいからそう思ってるだけ」な行為を
第三者として指摘しているわけだね。
それに、オフラインの物事と違って、このスレで出会った者達のこのスレでのみ行われた対話だから、
一般に「当事者間が決めるべきこと」とされる理由の一つである「当事者にしか判断できない何か」が
この件では皆無に等しい。そっちの意味でも、第三者の指摘から逃げる理由は薄いね。
>>871 C++のオーバーロードの例を出してもいいかな。
こいつを考えるとそれは全然説得力ないのだけど。
総称関数の選択メカニズムは動的。 Cのオーバーロードは・・・仮想関数なら動的かな。 ただ、CLOSの総称関数と C++のメソッドでは考え方が違う。
というわけで、いきなり「ダメダメ」と全否定してくるような人物は 社会性やコミュニケーション能力が低すぎて コミュニティ的活動にはそぐわない。 ・・・びじねす活動ではそれでも遣り手なつもりなんだろうけど。
875 :
864 :2007/04/15(日) 03:23:01
見つけた。
>>874 結局は全否定でしかないものを何行かに「それっぽく」引き延ばしても、
同類は同類ですよ。
全否定したがる人間というものは単なる我侭な構ってチャンだ
>>876 結局、何を言いたいの?
親切丁寧にリコンパイル方法を教えて欲しかったの?
自分の意見をきちんと言わない人間は、まともに扱われなくても当然だ。
>>878 「結局は全否定でしかないものを何行かに「それっぽく」引き延ばしても、同類は同類だ」
ということが言いたいのです。
あなたは狂っています スルー推奨
処理系のリコンパイルにいちいち文句を言って 挙句に「お前らに言ってもしようがない」までのたまった 自称職人はどこに消えた?
業務系の連中には彼のように頭が固い奴が多いんだ。 彼らの生活は、なんでも勝手な線引きをして「これは俺の仕事or責任ではない。他の奴の仕事・責任だ。他人の怠慢が絶対的に悪い」 ってな責任転嫁に明け暮れる毎日だ。 だから奴らの作ったシステムはたいてい金喰い虫のバグだらけだ。 ここでの無責任発言の連発を見ていれば大体想像がつくだろう。
____ / \ /\ キリッ . / (ー) (ー)\ / ⌒(__人__)⌒ \ だから奴らの作ったシステムはたいてい金喰い虫のバグだらけだ。 | |r┬-| | ここでの無責任発言の連発を見ていれば大体想像がつくだろう。 \ `ー'´ / ノ \ /´ ヽ | l \ ヽ -一''''''"~~``'ー--、 -一'''''''ー-、. ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒)) ____ /_ノ ヽ、_\ ミ ミ ミ o゚((●)) ((●))゚o ミ ミ ミ /⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\ /⌒)⌒)⌒) | / / / |r┬-| | (⌒)/ / / // だっておwwwwwwwwwwwwwwwwwww | :::::::::::(⌒) | | | / ゝ :::::::::::/ | ノ | | | \ / ) / ヽ / `ー'´ ヽ / / バ | | l||l 从人 l||l l||l 从人 l||l バ ン ヽ -一''''''"~~``'ー--、 -一'''''''ー-、 ン ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
↑ごらん、これが業務コンサル(元豆蔵)の議論態度だ。
886 :
885 :2007/04/15(日) 09:16:05
888 :
885 :2007/04/15(日) 09:30:10
____
n /⌒ ⌒\
| | /( >) (<)\
i「|^|^ト、/::::::⌒(__人__)⌒::::: \
>>887 乙だお!
|: :: ! } | /| | | | | |
ヽ ,イ \ (、`ー―'´, /
 ̄ ̄ ̄
890 :
885 :2007/04/15(日) 09:43:23
ねえねえ、なんでVIPで やらないのかお?www ___ / ̄ ̄\ ___ /⌒ ⌒\ おっ :/ _ノ \:おっ ./⌒ ⌒\ ♪ /( ●) (●)\ おっ :| 。(●)(●): おっ/(●) (● )\ /:::::⌒(__人_)⌒::\. :| (__人): /::⌒(_人__)⌒:::: \ クオリティ低いって | |r┬-| | :|.......::::: `⌒ノ:. | |r┬-| | 自覚してるのかお?www __ _ \ `ー'´ / |::::::::::: }: \ `ー'´ /__ ヽ___ 、`\ ヽ::::::::: }: / ヽノ ___/ / /ヽ < r " r ノ: 〉 /\ 丶 / /  ̄ :|::| :::| :::i ゚。  ̄♪ \ 丶 / / ♪ :|::| :::| :::|: \ 丶 (_ ⌒丶... :` | :::| :::|_: /⌒_) | /ヽ }. :.,' :( :::} } ヘ / し )). ::i `.-‐" J´(( ソ トントン ソ トントン
荒し・煽りはスルーしましょう。
処理系のリコンパイルにいちいち文句を言って 挙句に「お前らに言ってもしようがない」までのたまった 自称職人はどこに消えた?
893 :
885 :2007/04/15(日) 09:46:36
業務系の連中には彼のように頭が固い奴が多いんだ。 彼らの生活は、なんでも勝手な線引きをして「これは俺の仕事or責任ではない。他の奴の仕事・責任だ。他人の怠慢が絶対的に悪い」 ってな責任転嫁に明け暮れる毎日だ。 だから奴らの作ったシステムはたいてい金喰い虫のバグだらけだ。 ここでの無責任発言の連発を見ていれば大体想像がつくだろう。
894 :
885 :2007/04/15(日) 09:51:53
アロマ企画アロマ企画アロマ企画アロマ企画アロマ企画アロマ企画アロマ企画 画企マロア画企マロア画企マロア画企マロア画企マロア画企マロア画企マロア アロマ企画アロマ企画アロマ企画アロマ企画アロマ企画アロマ企画アロマ企画 画企マロア画企マロア画企マロア画企マロア画企マロア画企マロア画企マロア アロマ企画アロマ企画アロマ企画アロマ企画アロマ企画アロマ企画アロマ企画 画企マロア画企マロア画企マロア画企マロア画企マロア画企マロア画企マロア アロマ企画アロマ企画アロマ企画アロマ企画アロマ企画アロマ企画アロマ企画 画企マロア画企マロア画企マロア画企マロア画企マロア画企マロア画企マロア アロマ企画アロマ企画アロマ企画アロマ企画アロマ企画アロマ企画アロマ企画 画企マロア画企マロア画企マロア画企マロア画企マロア画企マロア画企マロア
895 :
885 :2007/04/15(日) 09:54:23
896 :
885 :2007/04/15(日) 09:55:25
____ /⌒ ⌒\ /( >) (<)\ /::::::⌒(__人__)⌒::::: \ シシシシシシシシッ | /| | | | | | \ (、`ー―'´, /
897 :
885 :2007/04/15(日) 09:56:46
____ /_ノ ヽ、_\ ミ ミ ミ o゚((●)) ((●))゚o ミ ミ ミ /⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\ /⌒)⌒)⌒) | / / / |r┬-| | (⌒)/ / / // これで満足したかおwwwww | :::::::::::(⌒) | | | / ゝ :::::::::::/ | ノ | | | \ / ) / ヽ / `ー'´ ヽ / / バ | | l||l 从人 l||l l||l 从人 l||l バ ン ヽ -一''''''"~~``'ー--、 -一'''''''ー-、 ン ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
↑ごらん、これが業務コンサル(元豆蔵)の議論態度だ。
899 :
885 :2007/04/15(日) 10:01:42
900 :
885 :2007/04/15(日) 10:03:19
901 :
885 :2007/04/15(日) 10:07:59
____ / \ /\ キリッ . / (ー) (ー)\ / ⌒(__人__)⌒ \ 荒し・煽りはスルーしましょう。 | |r┬-| | \ `ー'´ / ノ \ /´ ヽ | l \ ヽ -一''''''"~~``'ー--、 -一'''''''ー-、. ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒)) ____ /_ノ ヽ、_\ ミ ミ ミ o゚((●)) ((●))゚o ミ ミ ミ /⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\ /⌒)⌒)⌒) | / / / |r┬-| | (⌒)/ / / // だっておwwwwwwwwwwwwwwwwwww | :::::::::::(⌒) | | | / ゝ :::::::::::/ | ノ | | | \ / ) / ヽ / `ー'´ ヽ / / バ | | l||l 从人 l||l l||l 从人 l||l バ ン ヽ -一''''''"~~``'ー--、 -一'''''''ー-、 ン ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
902 :
800 :2007/04/15(日) 10:19:11
あらら。なんか荒れてますけど
799 名前: デフォルトの名無しさん [sage] 投稿日: 2007/04/13(金) 11:11:46
>国内の最初のLispブームは、数式処理プログラム動かす事が目的で
>Lisp処理系作ってた時代だと思う。
>HLISPとかUTILISPとか。
HLISPはそうだけどUtiLispが数式処理プログラム目的だったとは初耳
ソース教えて欲しい
-昔UtiLispに関わっていた者より
そろそろ
>>800 にご回答お願いできますか?
荒らし乙
905 :
864 :2007/04/15(日) 12:07:50
>>881 うん、それだった。どうもありがとう。ちょっとお休み中みたいですね。
それは「UTILISP作者と同期」氏が回答すべき事だ
Fランク大出身者には回答が難しいのだろうと思った。
同期氏と関わってた氏は同一人物なのか?
うん、文体は一緒だね。
799 名前: デフォルトの名無しさん [sage] 投稿日: 2007/04/13(金) 11:11:46
>国内の最初のLispブームは、数式処理プログラム動かす事が目的で
>Lisp処理系作ってた時代だと思う。
>HLISPとかUTILISPとか。
HLISPはそうだけどUtiLispが数式処理プログラム目的だったとは初耳
ソース教えて欲しい
-昔UtiLispに関わっていた者より
そろそろ
>>800 にご回答お願いできますか?
なんだ、突然Fランク大が発狂したぞ。
>>912 お願いだから他のスレへ行ってくれ。先週荒らしてたのもおまえだろ。
「昔UtiLispに関わっていた者」さん、 ご回答よろしくお願いしますね。
偏執狂って怖いな
「Fランク大」という言葉を使うのが厨っぽい。子供なんだからほっとけ。
なんだ嘘がバレると人格攻撃か。 つまらない嘘、つかなければ良かったのにね
2chなんてみんな嘘だろ。真に受けて(?)粘着する奴がアホですよ。
>>913 もうこうなったらどうしようもないよ。何か言って止めるようだったら
最初からこんな事はしないからね。2, 3 日放っておけば居なくなる
から、しばらく別のスレに行っていると良いよ。むしろ何とかして
止めようとすると逆効果。荒らしは構ってもらうのが一番嬉しいから。
もう一回言うけど、荒らしは構って欲しいから荒らしてるんだよ。
>>916 それは荒しの書き込みのようですので、
スルーすべきかと。
私もUtiLispにお世話になった者として、
正確な所を知りたいです。
ぜひとも当初の目的等お話下さいよ。
お願いします。>>関わっていた者様
昨晩の荒しはひどかったな。
結論:「関わっていた者」氏は架空の人物の可能性が極めて濃厚 荒しはすぐ氏ね
先週このスレに来てたからと言って、今ここを読んでるとは限らないのでは?
そうですね。 来週まで待つのが順当かと思いますが・・・ 現在荒しが常駐してスレを消費していますので、 取り急ぎ、ご回答をお願いしている所です。 なにしろ水曜日の深夜2時半という特殊な時間に ここで御発言をなされた方ですので、今現在も ちょくちょくここを覗いておられる可能性が高いかと。
今日の 22:00 まで誰も書き込まなかったら、スレが正常化する気がするなあ。
それはムリというものでしょう。 あなたの勝手な都合で他の人の発言を封じる事など無意味ですから。
素早いなぁ。チャットみたいだ。w
参加者:3名
まあ、スレが正常化すると困る人間がいるのは分かったな。
それはキミの事ですね
>>920 俺もその話は興味ある
是非教えて欲しいな
なんで「関わっていた者」氏は
話を出ししぶるんだろう
まるで本当の話など知らないで
物を言っているだけのようにも見える
無駄な話でスレを消費する荒しはスルーしましょう
この流れの早さ!! Lispスレもメジャーになったな! …と思いきやorz
Fランク大出身の人間に何を言っても無駄ですよ。 学習能力がないからこそ学歴も低いわけですから。 飽きるまで放っておくしかないと思います。
r6rs の承認プロセスの決定が今日までみたいだけど、年内に仕様は決まるのかな。 r5rs の時もこんなに時間掛かったの?
>>937 schemeの規格策定に時間がかかるのはいつものことだろ
ちょっと調べたら r5rs は 1992-1998 の 6 年間も掛かったみたいね。 r4rs までは 1-2 年で策定されているけど。
最近忙しいので2chは時々しかこないのだけれど 何故か俺の発言が荒れネタになってる? 単なる質問以上のものではなかったのだが... 関わったって言っても使ってた側だから当初の開発目的までは知らないし 和田先生はUnixみたいなツールを汎用機上でも作れるようにって言ってたけど 近山氏(当時)から世界一速いmodern Lispを作りたかっただけと聞いた様な気がする あ,同期の人とは別人 それからUtiLispは元々オープンソースだし68kやSparc移植版も同様 長文スマン
(gc)
そろそろ次スレの季節ですな。新スレは良レスに恵まれますように。
思い切って「Scheme」と「Common Lisp」と「その他のLISP」に分けるか。 もちろんUtiLispのお話は「その他のLISP」で。w
2 ヶ月で 1 スレ消費か。今までは半年くらいは保ったのに、 Part 11 スレを追い抜く勢いだな。
黒田先生のおかげだな
あんたはさあ 自分を客観的に見れないの? 人に回答をせまり、自分へのつっこみには> >747 「気にしないでくれ」 「自分の理解はR5RS通りだから」 自分で敗北を自覚してるのかと思いきや捨てゼリフ あげくまた荒らし。存在が恥ずかしいよ
荒しキタ━━━━(゚∀゚)━━━━ 荒しスル━━━━(゚∀゚)━━━━
一人だけ明らかに頭の作りが劣悪だね
どうでもいい事によくここまで心血を注げるよなw
ハイジニックマクロ書いてると...が頻出するよな。 ときどきtanasinnなカンジになる。
>>952 能力が必要なことで喧嘩すると痛い目に遭うこと必至な人(遠回しな表現)なんでしょう、きっと。
>>953 女のパンツを脱がすのに、いちいち「脱がしていい?」と聞くような
不粋さを感じることが多々あるな。
パンツを引き裂く自由もあって然るべきなんだが。
いきなりパンツを引き裂くのはhygienic(衛生的)ではないということだな
リスプもスキームも嫌いになりそうだからここのスレ荒らす。次スレもよろしくな。
勝手に嫌えばいいだろ。スレは荒らすな。
業界厨 大体どこの板にでも出現する、業界人の知識ひけらかし厨房の総称 一般人の会話の最中に「藻前は何も知らないな」などと自分だけが知る業界話でさえぎる習性がある ただ親切に教えるだけなら害はないが、自分だけが知ってる知識のひけらかしであり、 それを知らない一般人をとことん馬鹿にするが、 自分にはその業界以外の知識が全く無いただの井の中の蛙である。
何たるルサンチマン
■ おすすめ2ちゃんねる 開発中。。。 by FOX ★ このスレを見ている人はこんなスレも見ています。(ver 0.20) ナチュラリープラス スーパールテイン14粒目 [ベンチャー] ThinkPad X series Part46 [ノートPC] JR東日本 社会人採用対策スレッド 2006 Part6 [転職] 【 日興コーディアル証券 PART4/トップ刷新編 】 [money] リクナビNEXTで職探し 107社目 [転職] --- これをみて、荒れる前と荒れる後で来る人たちが随分変わっ たんだなと実感している。
まぁその機能、専ブラでの閲覧はスルーしてるからね。 固定的な利用者の現状とか推移はあまり反映されない。 「普段はwebブラウザでちょこっと遊びに来るだけの身だが、 一時的に特定スレに張り付いてリロードしまくってる」 という人間の行動が最も積極的に反映される。
963 :
デフォルトの名無しさん :2007/04/16(月) 17:20:29
手のりウタうたう僕のユメクイ〜
Gauche 0.8.7を使っています。 srfi-1のmap!の使いかたがいまいちよくわかりません。 infoの -- Function: map! f clist1 clist2 ... [SRFI-1] 手続き F は CLIST1 の各要素と CLIST2 の対応する要素 に適用され、結果なひとつのリストに集められます。CLIST1 のセルは 結果のリストを構築するのに再利用されます。 という説明からは、 (define (inc x) (+ 1 x)) (define x '(1 2 3 4)) (map! inc x) x ;=> '(2 3 4 5) となるように思えるのですが、 実際は x ;=> '(1 2 3 4) となってしまいます。 これはどういう操作をする物なんでしょうか。
965 :
964 :2007/04/16(月) 17:47:35
すんません、 自分でなんか定義したもので上書きされていたらしく、 再起動してみたら (define (inc x) (+ 1 x)) (define x '(1 2 3 4)) (map! inc x) x ;=> '(2 3 4 5) となりました。 お騒がせしましたorz
うまく動かなかったり動いたりしてるのは、リテラルに対して破壊的操作を してるせいじゃないの? 破壊的操作をするのであれば (define x (list 1 2 3 4)) みたいにして mutable なオブジェクトを作ってあげないと。 R5RS の 3.4 Storage Model、4.1.2 Literal Expressions を参照。
>>965 map!で元のリストを破壊的に書き換えなくても、
mapの戻り値を使えば良いのでは?
968 :
964 :2007/04/16(月) 18:36:00
>966,967 ありがとうございます。 何をやっていたかというと、CPUシミュレータを作るので、 それ用のコンパイラもどきを作る、ということをやっていました。 具体的には、 (program test-b ; label (= 0 b test) (jft test (label gcd-done)) (rem a b t) (mov b a) (mov t b) (jmp (label test-b)) gcd-done ) ; label のようなリストを、 #0=((= 0 b test) (jft test ()) (rem a b t) (mov b a) (mov t b) (jmp #0#)) の様に変換するコードを書こうとしていました。この形式なら後で楽できるので...
969 :
964 :2007/04/16(月) 18:37:18
セルの操作なので、リテラルなので操作できないと言うことは無いと思います。 また、始めは破壊的操作なしで出来ないかと考えたのですが、 どうも上手いやりかたを思い付かなかったので、破壊的操作でやりました。 結局こんな感じのコードになりました。 (define (compile prg) (define label-tag 'label) (let loop ((c (reverse (list-copy prg))) (lbl '()) (obj '())) (cond ((null? c) (map! (lambda (line) (map! (lambda (word) (if (and (pair? word) (eq? label-tag (car word))) (cdr (assq (cadr word) lbl)) word)) line )) obj )) ((pair? (car c)) (loop (cdr c) lbl (cons (car c) obj)) ) ((symbol? (car c)) (loop (cdr c) (cons (cons (car c) obj) lbl) obj) ) (else (error)) ))) 何かいいアイディア等あったらよろしくお願いします...
reverseするならlist-copyは不要だろうし 外側のmap!はfor-eachにして次にobjを返す 内側のmap!もループにしてset-car!を使う
>>969 R5RS ではリテラルへの破壊的操作はエラーだとされてるよ
'() じゃなく (list) だろうな。
関係なかった orz
外側のmap! をmapに変える
リストの破壊的操作が必要になるのは 内側mapだけじゃないかな。 (label ラベル名) を (label ラベルの次のコード) に置換して リストをループさせる所。
977 :
964 :2007/04/18(水) 15:39:19
ありがとうございます >970 list-copyは、元のprogramのリストを残しておくためにしています。 reverseしただけだとトップレベルのリストのみしか新しく作らないので、 ラベルをアドレスで置き換えたときに元のprogramも書き換わってしまいます。 for-eachにすると、こんな感じになりますね。 (define (path2 lbl obj) (begin (for-each (lambda (line) (let loop ((ln line)) (if (null? ln) #t (begin (if (and (pair? (car ln)) (eq? label-tag (caar ln))) (set-car! (cdr (assq (cadr word) lbl))) ) (loop (cdr ln)) )))) obj ) obj )) これは、確保する新しいセル数が減るからでしょうか。 でもmap!なら、元のセルが使われるので変わらないような気もするんですが どうなんでしょうか。 >974 それでも大丈夫ですが、始めにlist-copyで内部で使うセルを取ってきているので、 セルの有効活用の観点から、map!を使っています。
をっ。今回の対決で白黒つくのか?謎
ビキニで泥レスするなら見に行く
某エロゲをやったらS式だらけのログ吐いてびっくりした
こうして対決を煽るえんどうであった
変なのがずぅーっとへばりついてるな
人の迷惑顧みず
>>984 書き込み時間を見ると、Erlang スレの荒らしと同一人物っぽいね。
クリリンのことかーーーーーー!!!(AA略
)、._人_人__,.イ.、._人_人_人 <´キャンセルじゃ、デリヘルキャンセルじゃ!> ⌒ v'⌒ヽr -、_ ,r v'⌒ヽr ' ⌒ // // ///:: < _,ノ`' 、ヽ、_ ノ ;;;ヽ // ///// /:::: (y○')`ヽ) ( ´(y○') ;;| / // //,|::: ( ( / ヽ) )+ ;| / / // |::: + ) )|~ ̄ ̄~.|( ( ;;;|// //// /// :|:: ( (||||! i: |||! !| |) ) ;;;|// /// ////|:::: + U | |||| !! !!||| :U ;;; ;;;| /// ////|::::: | |!!||l ll|| !! !!| | ;;;;;;| //// // / ヽ::::: | ! || | ||!!| ;;;;;;/// // // // ゝ:::::::: : | `ー----−' |__////
リバースフィボナッチのリストをだすプログラムを作らなければいけないのですが 下のやり方だとコンマが入ってしまいます どうしたらいいでしょうか? (define (rev-fib m n) (if (> n m) m (cons m (rev-fib n (- m n)))))
(define (rev-fib m n) (let loop ((m m) (n n) (r '())) (if (> n m) (reverse! r) (loop n (- m n) (cons m r)))))
(define (rev-fib m n) (if (> n m) (cons m null) (cons m (rev-fib n (- m n)))))
>>992 >>994 ありがとうございます!
もうひとつ(longest xs)を使って一番長いリストだけを表示するプログラムを
作らなければいけないのですがどなたか教えていただけませんか?
(longest '((1 2 3) (1) (1 2 3 4) (1 2) (2 3 4 5) (1 2 3)))
=((2 3 4 5) (1 2 3 4))
このような感じのものです
宿題は指導教官に聞けよ
>>996 一応一通り聞いてこれが最後の問題なのですが提出が明日の朝なので
どうしても今終わらせないといけないんです。。。
教えていただけないでしょうか?
次スレよろしく
1000
(define (longest l) (let ((max-len (apply max (map length l)))) (filter (lambda (x) (= (length x) max-len)) l)))
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。