Lisp Scheme Part27at TECH
Lisp Scheme Part27 - 暇つぶし2ch1:デフォルトの名無しさん
09/07/27 10:15:31
※ ここはCommon Lisp、SchemeをはじめとするLisp族全般のスレです ※

■過去スレ
 Part26: スレリンク(tech板)
 Part25: スレリンク(tech板)
 Part24: スレリンク(tech板)
 Part23: スレリンク(tech板)
 Part22: スレリンク(tech板)
 Part21: スレリンク(tech板)
 Part20: スレリンク(tech板)
 Part19: スレリンク(tech板)
 Part18: スレリンク(tech板)
 Part17: スレリンク(tech板)
 Part16: スレリンク(tech板)
 Part15: スレリンク(tech板)
 Part14: スレリンク(tech板)
 Part13: スレリンク(tech板)
 Part12: スレリンク(tech板)
 Part11: スレリンク(tech板)
 Part10: スレリンク(tech板)
 Part09: スレリンク(tech板)
 Part08: URLリンク(pc5.2ch.net)
 Part07: URLリンク(pc5.2ch.net)
 Part06: URLリンク(pc3.2ch.net)
 Part05: URLリンク(pc3.2ch.net)
 Part04: URLリンク(pc.2ch.net)
 Part03: URLリンク(pc.2ch.net)
 Part02: URLリンク(pc.2ch.net)
 Part01: URLリンク(piza2.2ch.net)

■テンプレート置き場
 URLリンク(wiki.fdiary.net) (id:guest pass:cl)

2:デフォルトの名無しさん
09/07/27 10:17:59
■仕様関連
□The final public draft of the ANSI X3.226-1994 (英語)
 URLリンク(lispm.dyndns.org)
□CLtL2: Common Lisp the Language 2nd edition (英語)
 URLリンク(www-2.cs.cmu.edu)
□CLHS: Common Lisp Hyper Spec (英語)
 URLリンク(www.lispworks.com)
□Common Lisp Quick Reference (英語)
 URLリンク(clqr.berlios.de)
□R5RS: Revised(5) Report on the Algorithmic Language Scheme (英語)
 URLリンク(swiss.csail.mit.edu)
□R5RS: Revised(5) Report on the Algorithmic Language Scheme (日本語)
 URLリンク(www.sci.u-toyama.ac.jp)
□ERR5RS: A proposal for an Extended R5RS Scheme (英語)
 URLリンク(scheme-punks.cyber-rush.org)
□R6RS: Revised(6) Report on the Algorithmic Language Scheme (英語)
 URLリンク(www.r6rs.org)

■Lisp全般に関する情報源
□LISP - Wikipedia (日本語)
 URLリンク(ja.wikipedia.org)
□Association of Lisp Users (英語): 米国のLispユーザ会です。
 URLリンク(www.alu.org)
□日本Lispユーザ会 (日本語): 各種処理系や関連書籍の一覧等。
 URLリンク(jp.franz.com)
□LispUser.net (日本語): Lisp関連の有用な情報がまとめられています。Common Lispの話題が中心。
 URLリンク(lispuser.net)
□John McCarthy's Home Page (英語): Lispの生みの親、John McCarthyのサイト。
 URLリンク(www-formal.stanford.edu)
□どう転んでもLisp (日本語): 竹内郁雄氏による発表のスライドです。
 URLリンク(jp.franz.com)

3:デフォルトの名無しさん
09/07/27 10:19:22
■Common Lispに関する情報源
□Common Lisp - Wikipedia (日本語)
 URLリンク(ja.wikipedia.org)
□CLiki (英語): Common Lisp関連のリソースが集積されています。
 URLリンク(www.cliki.net)
□Common-Lisp.net (英語): 多くのプロジェクトがホスティングされています。
 URLリンク(common-lisp.net)
□CMU Common Lisp Repository (英語): 新旧様々なプログラムが置いてあります。
 fURLリンク(ftp.cs.cmu.edu)
□The EncyCMUCLopedia (英語): CMUCL関連文書。CMUCLユーザーでなくとも有益なはず。
 URLリンク(www.isr.ist.utl.pt)
□The Common Lisp Cookbook (英語): いわゆるCookbookです。
 URLリンク(cl-cookbook.sourceforge.net)

■Schemeに関する情報源(1)
□Scheme - Wikipedia (日本語)
 URLリンク(ja.wikipedia.org)
□プログラミング言語Scheme (日本語): Schemeの人はまずここを見ましょう。
 URLリンク(www.sci.u-toyama.ac.jp)
□Scheme-users.jp (日本語): Schemeユーザのためのハブサイトです。
 URLリンク(scheme-users.jp)
□Schemeへの道 (日本語): Schemeの入門サイト。
 URLリンク(www.stdio.h.kyoto-u.ac.jp)
□独習Scheme三週間 (日本語): Schemeの教科書。
 URLリンク(www.sampou.org)
□Practical Scheme (日本語): Scheme処理系「Gauche」の作者である川合史朗氏のサイト。
 Paul Grahamの「普通のやつらの上を行け」など、興味深い文書を沢山翻訳されています。
 URLリンク(practical-scheme.net)

4:デフォルトの名無しさん
09/07/27 10:20:08
■Schemeに関する情報源(2)
□Bibliography of Scheme-related Research (英語): Scheme関連の論文リンク集。
 URLリンク(library.readscheme.org)
□Scheme Hash (英語): S式でXMLを使えるようにするSXML等。
 URLリンク(okmij.org)
□(Scheme) (Lisp) (日本語): 各種Scheme処理系をCygwin上でビルドする方法など。
 URLリンク(www.geocities.co.jp)
□SLIB (英語): Scheme用のライブラリとして有名なSLIBのサイトです。
 URLリンク(swiss.csail.mit.edu)
□Scheme Requests for Implementation (英語): いわゆる「SRFI」のサイトです。
 URLリンク(srfi.schemers.org)
□継続関連
 □なんでも継続 (日本語)
  URLリンク(practical-scheme.net)
 □Schemeへの道:継続 (日本語)
  URLリンク(www.stdio.h.kyoto-u.ac.jp)
 □継続の使い方 (日本語)
  URLリンク(www.geocities.co.jp)
 □継続の使用法 (日本語)
  URLリンク(www.ice.nuie.nagoya-u.ac.jp)
 □Kahua: 継続ベースのアプリケーションサーバ。
  URLリンク(www.kahua.org)

5:デフォルトの名無しさん
09/07/27 10:20:51
■Common Lisp関連の書籍
□Common Lisp: A Gentle Introduction to Symbolic Computation (英語):
 Common Lispを使った非常に丁寧なプログラミング入門書。
 全文がpdf形式でダウンロードできます。
 URLリンク(www.cs.cmu.edu)
□Common Lisp: An Interactive Approach (英語):
 人工知能の大家、Stuart ShapiroによるCommon Lispの教科書。
 全文がpdf形式でダウンロードできます。
 URLリンク(www.cse.buffalo.edu)
□On Lisp (英語/日本語):
 LispハッカーPaul Grahamが、Lispの力の源泉であるマクロプログラミングを解説。
 URLリンク(ssl.ohmsha.co.jp)
 URLリンク(user.ecc.u-tokyo.ac.jp) (日本語訳HTML版)
 URLリンク(www.paulgraham.com) (英語原文がダウンロード可)
□Practical Common Lisp (英語/日本語):
 S式の羅列で現実的な問題をどう解くのか、そのギャップに悩まされてる人に。
 全文がオンラインで読めます。日本語版は『実践Common Lisp』として出版されています。
 URLリンク(www.gigamonkeys.com)
 URLリンク(ssl.ohmsha.co.jp)
 URLリンク(pcl.lispuser.net) (日本語版非公式サポートページ)

6:デフォルトの名無しさん
09/07/27 10:21:36
■Scheme関連の書籍
□Structure and Interpretation of Computer Programs (英語/日本語):
 通称「SICP」として知られる計算機科学の教科書。全文がオンラインで読めます。
 日本語版は『計算機プログラムの構造と解釈』として出版されています。
 URLリンク(mitpress.mit.edu)
 URLリンク(sicp.ipl.t.u-tokyo.ac.jp) (日本語版サポートサイト)
□Programming Languages: Application and Interpretation (英語):
 ブラウン大学で使われている、Schemeを使ったプログラミング言語論の教科書。
 SICPでは触れられていない継続についても、Webアプリと関連づけて詳述されています。
 URLリンク(www.cs.brown.edu)
 全文がpdf形式でダウンロードできます。
□How to Design Programs (英語):
 Schemeを使った優れたプログラミング入門書。全文がオンラインで読めます。
 URLリンク(www.htdp.org)
□The Little Schemer/The Seasoned Schemer (英語):
 Schemeの教科書として定評のある「Schemerシリーズ」のサポートページです。
 URLリンク(www.ccs.neu.edu)
 URLリンク(www.ccs.neu.edu)
□The Scheme Programming Language (英語):
 Schemeの入門書。全文がオンラインで読めます。
 URLリンク(www.scheme.com)
□入門Scheme (日本語):
 幻となったScheme入門書。全文がダウンロードできます。
 URLリンク(www4.ocn.ne.jp)
□プログラミングGauche (日本語):
 Scheme処理系言語「Gauche」の初の解説書!
 URLリンク(ssl.ohmsha.co.jp)
 URLリンク(karetta.jp) (立ち読み版)
 URLリンク(karetta.jp) (サポートページ)

7:デフォルトの名無しさん
09/07/27 10:33:23
■Common Lispの実装
□Steel Bank Common Lisp: 代表的な処理系。CMUCLより派生。
 URLリンク(www.sbcl.org)
□CMUCL: カーネギーメロン大学で開発された処理系。
 URLリンク(www.cons.org)
□GNU CLISP: バイトコード変換系。
 URLリンク(www.clisp.org)
□Clozure CL: OpenMCLから改名されました。
 URLリンク(trac.clozure.com)
□Embeddable Common Lisp: Cで書かれたプログラムへの埋め込みが可能な処理系。
 URLリンク(ecls.sourceforge.net)
□Armed Bear Common Lisp: JVM上で動く処理系。JVMバイトコード変換系。
 URLリンク(armedbear.org)
□Allegro Common Lisp: 代表的な商用処理系。無料試用版も有り。
 URLリンク(www.franz.com)
□LispWorks: 商用処理系。無料試用版も有り。
 URLリンク(www.lispworks.com)
□Corman Common Lisp: Windows専用の商用処理系。無料試用版も有り。
 URLリンク(www.cormanlisp.com)
□Scieneer Common Lisp: CMUCLより派生した商用処理系。非商用利用なら無料。
 URLリンク(www.scieneer.com)

8:デフォルトの名無しさん
09/07/27 10:34:20
■Schemeの実装(1)
□Gauche: マルチバイト文字に対応したR5RS準拠処理系。川合史朗氏作。
 URLリンク(practical-scheme.net)
 URLリンク(jp.youtube.com) (川合氏によるGaucheに関するトーク)
□PLT Scheme: DrScheme、MzSchemeなどのR5RS準拠および独自拡張のScheme処理系。
 URLリンク(www.plt-scheme.org)
□Scheme48: R5RS準拠のバイトコードインタプリタ。
 URLリンク(www.s48.org)
□Gambit-C: R5RS準拠処理系。
 URLリンク(dynamo.iro.umontreal.ca)
□Chicken: R5RS準拠処理系。スタンドアロン実行ファイルが簡単に作成可能。
 URLリンク(www.call-with-current-continuation.org)
□Stalin: 激烈な最適化を施す処理系。人間の書くCコードより速いという噂。
 URLリンク(cobweb.ecn.purdue.edu)
 fURLリンク(ftp.ecn.purdue.edu) (Stalinの最適化技術を解説した論文)
□Bigloo: CLR用のコードを吐けるようになったらしい。
 URLリンク(www-sop.inria.fr)
□Guile: R5RS準拠のGNU公式拡張用言語。もちろんSLIBも使えます。
 URLリンク(www.gnu.org)
□JScheme: Javaで書かれたR4RS準拠処理系。Javaインターフェイスをサポート。
 URLリンク(jscheme.sourceforge.net)

9:デフォルトの名無しさん
09/07/27 10:35:05
■Schemeの実装(2)
□Chez Scheme: R6RS準拠の商用処理系。インタプリタはフリー。
 URLリンク(www.scheme.com)
□IronScheme: Microsoft DLR上で動作するR6RS準拠処理系。ERR5RSもサポート予定。
 URLリンク(www.codeplex.com)
□Ypsilon Scheme System: 藤田善勝氏が開発中のR6RS準拠処理系。
 URLリンク(www.littlewingpinball.net)
□Mosh: higepon氏が開発中のR6RS準拠処理系。
 URLリンク(code.google.com)
□SECDR-Scheme: SECD machine modelに基づく実装。
 URLリンク(lily.fan.gr.jp)
□LispMe: Palm上で動く処理系。これもSECD virtual machine。
 URLリンク(www.lispme.de)
□Minischeme: 1ファイルに凝縮された処理系。
 URLリンク(tinyscheme.sourceforge.net)
□TinyScheme: Minischemeを色々弄ったもの。
 URLリンク(tinyscheme.sourceforge.net)
□Schemix: Linuxのkernelへのパッチで/dev/として扱えるTinyScheme。
 URLリンク(www.abstractnonsense.com)
□Bit: Minischemeよりも小さい(?)バイトコード変換系。
 URLリンク(www.iro.umontreal.ca)
□KI-Scheme, AM-Scheme, etc...
 URLリンク(www.nifty.com)

10:デフォルトの名無しさん
09/07/27 10:35:51
■その他のLisp実装
□awklisp: Awkで書かれたわずか500行のLispインタプリタ。
 URLリンク(www.accesscom.com)
□CAMPUS LIsP Lemon version: Cでわずか1000行。
 URLリンク(www-masu.ist.osaka-u.ac.jp)
□Lisp interpreter in AS3: ActionScriptで書かれたLispインタプリタ。
 URLリンク(www.solve-et-coagula.com)
□newLISP: Lispライクな軽量スクリプト言語。
 URLリンク(www.newlisp.org)
□Arc: Paul Grahamが開発中の新しいLisp。
 URLリンク(arclanguage.org)
□Clojure: MLやHaskellの特長を取り入れた新しいLisp。JVMバイトコード変換系。
 URLリンク(clojure.org)
□Qi: MLやHaskellの特長を取り入れた新しいLisp。型の定義にシーケント計算表記を用います。
 URLリンク(www.lambdassociates.org)
□GOO: DylanとSchemeの影響を受け、OOPをサポートした新しいLisp。
 URLリンク(people.csail.mit.edu)
□Liskell: Lispの顔をしたHaskell。
 URLリンク(liskell.org)

11:デフォルトの名無しさん
09/07/27 10:36:56
■コミュニティ、イベント関連
□初心者が集うIRC
 布教してくれる先生も大募集です。
 irc.scenecritique.com:6667 #Lisp_Scheme
□Shibuya.lisp
 東京地区、特に渋谷周辺半径2万キロのLisp系プログラマによる非営利団体。
 第3回テクニカルトークは2009年7月4日開催予定です。
 URLリンク(shibuya.lisp-users.org)
□GaucheNight 第2回 (2008年3月8日)
 「SchemeとGaucheとλとS式を愛するすべての人に贈るマクロな一夜」
 出演:川合史朗、伊藤篤、山下伸夫、笹田耕一、ひげぽん、zick、
    黒田寿男、えんどうやすゆき、ほか
 URLリンク(practical-scheme.net)
□GaucheNight 第1回 (2007年5月9日)
 出演:川合史朗、黒田寿男、まつもとゆきひろ(Skype中継)、小飼弾、
    伊東勝利、久井亨、小黒直樹、ほか
 URLリンク(practical-scheme.net)
□黒田寿男氏関連 (黒板の人)
 スレリンク(tech板:901-909番)
 URLリンク(www.bookshelf.jp)
 □Schemeのマクロに関する黒田氏の所感
  URLリンク(cl-www.msi.co.jp)
 □それに対する川合史朗氏の応答
  URLリンク(practical-scheme.net)
 □それに対する黒田氏の再反論
  URLリンク(cl-www.msi.co.jp)
 □それに対する川合氏の応答
  URLリンク(practical-scheme.net)
 □その他、黒田氏によるLisp関連のエッセイがこちらで読めます。
  URLリンク(cl-www.msi.co.jp)

12:デフォルトの名無しさん
09/07/27 11:01:15
■2ch関連
□Meadow memo: 2ちゃんねるログ: dat落ちした過去スレの一部が閲覧できます。
 URLリンク(www.bookshelf.jp)
□2ch上にあるLisp関連のスレ
 【入門】Common Lisp その6【質問よろず】
 スレリンク(tech板)
 Emacs Lisp 3
 スレリンク(tech板)
 【GNU】スクリプト言語 Guile【scheme】
 スレリンク(tech板)
 【SICP】計算機プログラムの構造と解釈 Part2
 スレリンク(tech板)
 【普通のやつらの】 Arc Language 0 【上を行け】
 スレリンク(tech板)
 【魔法】リリカル☆Lisp【言語】
 スレリンク(tech板)
 【CGI】実用比較Lisp vs C/C++【GUI】
 スレリンク(tech板)
 【ヤパーリ】XMLをS式に置換えていくスレ【LISP最強】
 スレリンク(tech板)
 Lisp@UNIX版
 スレリンク(unix板)
 Lisperこそ真のプログラマーよ!!
 スレリンク(prog板)
 LISPってさ~
 スレリンク(sim板)
 【数式処理システム】 Maxima 【Common Lisp】
 スレリンク(math板)

■スレ上でSchemeのコードを晒す場合は、こちらをご利用ください。
 URLリンク(codepad.org)

13:デフォルトの名無しさん
09/07/27 11:52:47
>>1マジで乙。

14:デフォルトの名無しさん
09/07/27 11:56:11
フッ… l!
  |l| i|li ,      __ _  ニ_,,..,,,,_
 l|!・ω・ :l. __ ̄ ̄ ̄    / ・ω・≡
  !i   ;li    ̄ ̄ ̄    キ     三
  i!| |i      ̄ ̄  ̄  =`'ー-三‐ ―

              /  ;  / ;  ;
          ;  _,/.,,,//  / ヒュンッ
            /・ω・ /
            |  /  i/             
           //ー--/´
         : /
         /  /;
    ニ_,,..,,,,,_
    / ・ω・`ヽ  ニ≡            ; .: ダッ
    キ    三    三          人/!  ,  ;
   =`'ー-三‐     ―_____从ノ  レ,  、

15:デフォルトの名無しさん
09/07/27 12:31:46
>1乙

16:デフォルトの名無しさん
09/07/27 14:52:17
>>1乙。
すっかり忘れてたな

17:デフォルトの名無しさん
09/07/27 18:32:54
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) です。

18:デフォルトの名無しさん
09/07/27 18:41:14
(defun f (a)
(cond (a (list (list 'b a) (list 'c a)))
(t (list (list 'b "b") (list 'c "c")))))
(f 1)
(f nil)

19:デフォルトの名無しさん
09/07/27 19:05:17
(デフン フ(ァ)
 (コンド(ァ(リスト(リスト 'ブ ァ)(リスト 'ク ァ)))
 (テ(リスト(リスト 'ブ "バ゙")(リスト 'ク "カ")))))
(フ 1)
(フ ニル)

↑見てたら唐突に8bitマシンリスプというのを思いついた
馬鹿にしてるわけじゃないお

20:デフォルトの名無しさん
09/07/27 19:15:26
>>18
ありがとうございます。

21:デフォルトの名無しさん
09/07/27 19:20:41
>>19
ぜんぜんおもしろくないです。

22:デフォルトの名無しさん
09/07/27 19:28:22
デフコン1! デフコン1!

23:デフォルトの名無しさん
09/07/27 19:37:34
前スレにHarropくさいのが湧いてたな。
Harropよけをまいておこう。
λ... Haskell Haskel Haskell

24:デフォルトの名無しさん
09/07/27 20:06:03
>>1
> ■過去スレ
>  Part09: スレリンク(tech板)

行方不明になっている模様


25:デフォルトの名無しさん
09/07/27 20:14:08
技術系のスレを収集してるサイトなかったっけ

26:デフォルトの名無しさん
09/07/28 16:56:43
なんか再帰を使うおもしろい問題ない?
こないだのカタラン数のは良かったよ。

27:デフォルトの名無しさん
09/07/28 17:33:52
>>26
基本だけど、冪集合を列挙するというのはどうよ。

28:デフォルトの名無しさん
09/07/28 17:54:36
>>27
難しそうだけど面白そう。
考えてみるよ。

29:デフォルトの名無しさん
09/07/28 21:24:16
common lisp に list 内の2つの値を入れ替える関数は標準で用意されていますか?

30:デフォルトの名無しさん
09/07/28 21:33:01
お前の世界のリストは常に2つの値から成るのか

31:デフォルトの名無しさん
09/07/28 21:39:42
ここまで間抜けな返しは久々に見る。

32:28
09/07/28 21:40:35
べき集合 書いてみたら長くなった。無駄がありそう。

URLリンク(codepad.org)


33:デフォルトの名無しさん
09/07/28 21:43:23
>>29

自分もそれ考えてた。選択ソートとかバブルソートで必要だけど
リストだと効率悪いよね。

34:デフォルトの名無しさん
09/07/28 22:25:08
(俺は評価する >>30



イマイチだな
>


35:デフォルトの名無しさん
09/07/28 22:42:50
効率が求められる処理に
こんなアホな関数の出番はないけど
(defun swap (l x y)
(let ((tmp (nth x l)))
(setf (nth x l) (nth y l))
(setf (nth y l) tmp)))


36:デフォルトの名無しさん
09/07/28 23:12:39
ベクターに変換すれば多少はいいのだろうか?
(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でスマンです。

37:デフォルトの名無しさん
09/07/29 00:53:37
関数じゃなくてマクロだけど rotatef かなあ。
URLリンク(www.lispworks.com)
まあ、リストのソートならおとなしくマージソートがいいとは思うけど。

38:デフォルトの名無しさん
09/07/29 01:03:54
rotatef いいよね。最初知ったとき感動したわ。

39:29
09/07/29 02:53:33
>>35>>36>>37
ありがとうございます
今回は rotatef を使うことにします。

40:デフォルトの名無しさん
09/07/29 05:15:33
(cdr '(1 2 3))
(nthcdr 1 '(1 2 3))
この2つは等価だと思ってたんですが

(pop (cdr '(1 2 3)))
(pop (nthcdr 1 '(1 2 3)))
これの下側がエラーになってしまいます。

どう書けば回避できるか どなたか教えていただけませんか?

41:デフォルトの名無しさん
09/07/29 06:16:22
>>40
泥縄な解決法としては、
(defun foo (ls n) (if (= n 0) (pop ls) (pop (cdr (nthcdr (- n 1) ls))) ))
くらいじゃないですか。

pop とかの代入とか更新とかする系のマクロは
参照先として場所を示す式を取れるわけですけれど、
nthcdr は標準では場所を表す名前として使えるようになっていないので
この場合はワンクッション置く必要があります。

突っ込むと説明がややこしいところですけど。仕様的にはだいたいこのへん。
URLリンク(www.lispworks.com)


42:デフォルトの名無しさん
09/07/29 06:46:45
>>41
んんん、難しいですね。
提示されたリンク先何度か繰り返して読んでみます。
ありがとうございました。

43:デフォルトの名無しさん
09/07/29 15:42:26
phpのwebサービスがちょっと負荷かかると鯖ごと落としてくれるんだけど
common lispやschmeの処理系は、その辺はどのぐらい頑健なの?

44:デフォルトの名無しさん
09/07/29 16:05:37
emacs22に標準で入ってるscheme編集モードをみんな使ってるんだろうか

45:デフォルトの名無しさん
09/07/29 16:45:19
>>41
すいません、良く試してみると返り値は正しいんですが
元のリストの変更は n=0 の時失敗してしまうようです…。
(let ((ls '(1 2 3)))
(foo ls 0)
ls)

46:27
09/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
09/07/29 17:55:23
>>46
ああ~~~~~、そうかぁ。

集合の要素を1つ抜いた部分集合を全部の要素について考えたのですが、
ああ、そうですね。全部考える必要などなかったです。


48:デフォルトの名無しさん
09/07/29 18:38:55
冪集合は格要素を「とる」か「とらない」で再帰すれば良いと考えて
こう書いてみました
(define (power l)
(if (not (pair? l)) (list l)
(append
(power (cdr l)) ;先頭をとらない
(map (pa$ cons (car l)) (power (cdr l))) ;先頭をとる
)))

49:デフォルトの名無しさん
09/07/29 18:42:50
こないだカタランの問題、続きがあるので
良かったら考えてみてください
元々は小町算を解くために考えた問題です
結局、カタランが出来たのにこれはまだ解けずにいます

問題
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
09/07/29 18:53:31
>>48
なるほどよくわかりました。2^nを計算
するアルゴリズムと基本的には同じですね。
要素をとる、とらない、の2通りがあるから。
冪集合の名前の通りだ。

51:27
09/07/29 19:25:07
>>48
pa$というのは何ですか?mzschemeだとエラーになってしまいます。

52:デフォルトの名無しさん
09/07/29 19:35:51
>>51
(define (pa$ fn . args) (lambda more-args (apply fn (append args more-args))))

53:デフォルトの名無しさん
09/07/29 20:28:19
>>51
部分適用といって、手続きの引数の一部を固定した新たな引数を返す手続き。
例えば、

((pa$ + 3) 2) ⇒ 5

みたいな。SRFI-26のcutと似たようなもの。cutなら、

((cut + 3 <>) 2) ⇒ 5

こんな感じ。

54:デフォルトの名無しさん
09/07/29 20:33:40
新たな引数→新たな手続きの間違い。失礼。

55:デフォルトの名無しさん
09/07/29 21:11:30
教えてもらってやっと納得のいくコードが書けたよ。
最初に書いたのは無駄だらけだった(笑)。

(define (power-set ls)
(if (null? ls)
'(())
(let ((subset (power-set (cdr ls))))
(append subset
(map (lambda (x) (cons (car ls) x)) subset)))))


56:デフォルトの名無しさん
09/07/29 22:22:39
>>45
おっと失礼。マクロじゃなきゃダメですね。
(defmacro foo (ls n) `(if (= ,n 0) (pop ,ls) (pop (cdr (nthcdr (- ,n 1) ,ls))) ))

57:デフォルトの名無しさん
09/07/29 23:07:40
>>51
mzscheme なら curry
ちなみに >>52 の pa$ は片方が空リストになる時にエラーになった

58:デフォルトの名無しさん
09/07/30 00:37:16
>>52>>53>>57
curryingのことだったのか。名前の由来には何か歴史的な事情でもある?

59:デフォルトの名無しさん
09/07/30 02:25:44
((pa$ + 3) 2) ⇒ 5
こんなのは無駄に問題を難しくしてるだけ
(+ 3 2)
これでいいじゃないか

(pa$ + 3) は何を返す?
手続きを作ったところでそれを保存したり表示したりできるわけでもないし
無駄なことをするな

60:デフォルトの名無しさん
09/07/30 03:20:20
>>58
歴史的経緯は知らないけれど、部分適用をあらわすのに$を使うのはgaucheの命名規約。
URLリンク(practical-scheme.net)

個人的には、curry って名前なら(lambda (x y z) ...) を
(lambda (x) (lambda (y) (lambda (z) ...)))ってしてくれるんじゃないと違和感があるなあ。
可変長引数で困るけど。

>>59
そりゃ実用上はpa$をそんな使い方する人いないでしょ。


61:デフォルトの名無しさん
09/07/30 07:46:09
>>59
作った手続きを束縛して再利用するに決まってんじゃん。
もしかして、複数の引数を持つ手続きを呼ぶ際には、
毎回必ず全ての引数の値が異なるようになる呪いを掛けられてる人ですか?

というか、クロージャがファーストクラスな言語でそういう事を言うのが信じられない。

62:デフォルトの名無しさん
09/07/30 08:07:48
>>58
partial apply で $ をつけるのは Haskell の $ 演算子由来だそうな
URLリンク(practical-scheme.net)

63:デフォルトの名無しさん
09/07/30 09:17:14
カリー化を使うとうまく解ける問題があったら教えてください。

64:デフォルトの名無しさん
09/07/30 09:37:19
構文糖衣みたいなもんなので特にない

65:デフォルトの名無しさん
09/07/30 10:08:48
(pa$ + 3) とか (cut + 3 <>) とかではなくマクロにして
(bind (+ 100 $1)) とか (bind (+ 200 . $rest)) とか書けないかな。
直観的になって嬉しいと思うんだけど。


66:デフォルトの名無しさん
09/07/30 12:44:20
>>65
前以って arity がわかってるんなら syntax-case で
URLリンク(codepad.org)
みたいな感じとか。
(bind 1 (+ 100 $1))
みたいに使う。後者の例はどうするのがいいんだろ。


67:デフォルトの名無しさん
09/07/30 12:57:17
arityを書かなきゃいけないのはダサいな。式の中の$nを調べて自動で出してほしいところ。

68:デフォルトの名無しさん
09/07/30 13:00:09
一方ロシアは
(^(x) (+ 100 x))

69:デフォルトの名無しさん
09/07/30 13:00:55
(define-macro (bind . body) `(lambda ($1) ,@body))
後者は構文として正しくない

70:デフォルトの名無しさん
09/07/30 13:06:38
> (bind (+ 200 . $rest))

@restとすると展開
$restとすると単値(リスト)
がいいかも

((bind (+ 200 @rest)) 300 400) ; ==> 900
((bind (cons 200 $rest)) 300 400) ; ==> (200 300 400)



71:デフォルトの名無しさん
09/07/30 14:04:09
>>67
LOL の 5.2 節を参考にしてみたんだけどダサいかな。
マクロ引数を flatten してごにょごにょすればそういうのもできるよ

72:デフォルトの名無しさん
09/07/30 15:20:22
>>65
srfi-26 の議論の中で引数の番号つきの部分適用の話が出たことはあるそうだ。
URLリンク(srfi.schemers.org)

>>66-67
最も大きい番号を arity とみなす実装。
URLリンク(d.hatena.ne.jp)

確かにどこから rest 引数にすりゃいいのか決められないな。

73:デフォルトの名無しさん
09/07/30 15:33:03
> 確かにどこから rest 引数にすりゃいいのか決められないな。

単純に最も大きい番号の数より多い引数が rest になるんじゃまずいのかな。
式の中で $1, $2, $3, $rest が使われていたら
(lambda ($1 $2 $3 . $rest) ...) になるみたいな。

74:デフォルトの名無しさん
09/07/30 15:55:35
>>56
ありがとうございます。
こういう時にマクロを使うんですね。勉強になります。

75:デフォルトの名無しさん
09/07/30 16:04:53
(define-macro (bind1 . body) `(lambda ($1 . $rest) ,@body))
(define-macro (bind2 . body) `(lambda ($2 . $rest) (lambda ($1) ,@body)))


76:デフォルトの名無しさん
09/07/30 18:59:24
誰か弟子にしてください!!

77:デフォルトの名無しさん
09/07/30 19:06:06
おう! いいぞ。 今日から俺のことを師匠と呼べ。

78:デフォルトの名無しさん
09/07/30 20:12:50
再帰使って自分を弟子にしろ

79:デフォルトの名無しさん
09/07/30 20:14:17
どこかに終了条件がないと無限ループになるぞ

80:デフォルトの名無しさん
09/07/30 20:28:49
streamにして、毎回弟子を取り出せばおk

81:デフォルトの名無しさん
09/07/30 20:32:38
((null 弟子) nil)

82:デフォルトの名無しさん
09/07/30 22:19:40
_これって何?
どんな時に使うの?

83:デフォルトの名無しさん
09/07/30 22:42:53
>>82
プレースホルダー。
使わない引数とかを表現するのに使う作法。
(define (const a) (lambda _ a)) とか。

84:デフォルトの名無しさん
09/07/30 22:42:59
引数が必要ない時に使う

透明あぼーんと同じ

85:デフォルトの名無しさん
09/07/30 22:53:15
仕様にあるんだっけ?
いつもdummy、みたいな変数名を付けてた

86:デフォルトの名無しさん
09/07/30 22:55:17
仕様にはない。
あくまで作法。

87:デフォルトの名無しさん
09/07/30 22:59:04
prologではそれで最適化とかなかったっけ
まあフロー解析すりゃいいけど

88:デフォルトの名無しさん
09/07/30 23:00:47
ああ、CLやschemeは_も変数として定義出来るのを忘れてたよ

89:デフォルトの名無しさん
09/07/30 23:04:28
82です.分かりました.
みなさんありがとうございます.


90:デフォルトの名無しさん
09/07/30 23:14:28
Erlang だと _X みたいな変数は自動で CL で言うところの ignore 扱いになるね

91:デフォルトの名無しさん
09/07/30 23:23:04
haskell でも言語仕様でプレースホルダーとしての意味を規定してたはず。

92:デフォルトの名無しさん
09/07/31 17:54:45
>>82
R6RS のマクロパターンではワイルドカード
それ以外の場所ではただのシンボル

93:デフォルトの名無しさん
09/07/31 20:57:59
自分はand-let*の中でよく使いますね < '_

94:デフォルトの名無しさん
09/08/01 05:00:54
>>93
and-let*で _ 使いたくなる時ってある?
単に条件判断のみやりたい時は変数書かなくてもいいわけだし。


95:デフォルトの名無しさん
09/08/01 10:21:04
SICP昔読んだ程度の初心者なのですが、最近翻訳された「Let Over Lambda」は
Lisperの皆様から見てどんな感想でしょうか。

どうもマクロというと難しいという印象強いので、翻訳以前から本は知ってましたけど
読むのは気が引けてました。

また、翻訳レベルはどうでしょうか?Amazonの立ち読み見た限りではかなり良い
翻訳に感じました。

96:デフォルトの名無しさん
09/08/01 12:34:57
>>94
単に趣味の問題です:-)
変数だけ書いたり式だけ書いたりするのはバランスが悪く感じるので
'_を使っているんです
Cなんかで変数宣言&初期化する時に=を揃えるような感覚です
int hoge = 10;
int foo  = 30;

97:デフォルトの名無しさん
09/08/01 12:36:09
揃わなかった:-(

98:デフォルトの名無しさん
09/08/01 12:45:30
Cの代入で桁をきれいに揃えようとして0で埋めたら8進になっちゃった
という話を思い出した。

x = 123;
y = 054;

99:デフォルトの名無しさん
09/08/01 22:40:23
すみません、どこで質問していいのか分からなかったので教えてください
LispマシンっていうのはPC98がBASICだったみたいに
LISPを基本的に動作するパソコンんの事でしょうか?

100:デフォルトの名無しさん
09/08/01 22:44:52
まずはPC98が何だったか調べる作業から始めろ

101:デフォルトの名無しさん
09/08/01 22:47:04
てにをはがおかしい

102:デフォルトの名無しさん
09/08/01 22:49:03
いや、てにをはを直したとしても、繕い切れない何かがある

103:デフォルトの名無しさん
09/08/01 22:53:07
>>99
終盤の一部のPC98を除いてROMに最初からBASICインタプリタが塔載されていたことを思うと、
確かにBASICを基本としていたのかもしれないとは思うが、
ハードウェアの構造がBASICに特に有利ということはない。
実際、他の言語の方が効率的に使えた。

一般にLispマシンってのはLispを主要な言語とするだけでなくて、
CPU のインストラクションのレベルから設計時に Lisp を前提とし、
Lisp のために最適化されているようなマシンだと思う。


104:デフォルトの名無しさん
09/08/01 23:05:31
ELIS/TAOってどこかで動いているんかな?


105:デフォルトの名無しさん
09/08/01 23:42:14
シュレディンガーの猫みたいな問いだな

106:デフォルトの名無しさん
09/08/02 01:20:22
俺の横で寝てるよ

107:デフォルトの名無しさん
09/08/02 07:12:03
猫が?竹内先生が?

108:デフォルトの名無しさん
09/08/02 10:03:15
俺が

109:デフォルトの名無しさん
09/08/02 10:05:11
せつこ! それシュレディンガーやない、ドッペルゲンガーや!

110:デフォルトの名無しさん
09/08/02 11:48:22
リストのドッペルゲンガーの作り方って↓でいいのかい?

(define (copy ls)
(if (atom? ls)
ls
(cons (copy (car ls))
(copy (cdr ls)))))

(define (atom? x)
(not (pair? x)))


111:デフォルトの名無しさん
09/08/02 12:03:10
ベクタを忘れてる

112:デフォルトの名無しさん
09/08/02 13:05:54
(define (copy . ls) ls)
で良い。

113:デフォルトの名無しさん
09/08/02 14:02:53
>>99
ウィキペディアに項目あり

114:デフォルトの名無しさん
09/08/02 19:41:25
>>>111
あ、いや、リストですから。

>>112
なるほど、そうなんですね。

因みにコードは復刊する竹内先生の本にあったものを拝借。


115:デフォルトの名無しさん
09/08/02 21:24:33
ディープコピーwするなら110しないとだめだよ

116:デフォルトの名無しさん
09/08/02 23:17:07
copyされたものかどうかを見抜くことってできないですか?

お前はドッペルゲンガーだろ?って (double? ls) => #t #f

117:デフォルトの名無しさん
09/08/02 23:31:39
eq?で十分だけど?

118:デフォルトの名無しさん
09/08/02 23:31:57
見抜くことが出来たらコピーではないとおもう

119:デフォルトの名無しさん
09/08/03 02:41:23
>>116-117
比較じゃなくて、「同じものが存在するか」を調べたいってこと?
Scheme 的には出来ない。
コピーしたときにオブジェクトに何らかのマークをつけるような
データ構造を作ってなんとかするというのが妥当かな。
あんまり知らんけど Ruby には汚染フラグってあったよな?
あんな感じで。
で、なんでそんなことをしたいのやぅぃ?


120:デフォルトの名無しさん
09/08/03 02:45:39
set-car!set-cdr!を禁止すればeq?でいいんだけど?

121:デフォルトの名無しさん
09/08/03 02:47:06
いやいやルートから比較するならやっぱりeq?で十分だけど?

122:デフォルトの名無しさん
09/08/03 05:05:49
URLリンク(www.r6rs.org)
より。
(eq? (list ’a) (list ’a)) ⇒ #f
(let ((x ’(a))) (eq? x x)) ⇒ #t


123:116
09/08/03 08:53:06
ああ、そっか。eq?でいいのですね。
eq?の動作を誤解してました。


124:デフォルトの名無しさん
09/08/03 16:23:20
>>123
名前が長くなるほど、同値性の判断は柔らかくなるよん。
名前が短くなるほ(ry

125:デフォルトの名無しさん
09/08/03 17:11:16
フィルター処理で同一か判断する(何もフィルタリングされなかった)
時に使える>eq?
非破壊という前提ならほとんどの処理に当てはまる

126:デフォルトの名無しさん
09/08/03 17:47:44
組込み関数の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も作れる?

127:デフォルトの名無しさん
09/08/03 17:51:36
覚えがある、じゃなくて読み返せ

128:デフォルトの名無しさん
09/08/03 18:16:04

(define ((cons a b)p)(p a b))
(define (car p)(p (lambda(a b)a)))
(define (car p)(p (lambda(a b)b)))

129:デフォルトの名無しさん
09/08/03 18:24:12
>>128
それそれ。中西先生の本にあった基本5関数の話が崩壊してしまった
気分になるんですよ。

130:デフォルトの名無しさん
09/08/03 18:24:52
それじゃ印字もできないし、「作れる」とは言わない


131:デフォルトの名無しさん
09/08/03 18:56:05
印字する関数を作れば良いだけ

132:デフォルトの名無しさん
09/08/03 18:59:25
じゃあ作れよ
ちなみに「印字する関数」だけじゃ済まなくなるぞ

133:デフォルトの名無しさん
09/08/03 20:29:06
基本5関数っていっても「関数」は5つあればいいけど
QUOTE LAMBDA IF (COND)といった特別式は別に必要なんじゃないかな
5関数とリスト構造だけでチューリング完全なら教えてほしい
自分はかなり考えたけど無理だった
(もっともLAMBDAがあれば基本5関数もIFもいらなくなるけど。QUOTEはいるかな)

134:デフォルトの名無しさん
09/08/03 20:39:37
そりゃラムダ計算がチューリング等価だからなぁ…

135:デフォルトの名無しさん
09/08/03 20:52:44
>>133
マッカーシー先生のLispの最初の論文にはcondが使われているし
基本関数とは別物では?
[ → ; → ; → ]


136:デフォルトの名無しさん
09/08/03 21:37:05
>>133
URLリンク(www-formal.stanford.edu)

137:デフォルトの名無しさん
09/08/03 21:48:37
うん、論文では特別式にあたるものも使われているにもかかわらず
wikiを始め基本5関数"のみ"でチューリング完全と言及されているものも多いんだけど
λ計算を初めて知った時、それだけでチューリング完全になるなんて思いもつかなかった自分には
基本5関数"のみ"ではチューリング完全ではないとは断定できなくて…
チャーチ数とかYコンビネータとか思いつくような人ならアレだけでチューリング完全に仕立て上げられちゃうんじゃないかとも思ったもんで

138:デフォルトの名無しさん
09/08/03 22:22:44
基本5関数のみだったら単に5つの関数でしかないわけで、
そこに合成・再帰の操作を許して得られる関数のクラスがチューリング完全、
という言い方になるんだろうね

139:デフォルトの名無しさん
09/08/03 22:40:47
そうなんだろうけど、λ(lambda)かdefun(label)があればそれだけでチューリング完全なわけで
結局、基本5関数はチューリング完全なλ算法系の上で"Lisp"を構築するプリミティブにすぎないって話になっちゃうんじゃないかな
基本5関数とチューリング完全性は無関係ってことに

140:デフォルトの名無しさん
09/08/03 22:46:35
だからそのLAMBDAやLABELを基本関数で記述している、というのが上の論文の肝でしょ

141:デフォルトの名無しさん
09/08/03 22:58:08
ところで「チューリング完全である」っていう述語はどうやって記述すればいいの?

142:デフォルトの名無しさん
09/08/03 23:02:44
URLリンク(ja.wikipedia.org)
「リスト」が曲者かと

143:デフォルトの名無しさん
09/08/03 23:06:44
うーん記述には特別式を使っているように思えるけどなぁ…

144:デフォルトの名無しさん
09/08/03 23:13:02
URLリンク(lib.store.yahoo.net)

145:デフォルトの名無しさん
09/08/03 23:18:37
condもdefunも使ってるじゃないですか

146:デフォルトの名無しさん
09/08/03 23:27:35
R5RSで,シンボルと通常の値の束縛にはdefineを,シンボルと
マクロの束縛にはdefine-syntaxを,と使い分けるのはなぜ
なんでしょう? たとえば,どちらもdefineでできたとしたら
不都合が起きるような場合はありますか? Common Lispが
手続きとそれ以外の値とを別々のスコープで扱うように,
Schemeではマクロとそれ以外の値とを別々のスコープで扱う
ということ?何を意図しての仕様かがもうひとつわかりません

147:デフォルトの名無しさん
09/08/04 00:11:21
あと5年待てば判るよ

148:厨房
09/08/04 00:56:52
すいません人工知能で彼女作りたいんですけどやっぱ人工知能はLispがいいんでしょうか?
勉強がんばるっす!!

149:デフォルトの名無しさん
09/08/04 01:04:25
人工少女で我慢しなさい

150:デフォルトの名無しさん
09/08/04 01:05:36
>>146
実装を意図しての仕様ですが何か?

151:デフォルトの名無しさん
09/08/04 01:09:20
>>149
厨房には早過ぎるだろ・・・

152:デフォルトの名無しさん
09/08/04 14:07:22
>>146
マクロ展開は普通は評価の前に行なわれる。
要するにマクロ展開と関数の評価は異なるレイヤで行なわれる。

もしマクロを第一級に格上げしたとしたら、
set! されたときに展開しなおしとか必要になって、
付随する様々な挙動が破綻してわけわかんなくなる。
不都合とかいうレベルの話じゃねーよ。 論外だろ。

まぁ、そういう Lisp があってもいいかとは思うけど、
Scheme では無理だし、パフォーマンス的にはかなり不利になるはず。

153:デフォルトの名無しさん
09/08/04 14:35:45
C++テンプレートのコンパイル時実行のようなもの

154:デフォルトの名無しさん
09/08/04 14:45:44
set! されたときにインライン展開しなおしとか定数伝播しなおしとか必要になって
のようなもの

155:デフォルトの名無しさん
09/08/04 16:18:42
人工彼女の話と聞いてすっ飛んで参りました、ハイ。

156:デフォルトの名無しさん
09/08/04 16:38:14
emacs23リリースされたけどlisperには関係ないのかな

157:デフォルトの名無しさん
09/08/04 16:42:10
javascriptでもマクロ以外はlispと同じようなことできるの?

158:デフォルトの名無しさん
09/08/04 18:03:01
人工彼女よりも生身の彼女の方がエキサイティングで楽しいよ。(笑)

ところでウィノグラードの積木をする少女のプログラムは今のパソコンの
性能なら十分に動くと思うのだけど、誰か動かしてないかな?
マイクロプランナーってPrologみたいなもの?

159:デフォルトの名無しさん
09/08/04 19:02:22
>>157
JavaScript とか Ruby を「広義のLisp」に含めようとする人すらいるが、
構文木を操作することを可能にしたマクロと、マクロの大前提であるS式こそが Lisp の本質だと思う。
「マクロ以外は」と言ってしまうとせいぜいがクロージャとリスト操作くらいだろ?
JavaScript でもそれらを扱えるのは確かだが、
最も重要なマクロを除いてしまった上で「同じようなこと」が出来たからって…

160:デフォルトの名無しさん
09/08/04 20:08:16
昔lisp好きのruby信者だったけど、実際のものをschemeやらで書くようになって、
今までruby信者だったことを恥じたね。
バカみたいにシンタックス増やしてその議論に時間裂いて如何に信者を増やすかが、その人たちの言う言語なんだと...
carとcdr、"(" と ")" 、applyとeval、言語のシンタックスが提供するのなんてこの2極で十分だ。(極論だけど)
言語作者のエゴが作る多すぎるルールは戒律になって自由に対してのしかかってくるだけだよ。

(この戯言で怒った人はごめんね☆)

161:デフォルトの名無しさん
09/08/04 20:13:51
さらに進んでSKIで十分と言えるようになれば一人前

162:デフォルトの名無しさん
09/08/04 20:18:28
>>152
Guileはそういうとここだわってますよね
> (define (hoge) (begin (display 'function) (newline)))
> (define (foo) (hoge))
> (foo)
function
> (define-macro (hoge) '(begin (display 'macro) (newline)))
> (foo)
macro

親処理系のSCMで動かないこのコードがGuileで動くってことはわざわざ追加された仕様なんでしょうね

163:デフォルトの名無しさん
09/08/04 20:26:59
それはただの処理系依存の話
gaucheの最適化レベルが低いってだけ

164:デフォルトの名無しさん
09/08/04 20:31:06
Guileです

165:160
09/08/04 20:37:43
>>161
SKIってSKIコンビネータなんちゃらってやつ?
とにかく読み漁ってみるわ。
まじで情報サンクス。
やっと計算云々のコアにたどり着けるような気がする...
今まで童貞で良かったわ。きっとセックスより気持ち良いに違いない。

166:デフォルトの名無しさん
09/08/04 20:49:07
>>165
全然違うものですがPostScriptとSECD仮想機械も面白いものですよ。
PostScriptにはつい最近興味を持ち始めたのですが
Forthよりコッチ側(関数的プログラミングとか)に近くて
末尾呼び出しの最適化もされるし驚きでした。
(ループが再帰で書ける!)
SECD仮想機械はS式ベースの仮想機械で
これをベースにしたScheme処理系もあるみたいです。

167:デフォルトの名無しさん
09/08/04 20:54:13
センスのあるやつはコードを書く
センスの無いバカは理論をやる
それが計算機の世界

168:デフォルトの名無しさん
09/08/04 21:05:47
いまはなきLispMe

169:デフォルトの名無しさん
09/08/04 21:12:14
>>167
○ センスの無いバカは理論「だけ」をやる

170:デフォルトの名無しさん
09/08/04 21:31:27
理論をまったく知らないでコードを書くのは例外なく馬鹿

171:デフォルトの名無しさん
09/08/04 22:27:40
>>166
かなり面白そう。
PostScriptは名前だけ知ってたんですが、初めて見ました。
というか、S式 -> ps とかすごく簡単に書けそうでプロッターとしていけますね。
SECD仮想機械は機械的(物理的?)な観点から見れそうなので、今までlisp系を観念的にしか見てなかった自分としては、今までとは対極の見方が出来そうです。
情報サンクスです。

172:デフォルトの名無しさん
09/08/04 22:58:28
>>171
PostScript で Lisp 書いたり PostScript で書いた Lisp で Lisp を書いた人もいる。
URLリンク(blog.bugyo.tk)

173:デフォルトの名無しさん
09/08/04 23:04:20
素直にCをベースにしたscheme処理系を見ればいいのに
据え膳食わぬは男の恥

174:デフォルトの名無しさん
09/08/05 02:09:50
すいません、下のスレの
スレリンク(tech板)

(((() #0="a" #0# #0#) (#1="b" (#1# (#1#) . #2="c") . #2#) . #2#))

この#0#とかの表記がよく判りません。
自己参照してるっぽいのは判るんですが、
どこかに読み方の説明ないですかね。
#0=と#0#は違うのかな?

175:デフォルトの名無しさん
09/08/05 02:22:09
>>174
読み方の説明ならこれか
URLリンク(www.lispworks.com)
URLリンク(www.lispworks.com)
これ
URLリンク(srfi.schemers.org)

176:デフォルトの名無しさん
09/08/05 02:53:47
>>174は文字列に対して適用してますが、↓と意味は違うんですかね?
(((() "a" "a" "a") ("b" ("b" ("b") . "c") . "c") . "c"))
それぞれの文字列がeq?にならないからってことかな?

177:デフォルトの名無しさん
09/08/05 08:32:15
>>176
そのとおり。 共有構造を明記できる記法。
見づらいなら write で出力すればよい。

178:デフォルトの名無しさん
09/08/05 20:02:29
LispでLisp処理系が書けるってのはCでCコンパイラが書けるってのとは
違う不思議さがある。ほら吹き男爵のブートストラップの話みたいな。

179:デフォルトの名無しさん
09/08/05 20:17:33
Lispの便利機能(GCとかレキサとかデータ構造とか)の実装抜きで作れるからな

180:デフォルトの名無しさん
09/08/05 20:22:00
マクロをうまく使って作ると面倒なことを一切せずに元のLispと同等の速度で動く

181:デフォルトの名無しさん
09/08/05 20:25:56
>>178
URLリンク(www2.parc.com)

182:デフォルトの名無しさん
09/08/05 22:15:32
>>181
>>178の言ってるのはGCとかの泥臭いところを除外してるって意味だと思われ

183:デフォルトの名無しさん
09/08/05 22:16:44
しまった、2時間も遅れてかぶってる、撃つ出し脳


184:ひげぽん ◆Ngzcp/NZpA
09/08/08 00:04:50
Mosh 0.2.0 をリリースしました。
URLリンク(mosh-scheme.googlecode.com)
URLリンク(mosh-scheme.googlecode.com)

Mosh は R6RS に準拠した Scheme インタプリタです。
0.2.0 では並列ライブラリなどが追加されています。

リリースの詳細は URLリンク(d.hatena.ne.jp) をご参照ください。

もし良かったら使ってみてください。

185:デフォルトの名無しさん
09/08/08 00:13:03
おっおっ!

186:デフォルトの名無しさん
09/08/08 00:27:14
>>184
おぉ!
ご苦労様です。

187:デフォルトの名無しさん
09/08/08 00:41:24
キター

188:デフォルトの名無しさん
09/08/08 00:44:34
~準拠とか、きちんとやろうとする人はすごいなあ

189:デフォルトの名無しさん
09/08/08 00:59:08
moshってシェルとして使えたりするん?

190:デフォルトの名無しさん
09/08/08 01:03:36
>>184
Windows2000でインストーラ使って即実行したら
「mosh.exe - エントリ ポイントが見つかりません
プロシージャ エントリ ポイント freeaddrinfo がダイナミック リンク ライブラリ WS2_32.dll から見つかりませんでした。」
て怒られた

191:ひげぽん ◆Ngzcp/NZpA
09/08/08 01:11:02
>>185
>>186
>>187
>>188
ありがとうございます!

>>189
まだ常用には向いていないです。
(mosh shell)というライブラリが付属しているのですが
機能が足りないです。

>>190
試していただいてありがとうございます。
申し訳ないです。Windows XP でしか動作確認できていません。
Windows 2000 では使えないWinSock で関数を使ってしまったみたいですね。
取り急ぎバグとして issue 登録しておきます。

192:デフォルトの名無しさん
09/08/08 01:22:17
いちいち宣伝にくるな

193:デフォルトの名無しさん
09/08/08 01:25:41
むしろ歓迎。
正三郎がアフィりに来るのを心待ちにしてる。

194:デフォルトの名無しさん
09/08/08 01:29:56
いちいち宣伝にくるな

195:デフォルトの名無しさん
09/08/08 01:35:33
むしろ歓迎。
Dan the schemer が弾言しにくるのを心待ちにしてる。(^o^)

196:デフォルトの名無しさん
09/08/08 01:37:16
弾とか有り難がっている馬鹿か

197:デフォルトの名無しさん
09/08/08 01:37:45
ひげぽんがlispスレにくるの見たの初めてかも
OS作ろうとか言ってた頃が懐かしいな


198:デフォルトの名無しさん
09/08/08 01:39:53
使い物にならない俺俺Lispがバージョンアップするたびに
宣伝されたらたまったもんじゃない

199:デフォルトの名無しさん
09/08/08 01:42:29
>>196
馬鹿でーす!厨房でーす!

200:デフォルトの名無しさん
09/08/08 01:42:38
バージョン1.0になったら
また来たらいいよ

201:デフォルトの名無しさん
09/08/08 01:43:27
だね

202:デフォルトの名無しさん
09/08/08 01:53:01
規格準拠であるという点一つとっても俺Lispじゃないでしょ
ネット上で公開しているわけだし
ShiroさんのGaucheすらverUPカキコが許されないの?
独自処理系の書き込みばかりになったら(なりそうになったら)スレを分ければいいだけでは?

203:デフォルトの名無しさん
09/08/08 01:55:16
R6なんですよね。大変そうですね。
moshの方向性は何なんでしょうか。
実用?勉強?哲学?それとも胸に付けるラムダのバッジ?

実用 : shiroさん、本当に感謝しています。
勉強 : みんな作ってるよ。俺scheme。
哲学 : arcがやってる。(そもそもこれが目的だったら鼻高々にR6準拠なんて言わないような。)
ラムダバッジ : 食い扶持。金くれIPA。胸に光るは永田町。私は自民党(R6)の議員です。

204:デフォルトの名無しさん
09/08/08 01:57:54
充分に使いものになるレベルだと思う。
細かいバグはまだまだあるけど、基本はしっかりしている。
その細かい部分は多くの環境で使ってみないとなんとも言えないので、
このスレで議論するのは意味があると思う。
思うだけだけど。

ところで --loadpath オプションでは複数のパスをコロンで区切って渡せる?
Windows ではコロンはドライブレターの表記に使う。
コロンに特別な意味があると絶対パスを使えないことになる。
修正要。

205:デフォルトの名無しさん
09/08/08 01:58:30
たった2レスでこの荒れようw
というより一人基地が混じってるだけだが

206:デフォルトの名無しさん
09/08/08 02:03:31
この流れを「荒れ」と思ってしまうあなたも相当2chをわかってない

207:デフォルトの名無しさん
09/08/08 02:06:07
このスレではムキになって人の行為を否定するような人はあまり居ないからね。

208:デフォルトの名無しさん
09/08/08 02:11:28
Gaucheは使いものになるし、
本も出ているし、いちいち宣伝に来ない

209:デフォルトの名無しさん
09/08/08 02:18:16
>>191
ヘッダファイルの中で
#if (_WIN32_WINNT >= 0x0501)
という記述で囲まれて宣言しているので、
マクロ定義次第で同様のことは避けられそう。

210:デフォルトの名無しさん
09/08/08 02:19:05
>>208
何言ってるんだ。宣伝しに来たことあるよ。

211:デフォルトの名無しさん
09/08/08 02:24:12
宣伝っていうかバージョンアップ通知だろ。
このスレ住人で今まで Mosh 知らんかったやつがいるのか?

212:デフォルトの名無しさん
09/08/08 02:25:12
テンプレにも入ってるし。

213:デフォルトの名無しさん
09/08/08 02:31:52
Gauche並に使えるようになったら
通知してくれ

214:デフォルトの名無しさん
09/08/08 02:33:37
使えるかどうかはユーザー (つまりはおまいら) が判断することじゃないのけ?

215:デフォルトの名無しさん
09/08/08 05:02:19
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>

216:デフォルトの名無しさん
09/08/08 05:17:43
別に宣伝するのは構わないが、もう少しスレで質問に答えたりすれば
そんなに悪く言う奴もいなくなると思うが。ひげぽん、どうよ?

217:デフォルトの名無しさん
09/08/08 05:21:55
ソース公開されているんだから
直してパッチ送れよ
つかえないなあ

218:デフォルトの名無しさん
09/08/08 06:04:55
まだオープンソースに幻想抱いてるのか・・

URLリンク(d.hatena.ne.jp)
不具合報告
不具合報告(URLリンク(code.google.com))までお願いします。
もし面倒であれば、ここのコメント欄に書いていただくのでもかまいません。


219:デフォルトの名無しさん
09/08/08 06:41:59
また途中で投げ出す可能性が高いからな
今の段階で宣伝されてもうざいだけ

220:デフォルトの名無しさん
09/08/08 07:45:26
>>215
0x00 が出力されてるな。
内部的には ucs4 を使ってるとかいう話があったので、
変換がうまくいってないのかも。

221:デフォルトの名無しさん
09/08/08 07:58:57
(error "a") だけでも再現する。
(display "a" (standard-error-port)) でもやっぱりおかしい。
stderr への出力全般がダメっぽいな。

222:ひげぽん ◆Ngzcp/NZpA
09/08/08 11:08:02
>>192
>>194

すみません。

>>198
>>200
R6RS にも準拠したし俺俺Lisp を脱したかなと思って宣伝してみたのですが
不愉快だったらすみません。

>>203
方向性は実用です。ライブラリを増やしたり速度を気にしたりするのも実用を目指してのことです。

>>204
ありがとうございます。そういっていただけると助かります。

> ところで --loadpath オプションでは複数のパスをコロンで区切って渡せる?
はい。使えます。
なるほど。Windows の場合は ; を区切り文字とするように修正します。

>>209
そうですね。
ここに対策が載っていたので修正します。
URLリンク(yanchde.gozaru.jp)

>>213
Gauche 並はまだまだ遠いです。がんばります。


223:ひげぽん ◆Ngzcp/NZpA
09/08/08 11:09:33
>>215
> エラーメッセージがEmacsで拾えなかった。STDERRへの出力に問題があるのでは?
Windows では標準出力、エラー出力で WriteConsole 関数を使っているのですがそれがまずいのかもしれません。
Emacs は Meadow とかでしょうか?(試してみたいので)

> R6RSだとloadが無いけどどうするの?
REPL から動的にコードをロードしたいという意味でしょうか?
ライブラリ形式で保存しておいて (import library-name) はどうでしょう。

> 竹内関数、かなり速かった。

まだ Gauche より若干遅いですね。がんばります。

> 216
> 別に宣伝するのは構わないが、もう少しスレで質問に答えたりすれば
> そんなに悪く言う奴もいなくなると思うが。ひげぽん、どうよ?

可能な限りがんばります。



224:ひげぽん ◆Ngzcp/NZpA
09/08/08 11:12:49

>>217
いえバグの内容を指摘してもらえるだけで十分ですよ。

>>219
すみません。
どれくらいの段階になったらよいでしょう?
言語処理系は完成の定義が難しいですよね。

>>220
>>221
ありがとうございます。
内部コードは UCS4 でそれを UTF16 にして WriteConsole に渡しています。
cmd.exe でも出力されていないとかだったらかなりまずいですね。

225:デフォルトの名無しさん
09/08/08 12:35:58
>>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 でいいんじゃね?

226:デフォルトの名無しさん
09/08/08 12:40:45
>>224
URLリンク(msdn.microsoft.com)
WriteConsole 関数は、コンソールハンドル以外にリダイレクトされている標準ハンドルを渡すと失敗します。

emacs に限らずリダイレクトしたらダメってことだよな。
使えないなぁ…。

227:デフォルトの名無しさん
09/08/08 12:42:27
パッチ作って送れよ。
使えないなぁ…。


228:デフォルトの名無しさん
09/08/08 12:54:28
コンパイラが Scheme で書いてあったりするので、
Mosh のコンパイルには Mosh が必要だったり、
環境を構築するのが面倒なんだわ。
今までは Linux とかのまともに Mosh が動く環境で一部の処理をしてから
もちこんだりとか、かなり構造を理解してないとわけわかんなかったけど、
今回は Windows でもそれなりに動くバイナリ提供してくれたんで、
これでコンパイル環境ととのえてみる。

229:デフォルトの名無しさん
09/08/08 13:25:06
configure で gauche の存在をチェックしてるなぁ。
まだ gosh 使ってんの?

230:デフォルトの名無しさん
09/08/08 14:06:19
ブートストラップだろ

231:デフォルトの名無しさん
09/08/08 14:07:06
ところで最近は IRC の #Lisp_Scheme チャンネルが過疎ってるようなんだけど、
ネタが無いのかね。

232:デフォルトの名無しさん
09/08/08 14:07:51
>>230
いや、そこで Mosh 自身を使うもんじゃね?
という意味で。

233:デフォルトの名無しさん
09/08/08 14:28:36
とりあえず動作報告。
おそまきながら mosh(0.2.0) インストール(Mac OS X 10.4.11)。
make test も多分問題ないと思う(8917 tests passed と出た)。

234:デフォルトの名無しさん
09/08/08 14:37:22
Windows だと
Running 1898/1943
まで表示してエラー。
エラーっていうか
Windows が
「問題が発生したため、mosh.exe を終了します。ご不便をおかけして申し訳ありません。」
のダイアログを表示するエラー。
test/ffi.scm の途中でも同様のエラー。
その他はOK。

235:デフォルトの名無しさん
09/08/08 14:44:06
>>232 ブートストラップ的に不可能なんじゃないの?

236:デフォルトの名無しさん
09/08/08 14:46:56
>>235
gauche は gauche 使ってるよ。
svn trunk も常に「最も最近のリリース版」を使ってビルドできるようになってる。

237:デフォルトの名無しさん
09/08/08 14:47:40
(たまにミスってるときもあるけど)

238:デフォルトの名無しさん
09/08/08 14:54:01
>>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))))))

最後以外に <...> があった場合のことは考えてない。

239:デフォルトの名無しさん
09/08/08 14:55:08
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 ...)))))))))

240:デフォルトの名無しさん
09/08/08 14:58:24
細かいけど手持ちのscheme処理系のプロンプト。
guile> 1
gosh> 1
mosh>1
なんかポリシーがあるのかな。moshだけ空白が無い。

241:デフォルトの名無しさん
09/08/08 15:01:59
>>240
Ypsilon と Petite Chez Scheme も空白アリだったぜ!

242:デフォルトの名無しさん
09/08/08 15:18:07
VistaにMosh 0.2.0をインストールして、バージョンを調べたら以下のようになりました。
C:\Users\username>mosh -v
Mosh R6RS scheme interpreter, version 0.0.8

こういうものなんですか?

243:デフォルトの名無しさん
09/08/08 15:28:29
>>236
gaucheはschemeの実行に必要な部分をschemeで作ってないからできるんじゃないか?

244:デフォルトの名無しさん
09/08/08 15:49:24
最初にIEが入ってないとFirefoxをダウンロードできないようなものですね。わかります

245:デフォルトの名無しさん
09/08/08 15:55:48
>>243
関係ない。
Gauche のコンパイラ部分は全面的に Scheme で記述されているし、
VM も Scheme で記述されるようになってる部分がある。
VM についてはインストラクションの合成を簡単に記述したいといった
性能向上を目的とした改善が最近のバージョンで有り、
切り替えの際には多少の混乱があったが、
今は VM が変わっても大丈夫なシカケが入っている。
もちろん、ずっと前の初期の Gauche だと話は別だが、
現在は Gauche 自身でブートストラップが完結するようになっている。

246:245
09/08/08 16:02:27
この問題についての解説というか作者のメモはここ。
URLリンク(practical-scheme.net)

247:デフォルトの名無しさん
09/08/08 16:09:27
>>239
Mosh でも動いた。

248:デフォルトの名無しさん
09/08/08 16:30:59
>>246
> このプリコンパイルには既にインストールされている、その時点での最新リリースのGaucheを使うことになっている。

ブートストラップの疑問は解決しないように見えるんだが。
俺の理解不足?

249:デフォルトの名無しさん
09/08/08 16:40:48
リリース版は前処理を済ませてから配布される。

250:215
09/08/08 17:05:24
>>223

Meadowです。

importを使ってみます。使い方がまだよくわからないもので。

Replでの実行中にCtrl+Cでの中断に反応してこないです。
WindowsのAPIではGenerateConsoleCtrlEventが使われているはずです。
URLリンク(msdn.microsoft.com)

CTRL_C_EVENT には反応しないのですが、
CTRL_BREAK_EVENT(Ctrl+D)には反応して処理系が強制終了します。

REPLでのプログラムファイルの読み込み、実行、中断がやり易くなるとうれしいです。


251:デフォルトの名無しさん
09/08/08 18:09:56
R6RS なマクロのデバッグって何を使うのがいいんだろ
ypsilon には macro-expand があるけど全部展開しちゃうし(macroexpand-1 みたいなのはないみたい
mosh や ikarus にはそういう機能がないっぽい
DrScheme の Macro Stepper が今のところ最有力なのかな

252:デフォルトの名無しさん
09/08/08 19:18:04
LOL売り切れトル

253:デフォルトの名無しさん
09/08/08 19:47:56
宣伝はやめてください
おねがいします。

254:デフォルトの名無しさん
09/08/08 19:52:49
売り切れているのを宣伝するか?

255:デフォルトの名無しさん
09/08/08 19:55:27
SICP訳してみてるんだけど、需要ある?

URLリンク(www21.atwiki.jp)

256:デフォルトの名無しさん
09/08/08 19:57:21
宣伝はやめてください
おねがいします。

257:デフォルトの名無しさん
09/08/08 19:58:41
>>255
糞訳じゃなければ

258:デフォルトの名無しさん
09/08/08 20:02:22
>>255
供給が需要を生みます

259:デフォルトの名無しさん
09/08/08 20:26:53
>>255
もっとエキサイティングにたのむ

260:デフォルトの名無しさん
09/08/08 20:29:42
「Scheme and the Art of Programming」
(George Springer and Daniel P. Friedman)

↑こんな易しめな入門書の邦訳があったらいいかも。



261:デフォルトの名無しさん
09/08/08 21:04:03
どなたか、Peter Seibel『実践Common Lisp』をテキストにして、
Windows上でLispを勉強するサイトを作ってください。
お願いします。


262:デフォルトの名無しさん
09/08/08 22:10:34
>>261
いいだしっぺの法則というのがあってだな…

263:デフォルトの名無しさん
09/08/08 22:16:58
勉強する気が本当にあるなら、テキストになるその本買ってきて自分でやれw

264:ひげぽん ◆Ngzcp/NZpA
09/08/08 22:17:02
>>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
> URLリンク(msdn.microsoft.com)
> WriteConsole 関数は、コンソールハンドル以外にリダイレクトされている標準ハンドルを渡すと失敗します。

emacs はリダイレクトしているんでしょうか。まだ関連を追い切れていません。

>>228
> これでコンパイル環境ととのえてみる。
お手数おかけします。
Visual C++ 2008 Express Edition で一発コンパイルできますので、もし良かったら
ご利用ください。

>>229
> configure で gauche の存在をチェックしてるなぁ。
> まだ gosh 使ってんの?

う。しまった。存在チェックは不要です。消しておきます。
Mosh 開発者以外は gosh は必要ありません。


265:ひげぽん ◆Ngzcp/NZpA
09/08/08 22:19:23
>>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以外の動作には支障がないと思います)


266:ひげぽん ◆Ngzcp/NZpA
09/08/08 22:20:12
>>240
>>241
> 細かいけど手持ちのscheme処理系のプロンプト。
> guile> 1
> gosh> 1
> mosh>1
> なんかポリシーがあるのかな。moshだけ空白が無い。

大変良い指摘。ポリシーないのであわせます。

>>242
> Mosh R6RS scheme interpreter, version 0.0.8
> こういうものなんですか?

ありがとうございます。ミスです。修正します。

>>247
> Mosh でも動いた。

やった!

>>250
> Meadowです。

ありがとうございます。

267:ひげぽん ◆Ngzcp/NZpA
09/08/08 22:21:42
> Replでの実行中にCtrl+Cでの中断に反応してこないです。
> WindowsのAPIではGenerateConsoleCtrlEventが使われているはずです。
> URLリンク(msdn.microsoft.com)
> 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) が表示されるようになります。
というのはどうでしょうか。

268:ひげぽん ◆Ngzcp/NZpA
09/08/08 22:23:20
>>255
> SICP訳してみてるんだけど、需要ある?

おお。がんばっていますね。
新訳は結構需要があるのではないかと思います。

269:234
09/08/08 22:32:18
Mingw でコンパイルしても同じ結果に。
Mingw は想定内なんだろうか?

270:デフォルトの名無しさん
09/08/08 22:37:18
>>255
需要あります。取っ付きやすくなれば、下手に出回ってる難しいという印象なくなるし。

271:デフォルトの名無しさん
09/08/09 00:02:10
>>255
需要あります。ちょっと読んだ限りだと和田訳よりは良いみたいだし。

272:デフォルトの名無しさん
09/08/09 00:19:45
旧訳の「プログラムの構造と実行」でいいじゃん

273:デフォルトの名無しさん
09/08/09 03:03:41
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が少ないので。

274:デフォルトの名無しさん
09/08/09 03:35:52
なら積極的に Mingw をチェックしよう。

275:デフォルトの名無しさん
09/08/09 04:51:53
そういうあまりにも環境依存な内容は別の場所でやりなされ

276:デフォルトの名無しさん
09/08/09 05:06:15
どうせ他に話題も無いくせに
自分の居場所を汚されたという気分だけでいちゃもんつける>>275のようなやつ

277:デフォルトの名無しさん
09/08/09 05:28:32
Arcがバージョンアップらしいぞ。俺は使う気もないけど。

278:デフォルトの名無しさん
09/08/09 05:40:45
他に話題あるじゃん
出て行けよ

279:デフォルトの名無しさん
09/08/09 05:43:46
Arcは専用スレあるからね。

280:デフォルトの名無しさん
09/08/09 08:54:39
URLリンク(wiki.fdiary.net)
ここ見れなくね?

281:デフォルトの名無しさん
09/08/09 09:29:37
この人、キチガイ?単なる老害だろ
URLリンク(cl-www.msi.co.jp)

282:デフォルトの名無しさん
09/08/09 11:15:00
>>281
釣りだよ。
そうやって盛り上げてんだよ。

283:デフォルトの名無しさん
09/08/09 11:23:32
読めないオープンソースはオープンソースの意味が無いから
人間が読むために作られた仕様書のほうがましだね

でも凡人が読めるオープンソースも無いわけではないね

284:デフォルトの名無しさん
09/08/09 11:56:45
そういえば TSPL4 出てるね
URLリンク(www.scheme.com)

285:デフォルトの名無しさん
09/08/09 11:57:01
>>281
だからどうした
同意してほしいのか

286:デフォルトの名無しさん
09/08/09 12:01:48
>>282
そんな方法でしか盛り上げられないなら、やっぱり老害だな

>>285
聞いてるだけだが、何か?答える気無いなら糞レスいらないぞ

287:デフォルトの名無しさん
09/08/09 12:04:52
老害を辞書で引いてみたら

288:デフォルトの名無しさん
09/08/09 12:07:49
>>281がキチガイというオチでした

289:デフォルトの名無しさん
09/08/09 12:09:03
聞いてるだけって
自分がキチガイだと教えてもらったら納得するのか?

290:デフォルトの名無しさん
09/08/09 12:09:13
黒田乙

291:デフォルトの名無しさん
09/08/09 13:31:29
夏の風物詩だろ>>281みたいなニワカが沸くの


292:デフォルトの名無しさん
09/08/09 16:20:49
Schemeでマクロはかけないとか言って反論されてた人か

293:デフォルトの名無しさん
09/08/09 16:26:21
まあでも確かに R5RS までだとマクロはいろいろつらかったような
Scheme + define-macro は落とし穴がちょこちょこあるし
syntax-rules だと黒魔術的なことをしないとできないことも多かったし

URLリンク(okmij.org) あたりとか俺には理解不能すぎる

294:デフォルトの名無しさん
09/08/09 16:38:11
以前にもいたね>>281みたいなの

295:デフォルトの名無しさん
09/08/09 18:11:30
冗談でも何でもなく、まさに馬鹿には理解できないレベルの議論だからな。
溢れる自尊心と足りない知性の組み合わせで無根拠に大きく出ちゃう学生さんには、
黒田氏の話は毒。

296:デフォルトの名無しさん
09/08/09 18:13:00
>溢れる自尊心と足りない知性の組み合わせで無根拠に大きく出ちゃう
黒田さんのことですねわかります

297:デフォルトの名無しさん
09/08/09 18:15:45
>>296
つまりそういう反応しか出来ないから
君のレベルでは毒なのw

298:デフォルトの名無しさん
09/08/09 18:20:06
再帰w

299:デフォルトの名無しさん
09/08/09 18:25:43
Common lisp中華思想ですから、
それに迎合出来無い全員に取って毒ですよ
で、迎合できない者を指して「レベルの低い」と称するんですね

300:デフォルトの名無しさん
09/08/09 18:30:54
とまぁ、こういうレベルの人が騒ぐわけです。
わかってなきゃ言えないことを一つも言えないまま、いかに「わかった風な空気」をまとうか。
それがこの人らの書き込みのコンセプト。

301:デフォルトの名無しさん
09/08/09 18:33:30
はいはい、そうやってずっとcommon lispのアンチを増やしてればいいんですよ
レベルの低い信者なんていても仕方がないから合理的ではありますね

302:デフォルトの名無しさん
09/08/09 18:36:23
限界集落みたいな狭い狭いlisp村内で釣りしてどうすんだという気もするが。
釣るなら村外へ向けてするべき。

303:デフォルトの名無しさん
09/08/09 18:42:30
common lispの良いところと悪いところ、Schemeの良いところと悪いところってのが宗教みたいに本当に相容れないからね
煽りの痛さはどっちもどっちなんだけどなぜか両方を受け入れてだからどうしたって言えるレベルの人は少ないよね


304:デフォルトの名無しさん
09/08/09 18:43:18
CommonLisp は何でもアリだからな。
「強い言語」と言えばそう言える。
でも、 CommonLisp に批判的な立場っていうのはその強さが
ある意味で使い難いって言うのが主な主張だろう。

「CommonLisp は強いんだ!」 って言ったって、
そんなことはとっくに承知で、
その上で強さがダメだって言ってるんだよ。

そこんところをもうちょっと掘り下げないと平行線だよな…
なんて思うわけですよ。

305:デフォルトの名無しさん
09/08/09 18:43:23
>>302
村外で釣ってる人ってrubyスレで暴れてるみたいな恥さらしばっかりな気がする


306:デフォルトの名無しさん
09/08/09 18:46:41
通りがかりの低レベラーが横レスしますよ
Schemeって研究あるいは教育用の言語みたいなもんじゃないの?元々は。
Common Lispは実用のために「工学的強度を持った言語」としてうんたらかんたら・・・
目指してる方向が違うんじゃないの。

307:デフォルトの名無しさん
09/08/09 18:58:11
だからどうした
同意してほしいのか

308:デフォルトの名無しさん
09/08/09 18:59:40
何この人^^

309:デフォルトの名無しさん
09/08/09 19:01:06
>>306
おたがいの批判はいわゆる「オヤクソク」であって、
初心者にそれぞれの言語の立場をわかりやすく説明するコントなんだよ。

310:デフォルトの名無しさん
09/08/09 19:13:14
大抵の人の場合仕事で使ってるのはCLでもSchemeでもないから、
論争もまた遊びみたいなもの。さらに言えば仕事で使ってるような言語での
ネタすら遊びでしかないという人は多いだろう。
で、黒田さんはそういう中途半端な人達にLispを語って欲しくない
という事も言っている。とりあえず本気の人も遊びの人も
互いに有益な範囲のみで関わっていれば問題はないだろうよ。

311:デフォルトの名無しさん
09/08/09 19:21:13
>>309
一般的にはそうかもしれない。でもこの場合は違うかな。
初心者とか無能に理解されることを期待してないから、ああいう書き方になる。
いやむしろ、馬鹿が読んだ時に、馬鹿な理屈で馬鹿な誤読をして、馬鹿丸出しの敵になることを
黒田氏は期待してるかもしれない。
馬鹿な味方ほど邪魔なものはないからね(PやRから始まるあの言語の信者を想像してみよう)。

黒田-shoro間では濃い議論になるものが、黒田-ねらー間だと全くそうならない。
熱くなればなるほど、根拠が薄くなり、結論の語気だけが上がる、悲惨極まりない人種が
噛み付いてるだけの、この無様な状況。
つまり、何を言ってるのか理解するところにも達していないわけ。

312:デフォルトの名無しさん
09/08/09 19:26:01
黒田vsShiroさんの議論のレベルに達してないのは自覚してる。
そこまで自惚れてるわけじゃない。
しかし、突き放して、理解させようという努力をしないなら、
ただの見下し厨と変わらないように思うけどなぁ。

313:デフォルトの名無しさん
09/08/09 19:26:11
>>311は「馬鹿な味方」の好例だな。

314:デフォルトの名無しさん
09/08/09 19:30:58
>>311
shoro さんの意見を聞いてみたいですね

315:デフォルトの名無しさん
09/08/09 19:31:40
>>314
本質でないところでこういう揚げ足をとる馬鹿

316:デフォルトの名無しさん
09/08/09 19:32:26
>>315
スルーできない馬鹿

317:デフォルトの名無しさん
09/08/09 19:33:18
>>312
最初から理解できるようなレベルの人以外は
味方になって欲しくないということでしょう
彼等の目標を踏まえればそれ程のフィルターが必要であることは
容易に想像できます。

318:デフォルトの名無しさん
09/08/09 19:33:39
>>316
オマエモナー

319:デフォルトの名無しさん
09/08/09 19:40:21
やっぱlispスレはこうでないとな

320:デフォルトの名無しさん
09/08/09 19:48:17
言語知識ゼロでも構わない感じの空気になると
水を得た魚のように活発になる人が多いのは、
Lispスレでも他のほげ言語スレでも同じ。

321:デフォルトの名無しさん
09/08/09 19:54:01
自転車置き場がうんたらかんたらだっけか?

322:デフォルトの名無しさん
09/08/09 19:56:13
>>313
というその一文が、根拠が薄く、結論の語気だけが上がってる悲惨な人種の
典型的な産物ですね。

323:デフォルトの名無しさん
09/08/09 20:03:15
>>322
必死だな

324:デフォルトの名無しさん
09/08/09 21:13:07
えらい加速してると思ったら・・

>>255
SICPの日本語訳、2章まで読めるとこあるよ
sicp tmuでぐぐれば今3番手に出る
原著読んでて翻訳つらいなって思った練習問題なんかは
この訳でもスキップされてたりするけど、
訳はわかりやすいので参考になれば

325:デフォルトの名無しさん
09/08/09 23:31:44
論争読んだけど、ようするに
R5RSの仕様だと解釈の仕方によってはマクロ作るときに問題があるが、
別の解釈の仕方では問題ないし、問題ないように実装することもできる
しかも、R6RSでは問題ない
ってことだろ
結局Schemeに対する言いがかりに感じた

326:デフォルトの名無しさん
09/08/10 06:29:45
>>325
んで、さらに Schemer の内部では、 R6RS には思想がないとか
syntax-case ごちゃごちゃし過ぎ、 Explicit Renaming とか Syntactic Closures 忘れるな
っていう内ゲバが起こるんですね、わかります

と煽ってみる

327:デフォルトの名無しさん
09/08/10 06:55:03
>>158
スレが別方向に行っちゃってるけど、
Common Lisp / Java 版の SHRDLU っていうのがあるみたい
URLリンク(www.semaphorecorp.com)
PLANNER は CONNIVER と共に Scheme の源流みたいな言語だね(英語版 Wikipedia 参照)

328:158
09/08/10 09:24:57
>>327
ありがとう。
早速、試してみるよ。

329:デフォルトの名無しさん
09/08/10 18:46:49
Connniverってなんて読むの?

330:デフォルトの名無しさん
09/08/10 19:51:56
こんにぼぁー

331:デフォルトの名無しさん
09/08/10 22:59:47
SHRDLUをGCLで動かそうとしたところたくさんあるファイルのうちの
DICTIOというファイルでエラー。単語や意味を教えるファイルらしい。
エラーになるのは
(DEFS \#DIRECTION
FEXPR (LAMBDA (A B) NIL)
NOGOAL T)
という関数。

これをコメントアウトすれば一応動作開始する。でも何を聞いても
「Sorry I don't know.」ばかり。
辞書が不完全だからかな。

332:デフォルトの名無しさん
09/08/11 00:16:47
common lispとschemを並行して勉強するのってこんがらがってやめたほうがいい?

333:デフォルトの名無しさん
09/08/11 00:49:23
やめとけやめとけ

334:デフォルトの名無しさん
09/08/11 00:51:48
>>333
ありがとうございます。じゃあschmeから先に勉強します(^_^)

335:デフォルトの名無しさん
09/08/11 01:57:11
schemもschmeもやめて
common lispにしておけ

336:デフォルトの名無しさん
09/08/11 02:14:42
黒板に書いて遊ぶならSchemeやschmeやschem、ソフトウェアを作るならCommon Lisp。

337:デフォルトの名無しさん
09/08/11 02:51:07
CommonLispで最近出てきた何か面白い処理系ある?

338:デフォルトの名無しさん
09/08/11 04:35:58
ないからクソだね!schemeがいいよ!

339:デフォルトの名無しさん
09/08/11 05:35:06
schemeとschmeとschemではどれがいいんだ?

340:デフォルトの名無しさん
09/08/11 05:36:03
夏休みだなあ

341:デフォルトの名無しさん
09/08/11 06:04:49
みなさん処理系は何をお使いですか?
わたしはGaucheを使っています。
Little Schemerで勉強中

342:デフォルトの名無しさん
09/08/11 06:16:48
GaucheとかPLTとか。
IA-32のSolarisに対応してたらLarceny使うのに。

あとは、IkarusとYpsilonとMosh検討中。
R6RS対応したライブラリが少ないのがネック。
識別子の最初に@使えないからSXMLとかでも問題あるし。


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