5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

Lisp Scheme Part25

1 :デフォルトの名無しさん:2009/01/13(火) 23:16:33
※ ここはCommon Lisp、SchemeをはじめとするLisp族全般のスレです ※

Part24: ttp://pc11.2ch.net/test/read.cgi/tech/1224939205/
Part23: ttp://pc11.2ch.net/test/read.cgi/tech/1215875388/
Part22: ttp://pc11.2ch.net/test/read.cgi/tech/1211381920/
Part21: ttp://pc11.2ch.net/test/read.cgi/tech/1207300697/
Part20: ttp://pc11.2ch.net/test/read.cgi/tech/1205021786/
Part19: ttp://pc11.2ch.net/test/read.cgi/tech/1200237296/
Part18: ttp://pc11.2ch.net/test/read.cgi/tech/1186922295/
Part17: ttp://pc11.2ch.net/test/read.cgi/tech/1177065699/
Part16: ttp://pc11.2ch.net/test/read.cgi/tech/1172404795/
Part15: ttp://pc10.2ch.net/test/read.cgi/tech/1151025773/
Part14: ttp://pc8.2ch.net/test/read.cgi/tech/1132275726/
Part13: ttp://pc8.2ch.net/test/read.cgi/tech/1115901841/
Part12: ttp://pc8.2ch.net/test/read.cgi/tech/1100229366/
Part11: ttp://pc5.2ch.net/test/read.cgi/tech/1091456033/
Part10: ttp://pc5.2ch.net/test/read.cgi/tech/1075630259/
Part09: ttp://pc2.2ch.net/test/read.cgi/tech/1069594582/
Part08: ttp://pc5.2ch.net/tech/kako/1058/10582/1058263391.html
Part07: ttp://pc5.2ch.net/tech/kako/1042/10421/1042167213.html
Part06: ttp://pc3.2ch.net/tech/kako/1031/10315/1031560687.html
Part05: ttp://pc3.2ch.net/tech/kako/1023/10230/1023091882.html
Part04: ttp://pc.2ch.net/tech/kako/1016/10162/1016211619.html
Part03: ttp://pc.2ch.net/tech/kako/1008/10082/1008220265.html
Part02: ttp://pc.2ch.net/tech/kako/1002/10025/1002584344.html
Part01: ttp://piza2.2ch.net/tech/kako/987/987169286.html


2 :デフォルトの名無しさん:2009/01/13(火) 23:17:35
□テンプレート置き場□
ttp://wiki.fdiary.net/lisp/ (id:guest pass:cl)

□参考リンク□

日本Lispユーザ会 (日本語)
ttp://jp.franz.com/jlug/index.html
ここにかなりの情報があります。削るとAllegro Common Lispのページへ。

プログラミング言語Scheme (日本語)
ttp://www.sci.u-toyama.ac.jp/~iwao/Scheme/scheme.html
Schemeの人はまずここを見ましょう。

Schemeへの道 (日本語)
ttp://www.stdio.h.kyoto-u.ac.jp/~hioki/gairon-enshuu/SchemeNotes/scheme.html
Schemeの入門サイト。

Practical Scheme (日本語)
ttp://practical-scheme.net/index-j.html
Scheme処理系「Gauche」の作者である川合史朗氏のサイト。
「普通のやつらの上を行け」など、興味深い文書を沢山翻訳されてます。

LispUser.net (日本語)
ttp://lispuser.net/
Lisp関連の有用な情報がまとめられています。Common Lispの話題が中心。


3 :デフォルトの名無しさん:2009/01/13(火) 23:18:30
面倒くせえ
後は誰か頼むw

4 :デフォルトの名無しさん:2009/01/14(水) 00:08:31
□仕様関係□

CLtL2: Common Lisp the Language 2nd edition (英語)
ttp://www-2.cs.cmu.edu/Groups/AI/html/cltl/cltl2.html

CLHS: Common Lisp Hyper Spec (英語)
ttp://www.lispworks.com/documentation/HyperSpec/Front/index.htm

Common Lisp Quick Reference (英語)
ttp://clqr.berlios.de/

R5RS: Revised(5) Report on the Algorithmic Language Scheme (英語)
ttp://swiss.csail.mit.edu/~jaffer/r5rs_toc.html

R5RS: Revised(5) Report on the Algorithmic Language Scheme (日本語)
ttp://www.sci.u-toyama.ac.jp/~iwao/Scheme/r5rsj/html/r5rsj.html

ERR5RS: A proposal for an Extended R5RS Scheme (英語)
ttp://scheme-punks.cyber-rush.org/wiki/index.php?title=ERR5RS:Charter

R6RS: Revised(6) Report on the Algorithmic Language Scheme (英語)
ttp://www.r6rs.org/final/html/r6rs/r6rs.html

5 :デフォルトの名無しさん:2009/01/14(水) 00:08:56
□Wikipedia関連□

ttp://ja.wikipedia.org/wiki/LISP
ttp://ja.wikipedia.org/wiki/Common_Lisp
ttp://ja.wikipedia.org/wiki/Scheme

□継続関連□

なんでも継続 (日本語)
ttp://practical-scheme.net/docs/cont-j.html

Schemeへの道:継続 (日本語)
ttp://www.stdio.h.kyoto-u.ac.jp/~hioki/gairon-enshuu/SchemeNotes/continuation.html

継続の使い方 (日本語)
ttp://www.geocities.co.jp/SiliconValley-PaloAlto/7043/index.html#continuation

継続の使用法 (日本語)
ttp://www.ice.nuie.nagoya-u.ac.jp/~h003149b/lang/block.html

Kahua: 継続ベースのアプリケーションサーバ。
ttp://www.kahua.org/

6 :デフォルトの名無しさん:2009/01/14(水) 00:09:24
□書籍関連(1)□

Structure and Interpretation of Computer Programs (英語)
ttp://mitpress.mit.edu/sicp/
通称「SICP」として知られる『計算機プログラムの構造と解釈』の原書です。
全文がオンラインで読めます。
ttp://sicp.ipl.t.u-tokyo.ac.jp/ (日本語版サポートサイト)

Programming Languages: Application and Interpretation (英語)
ttp://www.cs.brown.edu/~sk/Publications/Books/ProgLangs/
ブラウン大学で使われている、Schemeを使ったプログラミング言語論の教科書。
SICPでは触れられていない継続についても、Webアプリと関連づけて詳述されています。
全文がpdf形式でダウンロードできます。

How to Design Programs (英語)
ttp://www.htdp.org/2003-09-26/Book/
Schemeを使った優れたプログラミング入門書。全文がオンラインで読めます。

The Little Schemer (英語)
ttp://www.ccs.neu.edu/home/matthias/BTLS/
The Seasoned Schemer (英語)
ttp://www.ccs.neu.edu/home/matthias/BTSS/
Schemeの教科書として定評のある「Schemerシリーズ」のサポートページです。

The Scheme Programming Language (英語)
ttp://www.scheme.com/tspl3/
Scheme入門書。全文がオンラインで読めます。

7 :デフォルトの名無しさん:2009/01/14(水) 00:10:01
□書籍関連(2)□

『プログラミングGauche』 (日本語)
ttp://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?&ISBN=978-4-87311-348-7
ttp://karetta.jp/book/gauche-hacks (立ち読み版)
ttp://karetta.jp/book-cover/programming-gauche (サポートページ)
Scheme処理系言語Gaucheの初の解説書!

『入門Scheme』 (日本語)
ttp://www4.ocn.ne.jp/~inukai/scheme_primer_j.html
幻となったScheme入門書。全文がダウンロードできます。

Common Lisp: A Gentle Introduction to Symbolic Computation (英語)
ttp://www.cs.cmu.edu/~dst/LispBook/
Common Lispを使った非常に丁寧なプログラミング入門書。
全文がpdf形式でダウンロードできます。

Practical Common Lisp (英語)
ttp://www.gigamonkeys.com/book/
ttp://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=978-4-274-06721-1
S式の羅列で現実的な問題をどう解くのか、そのギャップに悩まされてる人に。
全文がオンラインで読めます。日本語版は『実践Common Lisp』として出版されています。
ttp://pcl.lispuser.net/ (日本語版非公式サポートページ)

『On Lisp』 (日本語)
ttp://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=978-4-274-06637-5
ttp://user.ecc.u-tokyo.ac.jp/~tt076524/onlispjhtml/ (日本語訳HTML版)
ttp://www.paulgraham.com/onlisp.html (英語原文がダウンロード可)
LispハッカーPaul Grahamが、Lispの力の源泉であるマクロプログラミングを解説。

8 :デフォルトの名無しさん:2009/01/14(水) 00:10:14
実装いろいろ
ttp://community.schemewiki.org/?scheme-faq-standards#implementations

9 :デフォルトの名無しさん:2009/01/14(水) 00:10:24
□その他(1)□

John McCarthy's Home Page (英語): Lispの生みの親、ジョン・マッカーシーのサイトです。
ttp://www-formal.stanford.edu/jmc/

Association of Lisp Users (英語): 米国のLispユーザ会です。
ttp://www.alu.org/alu/home

CLiki (英語): Common Lisp関連のリソースが集積されています。
ttp://www.cliki.net/index

CMU Common Lisp Repository (英語): 新旧様々なプログラムが置いてあります。
ftp://ftp.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/lisp/0.html

The Common Lisp Cookbook (英語): いわゆるCookbookです。
ttp://cl-cookbook.sourceforge.net/

The EncyCMUCLopedia (英語): CMUCL関連文書。CMUCLユーザーでなくとも有益なはず。
ttp://www.isr.ist.utl.pt/library/docs/encycmuclopedia/doc/

Common-Lisp.net (英語): 多くのプロジェクトがホスティングされています。
ttp://common-lisp.net/

よろずや (日本語): Lisp関連の実用的な情報が色々。
ttp://www.geocities.co.jp/SiliconValley-SanJose/7474/

どう転んでもLisp (日本語): 竹内郁雄氏による発表のスライドです。
ttp://jp.franz.com/base/seminar/2005-11-18/SeminarNov2005-Takeuchi.files/v3_document.htm

Lispとは何か (日本語): 中村正三郎氏による発表のスライドです。
ttp://www.asahi-net.or.jp/%7Eki4s-nkmr/lisp20061121/lisp.html

10 :デフォルトの名無しさん:2009/01/14(水) 00:13:38
□その他(2)□

独習Scheme三週間 (日本語): Schemeの教科書。
ttp://www.sampou.org/scheme/t-y-scheme/t-y-scheme-Z-H-1.html

Bibliography of Scheme-related Research (英語): Scheme関連の論文リンク集。
ttp://library.readscheme.org/

Scheme Hash (英語): S式でXMLを使えるようにするSXML等。
ttp://okmij.org/ftp/Scheme/index.html

Scheme-users.jp (日本語): Schemeユーザのためのハブサイトです。
ttp://scheme-users.jp/

(Scheme) (Lisp) (日本語): 各種Scheme処理系をCygwin上でビルドする方法など。
ttp://www.geocities.co.jp/SiliconValley-PaloAlto/7043/

SLIB (英語): Scheme用のライブラリとして有名なSLIBのサイトです。
ttp://swiss.csail.mit.edu/~jaffer/SLIB

Scheme Requests for Implementation (英語): いわゆる「SRFI」のサイトです。
ttp://srfi.schemers.org/

Meadow memo: 2ちゃんねるログ: dat落ちした過去スレの一部が見られます。
ttp://www.bookshelf.jp/2ch/index.html

11 :デフォルトの名無しさん:2009/01/14(水) 00:14:18
□その他(3)□

初心者が集うIRC(布教してくれる先生も大募集です)。
irc.scenecritique.com
port 6667
チャンネル #Lisp_Scheme

Schemeのテストコード書いたり、簡単な実行したりコードさらしたりするにはここへカモン。
ttp://codepad.org/
コードを書いて実行した時のURLを記録しておけば、実行結果も一緒にさらす事が出来て幸せです。

12 :デフォルトの名無しさん:2009/01/14(水) 00:14:42
□Schemeの実装(1)□

Gauche: マルチバイト文字に対応したR5RS準拠のScheme処理系。川合史朗氏作。
ttp://practical-scheme.net/gauche/index-j.html
ttp://jp.youtube.com/watch?v=WEBOdWyGE3E (川合史朗氏によるGaucheに関するトーク)

PLT Scheme: DrScheme、MzSchemeなどのR5RS準拠および独自拡張のScheme処理系。
ttp://www.plt-scheme.org/

Scheme48: R5RS準拠のSchemeバイトコードインタプリタ。
ttp://www.s48.org/

Gambit-C: R5RS準拠のScheme処理系。
ttp://dynamo.iro.umontreal.ca/~gambit/wiki/index.php/Main_Page

Chicken: R5RS準拠のScheme処理系。スタンドアロン実行ファイルが簡単に作成可能。
ttp://www.call-with-current-continuation.org/

Stalin: 激烈な最適化を施すScheme処理系。人間の書くCコードより速いという噂。
ttp://cobweb.ecn.purdue.edu/~qobi/software.html
ftp://ftp.ecn.purdue.edu/qobi/fdlcc.pdf (Stalinの最適化技術を解説した論文)

Bigloo: CLR用のコードを吐けるようになったらしい。
ttp://www-sop.inria.fr/mimosa/fp/Bigloo/

Guile: R5RS準拠のGNU公式拡張用言語。もちろんSLIBも使えます。
ttp://www.gnu.org/software/guile/guile.html

JScheme: Javaで書かれたR4RS準拠Scheme処理系。Javaインターフェイスをサポート。
ttp://jscheme.sourceforge.net/jscheme/main.html

13 :デフォルトの名無しさん:2009/01/14(水) 00:15:16
□Schemeの実装(2)□

Chez Scheme: R6RS準拠の商用Scheme処理系。インタプリタはフリー。
ttp://www.scheme.com/

Ypsilon Scheme System: 藤田善勝氏が開発中のR6RS準拠のScheme処理系。
ttp://www.littlewingpinball.net/mediawiki-ja/index.php/Ypsilon_Scheme_System

Mosh: higepon氏が開発中のR6RS準拠Scheme処理系。
ttp://code.google.com/p/mosh-scheme/

SECDR-Scheme: SECD machine modelに基づく実装。
ttp://lily.fan.gr.jp/~kmd/adhoc/view.rhtml?n=SECDR-Scheme_woyomu

LispMe: Palm上で動くScheme処理系。これもSECD virtual machine。
ttp://www.lispme.de/lispme/

Minischeme: 1ファイルに凝縮されたScheme処理系。
ttp://tinyscheme.sourceforge.net/minischeme.tar.gz

TinyScheme: Minischemeを色々弄ったもの。
ttp://tinyscheme.sourceforge.net/

Schemix: Linuxのkernelへのパッチで/dev/として扱えるTinyScheme。
ttp://www.abstractnonsense.com/schemix/

Bit: Minischemeよりも小さい(?)バイトコード変換系。
ttp://www.iro.umontreal.ca/~dube/

KI-Scheme, AM-Scheme, etc...
ttp://www.nifty.com/download/dos/prog/lisp/

14 :デフォルトの名無しさん:2009/01/14(水) 00:15:53
□Common Lispの実装□

Steel Bank Common Lisp: 代表的なCommon Lisp処理系。CMUCLより派生。
ttp://www.sbcl.org/

CMUCL: Common Lisp処理系。
ttp://www.cons.org/cmucl/

GNU CLISP: Common Lisp処理系。バイトコード変換系。
ttp://www.clisp.org/

Clozure CL: Common Lisp処理系。
ttp://trac.clozure.com/openmcl

Embeddable Common Lisp: Cで書かれたプログラムへの埋め込みが可能なCommon Lisp処理系。
ttp://ecls.sourceforge.net/

Armed Bear Common Lisp: JVM上で動くCommon Lisp処理系。JVMバイトコード変換系。
ttp://armedbear.org/abcl.html

Allegro Common Lisp: 代表的な商用Common Lisp処理系。
ttp://www.franz.com/products/allegrocl/

LispWorks: 商用Common Lisp処理系。
ttp://www.lispworks.com/

Corman Common Lisp: 商用Common Lisp処理系。
ttp://www.cormanlisp.com/

Scieneer Common Lisp: 商用Common Lisp処理系。
ttp://www.scieneer.com/scl/index.html

15 :デフォルトの名無しさん:2009/01/14(水) 00:17:40
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ  まピョーん☆
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ

16 :デフォルトの名無しさん:2009/01/14(水) 00:17:46
□その他の実装□

awklisp: Awkで書かれたわずか500行のLispインタプリタ。
ttp://www.accesscom.com/~darius/

CAMPUS LIsP Lemon version: Cでわずか1000行。
ttp://www-masu.ist.osaka-u.ac.jp/~kakugawa/hacks/clisp/

Lisp interpreter in AS3: ActionScriptで書かれたLispインタプリタ。
ttp://www.solve-et-coagula.com/?p=8

Arc: ポール・グレアム氏が開発中の新しいLisp。
ttp://arclanguage.org/

Clojure: MLやHaskellの特長を取り入れた新しいLisp。JVMバイトコード変換系。
ttp://clojure.org/

Qi: MLやHaskellの特長を取り入れた新しいLisp。型の定義にシーケント計算表記を用います。
ttp://www.lambdassociates.org/

GOO: DylanとSchemeの影響を受け、OOPをサポートした新しいLisp。
ttp://people.csail.mit.edu/jrb/goo/

Liskell: Lispの顔をしたHaskell。
ttp://liskell.org/

17 :デフォルトの名無しさん:2009/01/14(水) 00:18:10
□イベント関連□

Shibuya.lisp
ttp://shibuya.lisp-users.org/
東京地区、特に渋谷周辺半径2万キロの Lisp 系プログラマによる非営利団体。
第1回テクニカルトークは2008年10月18日に開催されました。

GaucheNight (2008-03-08)
ttp://practical-scheme.net/wiliki/wiliki.cgi?gauche.night
「SchemeとGaucheとλとS式を愛するすべての人に贈るマクロな一夜」
出演:川合史朗、伊藤篤、山下伸夫、笹田耕一、ひげぽん、zick、
   黒田寿男、えんどうやすゆき、ほか

GaucheNight (2007-05-09)
ttp://practical-scheme.net/wiliki/wiliki.cgi?GaucheNight%3a2007
出演:川合史朗、黒田寿男、まつもとゆきひろ(Skype中継)、小飼弾、
   伊東勝利、久井亨、小黒直樹、ほか

黒田寿男氏関係 (黒板の人)
ttp://pc10.2ch.net/test/read.cgi/tech/1151025773/901-909
ttp://www.bookshelf.jp/2ch/tech/1151025773.html#901
Schemeのマクロに関する黒田氏の所感
ttp://cl-www.msi.co.jp/solutions/knowledge/lisp-world/articles/scheme
それに対する川合史朗氏の応答
ttp://practical-scheme.net/wiliki/wiliki.cgi?Scheme%3a%e3%83%9e%e3%82%af%e3%83%ad%3aCommonLisp%e3%81%a8%e3%81%ae%e6%af%94%e8%bc%83
それに対する黒田氏の再反論
ttp://cl-www.msi.co.jp/solutions/knowledge/lisp-world/articles/gauche-night
それに対する川合氏の応答
ttp://practical-scheme.net/wiliki/wiliki.cgi?Scheme%3a%e3%83%9e%e3%82%af%e3%83%ad%3aCommonLisp%e3%81%a8%e3%81%ae%e6%af%94%e8%bc%83%3a%e6%84%8f%e5%91%b3%e8%ab%96

その他、黒田氏によるLisp関連のエッセイがこちらで読めます。
ttp://cl-www.msi.co.jp/solutions/knowledge/lisp-world/

18 :デフォルトの名無しさん:2009/01/14(水) 00:20:33
□2ch上にあるLisp関連のスレ□

(make-thread :name common-lisp :part 5)
ttp://pc11.2ch.net/test/read.cgi/tech/1215834213/
Emacs Lisp 3
ttp://pc11.2ch.net/test/read.cgi/tech/1191875993/
【魔法】リリカル☆Lisp【言語】
ttp://pc11.2ch.net/test/read.cgi/tech/1183396621/
【SICP】計算機プログラムの構造と解釈 Part2
ttp://pc11.2ch.net/test/read.cgi/tech/1203096230/
【普通のやつらの】 Arc Language 0 【上を行け】
ttp://pc11.2ch.net/test/read.cgi/tech/1202098949/
【CGI】実用比較Lisp vs C/C++【GUI】
ttp://pc11.2ch.net/test/read.cgi/tech/1150501484/
【ヤパーリ】XMLをS式に置換えていくスレ【LISP最強】
ttp://pc11.2ch.net/test/read.cgi/tech/1140006937/
Lisp@UNIX版
ttp://pc11.2ch.net/test/read.cgi/unix/1019926525/
Lisperこそ真のプログラマーよ!!
ttp://pc11.2ch.net/test/read.cgi/prog/1175791979/
LISPってさ〜
ttp://science6.2ch.net/test/read.cgi/sim/1015169050/
【数式処理システム】 Maxima 【Common Lisp】
ttp://science6.2ch.net/test/read.cgi/math/1220340695/

19 :デフォルトの名無しさん:2009/01/14(水) 00:22:31
テンプレ長いよ! 連投規制に二回も引っ掛かったよ!

>>3
諦めんなよ!

>>8 >>15
お前らも手伝えよ!

20 :デフォルトの名無しさん:2009/01/14(水) 00:36:46
これは乙じゃなくてλなんだからね

21 :デフォルトの名無しさん:2009/01/14(水) 00:55:07
乙です

22 :デフォルトの名無しさん:2009/01/14(水) 01:00:04
>>1
っT

23 :デフォルトの名無しさん:2009/01/14(水) 01:37:21
1乙

Little終わったので萩谷先生の関数プログラミング買った。
3月まではこれとものまね鳥読む。

24 :デフォルトの名無しさん:2009/01/14(水) 04:37:00
てんぷら増えすぎじゃないか?
毎回20レス近く潰れるのは無駄な気がする
どうせ雑談しかしてないし、こんな長いと読まないっしょ
仕様書程度でいいんじゃないか


25 :デフォルトの名無しさん:2009/01/14(水) 04:47:45
つまり
Common Lisp→EuLisp
R6RS→R5RS
ですね 乙と違うんだからね

26 :デフォルトの名無しさん:2009/01/14(水) 05:00:33
>>24
「仕方ない。代わりに貼るか→この分量マジすか」
というコンボを喰らった身としては、同意せざるを得ない。

細かい内容は、テンプレ置き場でまとめれば良いと思う。

27 :デフォルトの名無しさん:2009/01/14(水) 06:12:57
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ まピョーん☆
 彡、   |∪|  /
/ __  ヽノ /
(___)   


28 :デフォルトの名無しさん:2009/01/14(水) 06:49:51
なんだお前?やるんか?
くらえ!つ nil

29 :デフォルトの名無しさん:2009/01/14(水) 11:03:20
テンプレ置き場ってないし。

WiLikiあたり借りる?

30 :デフォルトの名無しさん:2009/01/14(水) 11:21:19
>>29
>>2

31 :デフォルトの名無しさん:2009/01/15(木) 00:50:24
テンプレが役に立ってないことがよくわかる。

32 :デフォルトの名無しさん:2009/01/15(木) 07:52:33
>>30 の役には立っている。

33 :デフォルトの名無しさん:2009/01/15(木) 08:45:23
on lisp読み終わったんだが
次はpractical common lisp読んだらいいのかな

schemeの対応する本はないのかな

34 :デフォルトの名無しさん:2009/01/15(木) 09:04:48
SICP

35 :デフォルトの名無しさん:2009/01/15(木) 10:10:36
>>34
昔、飛ばし読みしちゃったので
今度は問題やりながら読んできます

36 :デフォルトの名無しさん:2009/01/15(木) 17:23:59
http://cheese.2ch.net/math/kako/1000/10001/1000107761.html
★100!と1000!の桁数の出し方★

http://codepad.org/lbITOona

37 :デフォルトの名無しさん:2009/01/15(木) 22:59:45
>>36
このほうがいい。10000!の桁数も楽々

(define (place-of n)
(+ 1 (inexact->exact (floor (* 0.4342944819032518 (log n))))))

http://codepad.org/8evfGr7x

38 :デフォルトの名無しさん:2009/01/16(金) 19:14:11
関数のアーギュメントの順番ってこうするのがいいって習慣みたいなのはないの?


(setf 出力 入力)
(with-open-file 変数 ファイル)

だと、出力 入力の順番なのかな?


この辺の例をみてると
http://www.geocities.jp/m_hiroi/xyzzy_lisp/abclisp11.html

(fun 主要なもの 補助的なもの さらに補助的なもの...)

と定義してるようにも見えるんだけど 








39 :デフォルトの名無しさん:2009/01/16(金) 23:10:26
その辺は場合にもよるから一般化はできないね。
反例は例えば with-input-from-string は入力が先だし。
まぁ、主要なもの、対象とするものが前のほう、くらいだろうね。


40 :デフォルトの名無しさん:2009/01/16(金) 23:53:23
http://jibun.atmarkit.co.jp/ljibun01/rensai/genius/03/01.html
誰も言及しないのは何故。

41 :デフォルトの名無しさん:2009/01/17(土) 01:26:16
既にCyanスレで見たから。

42 :デフォルトの名無しさん:2009/01/17(土) 01:40:01
そんなのもあるんだ

43 :デフォルトの名無しさん:2009/01/17(土) 01:40:49
クラスのないオブジェクト指向とかS式のないマクロとかは面白いね
大前提をぶっ壊すところが

44 :デフォルトの名無しさん:2009/01/17(土) 03:00:46
>>43
S式の無いマクロならDylanがあるし、
プロトタイプベースのOOPならSelfとかがあるじゃん。

むしろ、そういう引用元の概念を、あの歳できっちり理解してるのが末恐ろしいよ。

45 :デフォルトの名無しさん:2009/01/17(土) 04:16:34
5つの自然言語ならよかったのになあ

46 :デフォルトの名無しさん:2009/01/17(土) 15:28:41
高速で使えるライブラリのそろったCyan実装が登場したら
Ruby以上に世界中のハッカーにインパクトを与えそう。

47 :デフォルトの名無しさん:2009/01/17(土) 16:11:52
>>40
ニュータイプって感じだね。

48 :デフォルトの名無しさん:2009/01/17(土) 20:20:32
私は信じんよ、ニュータイプの存在など

49 :デフォルトの名無しさん:2009/01/17(土) 21:30:31
既存のpythonのlibraryが使えてマクロありなら便利かもね

50 :デフォルトの名無しさん:2009/01/17(土) 23:55:38
現状だと荒削りだし、そりゃ言い杉なんじゃないかな。将来は楽しみだけど。
素直に理論面とかハードウェアの知識を学んでいったら楽しみだね。
まだだ、まだ終わらんよ!とか言わされちゃうのかなー

51 :デフォルトの名無しさん:2009/01/18(日) 00:14:09
本人乙www

52 :デフォルトの名無しさん:2009/01/18(日) 01:22:19
クワトロ・バジーナ降臨ときいてすっ飛んできました。
アクシズ落とさないでね。

53 :デフォルトの名無しさん:2009/01/18(日) 09:45:33
wikipediaのclikiのリンクが古いままだ

54 :デフォルトの名無しさん:2009/01/18(日) 12:38:12
>>53
なんのための「Wiki」pediaだよ

55 :デフォルトの名無しさん:2009/01/18(日) 12:59:52
>>53,54
直しておきますた ノシ

56 :デフォルトの名無しさん:2009/01/18(日) 18:08:54
>>37
goshだとexactな数値のlogがとれなかった

57 :デフォルトの名無しさん:2009/01/18(日) 22:18:02
>>56
他の処理系みた?
Gaucheで数値計算するから・・・

58 :デフォルトの名無しさん:2009/01/18(日) 23:06:53
>>56
普通にとれるだろ
gosh> (log 1000)
6.907755278982137
gosh> (log 10000)
9.210340371976184
gosh> (log 100000)
11.512925464970229
gosh> (* 0.4342944819032518 (log 1000))
3.0
gosh> (* 0.4342944819032518 (log 10000))
4.0
gosh> (* 0.4342944819032518 (log 100000))
5.0

59 :デフォルトの名無しさん:2009/01/18(日) 23:13:57
gosh> (* 0.4342944819032518 (log 3628800))
6.559763032876794
gosh> (* 0.4342944819032518 (log 93326215443944152681699238856266700490715968264
38162146859296389521759999322991560894146397615651828625369792082722375825118521
0916864000000000000000000000000))
157.97000365471578

60 :デフォルトの名無しさん:2009/01/18(日) 23:17:51
gosh> (log 402387260077093773543702433923003985719374864210714632543799910429938
51239862902059204420848696940480047998861019719605863166687299480855890132382966
99445909974245040870737599188236277271887325197795059509952761208749754624970436
01418278094646496291056393887437886487337119181045825783647849977012476632889835
95573543251318532395846307555740911426241747434934755342864657661166779739666882
02912073791438537195882498081268678383745597317461360853795345242215865932019280
90878297308431392844403281231558611036976801357304216168747609675871348312025478
58932076716913244842623613141250878020800026168315102734182797770478463586817016
43650241536913982812648102130927612448963599287051149649754199093422215668325720
80821333186116811553615836546984046708975602900950537616475847728421889679646244
94516076535340819890138544248798495995331910172335555660213945039973628075013783
76153071277619268490343526252000158885351473316117021039681759215109077880193931
78114194545257223865541461062892187960223838971476088506276862967146674697562911
23408243920816015378088989396451826324367161676217916890977991190375403127462228
99880051954444142820121873617459926429565817466283029555702990243241531816172104
65832036786906117260158783520751516284225540265170483304226143974286933061690897

61 :デフォルトの名無しさん:2009/01/18(日) 23:18:15
96848259012545832716822645806652676995865268227280707578139185817888965220816434
83448259932660433676601769996128318607883861502794659551311565520360939881806121
38558600301435694527224206344631797460594682573103790084024432438465657245014402
82188525247093519062092902313649327349756551395872055965422874977401141334696271
54228458623773875382304838656889764619273838149001407673104466402598994902222217
65904339901886018566526485061799702356193897017860040811889729918311021171229845
90164192106888438712185564612496079872290851929681937238864261483965738229112312
50241866493531439701374285319266498753372189406942814341185201580141233448280150
51399694290153483077644569099073152433278288269864602789864321139083506217095002
59738986355427719674282224875758676575234422020757363056949882508796892816275384
88633969099598262809561214509948717012445164612603790293091208890869420285106401
82154399457156805941872748998094254742173582401063677404595741785160829230135358
08184009699637252423056085590370062427124341690900415369010593398383577793941097
00277534720000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000)
+inf.0

62 :デフォルトの名無しさん:2009/01/18(日) 23:21:43
(log (fact 1000))が計算できないのはGaucheの事情。
http://practical-scheme.net/wiliki/wiliki.cgi?Gauche%3A%E6%95%B0%E5%80%A4%E3%81%AE%E5%85%A5%E5%87%BA%E5%8A%9B

63 :デフォルトの名無しさん:2009/01/18(日) 23:25:55
http://practical-scheme.net/wiliki/wiliki.cgi?Gauche%3A%E7%B5%84%E3%81%BF%E8%BE%BC%E3%81%BF%E9%96%A2%E6%95%B0%E3%81%AE%E5%86%8D%E5%AE%9A%E7%BE%A9

64 :デフォルトの名無しさん:2009/01/18(日) 23:34:44
一般的なlog10の計算の注意点
http://codepad.org/MjooyHH4

65 :デフォルトの名無しさん:2009/01/19(月) 11:15:03
on lispの原著が34000円もするなんて・・・
最後のいくつかの章で図がみえないから欲しかったのに

66 :デフォルトの名無しさん:2009/01/19(月) 17:18:17
何千ページの本なの?

67 :デフォルトの名無しさん:2009/01/19(月) 20:55:42
http://www.paulgraham.com/onlisp.html
>> 65 ここから落とせない? 著者公開してるけど.

68 :デフォルトの名無しさん:2009/01/19(月) 21:32:16
>>67
そこのは、例えばFigure 24.1
が見えないよ。他にも見えない図がいくつかあった

69 :デフォルトの名無しさん:2009/01/19(月) 21:38:09
on lisp $13 しかし日本への送料が4000円
http://www.lulu.com/content/3060872

こっちから買うかな
何冊かまとめ買いすれば送料安くなんないかな

70 :デフォルトの名無しさん:2009/01/19(月) 22:35:33
日本語訳の本に載ってないって事?

71 :デフォルトの名無しさん:2009/01/20(火) 00:18:36
ttp://www.amazon.co.jp/dp/0130305529/
ttp://www.amazon.com/dp/0130305529/
高いな

72 :デフォルトの名無しさん:2009/01/20(火) 22:57:56
Head First Common Lispはまだか。

73 :デフォルトの名無しさん:2009/01/22(木) 03:10:07
たぶん一生でないよw

74 :デフォルトの名無しさん:2009/01/22(木) 13:05:51
主婦の友増刊号「誰にもわかるコモンリスプ」

75 :デフォルトの名無しさん:2009/01/22(木) 14:23:07
片仮名で書くとめちゃくちゃイメージ違うなぁ。

76 :デフォルトの名無しさん:2009/01/22(木) 16:32:13
フランス語みたい。

イロムサコン・フィヨンセ・コモンリスプ

77 :デフォルトの名無しさん:2009/01/23(金) 01:35:12
特別寄稿ガイ・スチール・ジュニア氏
「君もリスプやらないか?」

78 :デフォルトの名無しさん:2009/01/23(金) 02:00:30
「いいこと思いついた。
お前、俺のテイルジャンプで、メッセージパッシングしろ」

79 :デフォルトの名無しさん:2009/01/23(金) 17:50:52
「アッーーク!」

80 :デフォルトの名無しさん:2009/01/23(金) 21:18:38
アンジー・コモン・リスプ

81 :デフォルトの名無しさん:2009/01/23(金) 23:24:26
微妙にワロタ

82 :デフォルトの名無しさん:2009/01/25(日) 02:43:49
GaucheにIDE付けれの人まだ張り付いてるのか

83 :デフォルトの名無しさん:2009/01/25(日) 03:26:34
Lisp 系言語だと emacs か vi しか選択肢が無いのは事実だけど、
あらたに統合環境を用意する積極的な理由ってのも無いんだよなー。

欲しいのはデバッガみたいだけど、
仮にデバッガが便利だとしても Scheme にふさわしいデバッガのモデル
は過去事例を研究したところで容易に決められるとは思わんのだよなー。

これだけ長い Lisp の歴史の中でいわゆる「デバッガ」が言及された
ことがそんなにないってのはただの偶然だとでも思ってんだろうか。

84 :デフォルトの名無しさん:2009/01/25(日) 06:25:23
pltはそのへんがんばってるんじゃないの

85 :デフォルトの名無しさん:2009/01/25(日) 06:30:20
なんでlispは歴史的にデバッガが言及されないの?

86 :デフォルトの名無しさん:2009/01/25(日) 08:36:47
>>85
文脈嫁。

>>83 は、GCを考案し、動的言語の先駆けとなったLisp に、デバッガの話が持ち上がらなかったのは、Lispにデバッガが不要だから、と云いたいんだろ。

87 :デフォルトの名無しさん:2009/01/25(日) 08:47:36
>>83は、これだけ長い Lisp (スレ)の歴史の中で、と言いたかったんだよ。

88 :デフォルトの名無しさん:2009/01/25(日) 09:10:02
>>83
Schemeの話をLisp系と一般化しないでくれ。Emacs Lispのデバッガはなかなかいい、
CL系は昔から規格に最適化オプションで debug 指定ができたりと、デバッガは
売りにしてたよ。SchemeでもPLTやGuileはがんばってるじゃん。

89 :デフォルトの名無しさん:2009/01/25(日) 09:43:29
DebuggerのないLisp machineなど存在しない。
もともとsmalltalk実装のモデルになったような
統合プログラミング環境を持っていたのがLisp。
今はむしろLLみたいな軽い環境が流行りで、
外界とのインターフェースは昔より豊か。

90 :デフォルトの名無しさん:2009/01/25(日) 16:54:11
eclipseあたりに自力で作ってみたらいいのに

91 :デフォルトの名無しさん:2009/01/25(日) 17:19:03
調べるのめんどくさいんでここで聞きますがscheme ってバイトコードはけるの

92 :デフォルトの名無しさん:2009/01/25(日) 17:42:27
>>91
Kawa, JSchemeでググレカス

93 :デフォルトの名無しさん:2009/01/25(日) 18:42:50
>>89
Smalltalkより前にIDEを持っていたLispってどんなLispだよw

94 :デフォルトの名無しさん:2009/01/25(日) 18:46:35
つ ttp://ja.wikipedia.org/wiki/Interlisp

95 :デフォルトの名無しさん:2009/01/25(日) 19:05:55
まったく関係ないがh抜き不便

96 :デフォルトの名無しさん:2009/01/25(日) 19:15:49
アセンブラ使え

97 :デフォルトの名無しさん:2009/01/25(日) 19:23:10
>>93
TECO+MacLisp
後継のEmacsがSmalltalk-76と同時期。

98 :デフォルトの名無しさん:2009/01/25(日) 21:57:10
超古代文明の発掘みたいな。
断絶があるのはなぜだろう。

99 :デフォルトの名無しさん:2009/01/25(日) 21:58:24
車輪の再発明と言ってだな、

100 :デフォルトの名無しさん:2009/01/26(月) 00:28:22
>>82
別にどんな主張をしようが構わないが、
「デバッガ」っていう重要なカテゴリ以下を私物化してるのがちょっと……。
あれのどこがGaucheのデバッガの話なのよ?

何で、自分のページとか作って、そこでやらないんだろうね?

101 :デフォルトの名無しさん:2009/01/26(月) 11:20:53
まあWiLilki的にひどすぎるということになれば管理者のShiroさんが強権発動するでしょ

102 :デフォルトの名無しさん:2009/01/27(火) 13:43:07
俺はffiの項目を私物化したいぞおお
ジョジョオ〜

103 :デフォルトの名無しさん:2009/01/27(火) 21:30:00
継続渡しマクロなんて作るぐらいなら
common lispの上にscheme作っちゃえばいいのに

104 :デフォルトの名無しさん:2009/01/27(火) 23:30:15
みんながACL使えばみんなが幸せ

105 :デフォルトの名無しさん:2009/01/27(火) 23:39:46
もっとお手頃価格でACL売ってくれ。
俺も使うから。

106 :デフォルトの名無しさん:2009/01/28(水) 02:43:48
一方、ロシアのSchemerは黒板を使った。

107 :デフォルトの名無しさん:2009/01/28(水) 03:34:23
>一方、ロシアのSchemerは黒板を使った。
作らないところが寂しいよな

>もっとお手頃価格でACL売ってくれ。
なんであんなに高いんだろうね?
年間売り上げみてみたいよ。


株主になっても一票そこに投じられそうもないのが悲しいやね

108 :デフォルトの名無しさん:2009/01/28(水) 13:46:02
ロシアのLisp事情ってどんな感じなんだろう。
あそこは数学も物理も凄いんでしょ?

109 :デフォルトの名無しさん:2009/01/28(水) 14:21:33
行って確かめてこいよ

110 :デフォルトの名無しさん:2009/01/28(水) 16:10:27
ロシアは遠いし言葉がわからないから
かわりにロシアンパブ行ってきます。

111 :デフォルトの名無しさん:2009/01/28(水) 21:13:51
ttp://sourceforge.jp/magazine/09/01/27/0039208

あとまあ、これもある意味予想通りではあるが、LispやScheme、Haskellと言ったあたりは、
結局のところ「語られる」言語であって、「使われる」言語ではないようだ。
HaskellにしろCommon Lispにしろ、近年ではライブラリも相当揃ってきており、
パフォーマンスの面から言っても実用言語として遜色ないものになりつつあるので、個人的には残念なのだが。

112 :デフォルトの名無しさん:2009/01/28(水) 21:22:15
Emacs Lispも仲間に入れてほしいんですけど。

113 :デフォルトの名無しさん:2009/01/28(水) 21:52:50
だが断る

114 :デフォルトの名無しさん:2009/01/28(水) 22:17:45
各個人の問題として何故使わないのか。

115 :デフォルトの名無しさん:2009/01/28(水) 22:35:50
先週新聞に載ってたセンター試験の数学UAをやってみたんだけど
21世紀になって10年たとうというのにひどいBASICのプログラムが載ってたんだわ
高校生に勉強させるなら
COMETでもMIPSでもいいからアセンブラでやらせるか
BFで難易度高めにするか
LispやHaskelやForthで教養を身につけさせるかすればいいのに
あるいはスパコンのためにFortranを教えるか


116 :デフォルトの名無しさん:2009/01/28(水) 22:50:30
>>114
次々と新たな処理系が開発されるのは、既にある処理系を使いたくないのかもな。
勉強のためだとしても、なんで人のソースを読むことより自分で書くことを選ぶのか。
それが問題だと思うよ。

117 :デフォルトの名無しさん:2009/01/28(水) 22:52:42
IT音痴大国の名に恥じないな。

118 :デフォルトの名無しさん:2009/01/28(水) 22:58:36
Lispはラテン語ではない。と誰かが言ったとか言わないとか。

119 :デフォルトの名無しさん:2009/01/29(木) 20:26:19
むしろラテン語だろ

120 :デフォルトの名無しさん:2009/01/29(木) 22:59:04
まあもう少し待ってれば予想外の変化が起きるかもよ

121 :デフォルトの名無しさん:2009/01/29(木) 23:03:38
Lisp/Scheme類は法律で禁止され、地下で開発するしかないのだ。

122 :デフォルトの名無しさん:2009/01/30(金) 00:02:26
>>115
あれはなんの冗談なんだろうと思ったな。
釣りじゃないのか、とか日付を確認したりとか。
徐々にその事実が恐ろしくなっていった。

>LispやHaskelやForthで教養を身につけさせるかすればいいのに
お前は俺かw


123 :デフォルトの名無しさん:2009/01/30(金) 00:06:09
BFで難易度をってところにワロタ

124 :デフォルトの名無しさん:2009/01/30(金) 06:22:02
http://d.hatena.ne.jp/niitsuma/20080209/1233260146

125 :デフォルトの名無しさん:2009/01/31(土) 00:58:37
Lisperだけで会社作ったら、経営していけるかな。

126 :デフォルトの名無しさん:2009/01/31(土) 01:03:15
http://codepad.org/7ozb95V2

127 :デフォルトの名無しさん:2009/01/31(土) 05:02:34
漢詩って何かいいね。


128 :デフォルトの名無しさん:2009/01/31(土) 05:15:40
情景が目に浮かぶようだね。霜ってのがまた良いな。

……ところで、ここ何のスレだっけ?

129 :デフォルトの名無しさん:2009/01/31(土) 15:23:31
comp.lang.lispに何度か書き込みしてるはずなのに反映されない
なんでだろ

130 :デフォルトの名無しさん:2009/01/31(土) 16:48:38
ネットニュースだから配送の問題とか?

131 :デフォルトの名無しさん:2009/02/01(日) 13:40:24
http://quasiquote.org/log2/Scheme/Gauche/Gauche-lazy-ffi
をconfigure make make installしてから

gosh> (use lazy-ffi)
*** ERROR: Compile Error: failed to link "lazy-ffi" dynamically: /usr/lib/gauche/site/0.8.12/i486-pc-linux-gnu/lazy-ffi.so: undefined symbol: strlcpy
"(stdin)":2:(use lazy-ffi)

Stack Trace:
_______________________________________
gosh>


何が問題なのでしょうか

132 :デフォルトの名無しさん:2009/02/01(日) 13:44:27
だからここはサポート掲示板じゃねえっつーの
またどうせバージョン違うんだろ

133 :デフォルトの名無しさん:2009/02/01(日) 14:06:25
>>131
glibcにOpenBSD由来のstrlcpy(3)はありません。
http://www.openbsd.org/cgi-bin/cvsweb/src/lib/libc/string/
から持ってきてリンクしてください。
デストリによってはパッケージで提供されているかも知れませんが。


134 :デフォルトの名無しさん:2009/02/01(日) 14:12:09
やっぱlinuxってきもいなー

135 :デフォルトの名無しさん:2009/02/03(火) 04:35:42
gimp2.6.3(ほぼR5RS互換) のscript-fu で

(let ((foo 2)
(bar 3))
(display foo)
(display bar))
->23#t

これと同じ事がしたくて(返り値は無視して)
下のように書きましたが変数ではなく
文字列として扱われてしまいます。

(let ((foo 2)
(bar 3))
(mapcar (lambda (arg)
(display arg)) '(foo bar)))
->foobar(#t #t)

上に書いたlispと同じ動作にするにはどう書けば良いでしょうか?

136 :デフォルトの名無しさん:2009/02/03(火) 06:59:00
>>135
「'」(クォート)をつかわず、 (list foo bar) としたら良いのでは。
あるいは `(,foo ,bar) (先頭はバッククォートね)かな。

137 :デフォルトの名無しさん:2009/02/03(火) 09:54:45
letやmapcarが出てくるのにquoteが判らないとは
えらい偏った学び方したんだな
quoteはLISPの基礎

138 :デフォルトの名無しさん:2009/02/03(火) 13:39:03
>>137
偏ってない。変数とシンボルを混同するのはLISPの名物。
変数とimmutableな文字列なら、混同することはあまりないのだが。

最近思うんだが、LISPは動的スコープに戻したほうがいいんじゃないか?
変数は常に(eval シンボル)と等価で、関数は常にS式と等価。
静的スコープではこれが成立しない。

139 :デフォルトの名無しさん:2009/02/03(火) 14:13:37
'(1 2)と(list 1 2)の結果が同じだし、勘違いしちゃうことってあるよね

140 :デフォルトの名無しさん:2009/02/03(火) 16:24:19

'multiple-value-bindについてるクオートがよくわからない.


(defmacro mvbind (&rest args)
(let ((name 'multiple-value-bind))
`(,name ,@args)))


141 :デフォルトの名無しさん:2009/02/03(火) 17:07:30
これでうまくいった
(let ((foo 2)
(bar 3))
(mapcar (lambda (arg)
(display (eval arg))) '(foo bar)))

142 :デフォルトの名無しさん:2009/02/03(火) 17:31:30
>>138
かなり偏ってるね
混同するのが名物とか、変な偏見も持ってそうだが
多分>>140-141もお前じゃないか?
きちんとした処理系で基礎から勉強し直した方がいいと思うね


143 :デフォルトの名無しさん:2009/02/03(火) 18:38:40
>>136
そうだね。前スレ372-390でも話題になってたよね。
(list foo bar)
== (list `,foo `,bar)
== `(,foo ,bar)
quasiquoteの分配則では気をつけないとね。

144 :デフォルトの名無しさん:2009/02/03(火) 18:43:43
データとコードの違いは最初に叩き込まれると思っていたがそうでもないのか?

145 :デフォルトの名無しさん:2009/02/03(火) 18:48:15
>>139
>結果が同じだし

微妙な違いは理解してるのか?
同じ臭いがするんだよ>>138-141はよ。


146 :デフォルトの名無しさん:2009/02/03(火) 19:05:17
マクロの勉強でもしてみれ

147 :デフォルトの名無しさん:2009/02/03(火) 19:11:52
eval使って解決した気になれるとか、初心者の特権だねえ。

148 :デフォルトの名無しさん:2009/02/03(火) 19:15:57
>>135
それよりmapcarの使い所を間違えてないかね?
処理系変えるとうまく動かないかもよ。
quoteはちゃんと理解した方がいいよ。

>>140
どんだけ頓珍漢なことやってるのかって
最初は気付かないもんだよ。

149 :135:2009/02/03(火) 20:15:17
ありがとうございます。
もう一度 quote の部分を見直しましたが
まだいまいちわかっていないので
もう一度じっくり読んでみます。

>>148
mapcar の使い方を確認しようと
Revised5 Report on the Algorithmic Language Scheme
を見てみたところ mapcar は乗っていなかったので
map を使うことにしました。

150 :デフォルトの名無しさん:2009/02/03(火) 21:12:28
>>135は展開すると
'(foo bar)
== (list 'foo 'bar)
となる。
これと>>143を比べると違うことは明白。
(list 'foo 'bar)ではlistの要素はシンボルになっている。>>135
(list foo bar)ではlistの要素は変数になっている。>>136,>>143

151 :デフォルトの名無しさん:2009/02/03(火) 21:34:33
初心者ならそこまで気を回さなくてもいいかもしれないけど
(equal? '(foo bar) (list 'foo 'bar)) => #t
だけど
(eq? '(foo bar) (list 'foo 'bar)) => #f ; ほとんどの場合
quoteはquoteでlistとは別物(返り値も含めて、書き換え可能かどうか等も)
返ってくる値がequalなだけ

152 :デフォルトの名無しさん:2009/02/03(火) 23:03:12
それからR5RSのmapは返り値の順序は規定されているけど
評価順序は未規定
だから
(map display '(A B C)) => '(#<undef> #<undef #<undef>)
標準出力にはABC、ACB、BAC、BCA、CAB、CBAのいずれか
評価順序をリストの順通りにしたいのならfor-eachを使う
(for-each display '(A B C)) => #<undef>
標準出力には必ずABC
評価順序と戻り値のデータ構造内の順序の区別は
HaskelのIOモナドにもつながる
(たぶん)
R5RSでは関数の引数の評価順さえ未規定

153 :デフォルトの名無しさん:2009/02/03(火) 23:52:11
>>152
>>それからR5RSのmapは返り値の順序は規定されているけど
>>評価順序は未規定

うわ…これ今ごろ知ったよ、ありがとう。つかこの仕様で誰が得するんだろ。
慌てて調べたけど、Gauche は独自仕様で常にリスト内の順番どおり、なのね。
ちょっと安心。

154 :デフォルトの名無しさん:2009/02/04(水) 00:06:16
並列処理が楽になるとは聞いたな。

155 :デフォルトの名無しさん:2009/02/04(水) 12:25:14
少しActorも意識してるんだろうね。
各要素に並行にfがメッセージパッシングされて。

>>138
funarg問題の時代までタイムスリップかよ。



156 :デフォルトの名無しさん:2009/02/04(水) 13:04:44
funarg問題の例: compose
(lambda (f g) '(lambda (x) (f (g x))))

こうすればいいんじゃないの?
(lambda (f g) `(lambda (x) (,f (,g x))))

157 :デフォルトの名無しさん:2009/02/04(水) 22:50:12
quoteが嫌いな人はクロージャやsyntax-rulesを使う
quoteが大嫌いな人はPythonやRubyを使う
そんな気がする

158 :デフォルトの名無しさん:2009/02/05(木) 00:05:31
quasi-quoteの便利さは異常。
そんな嫌いになるなんて、これが本当のくぉーつ嫌いってやつか・・・

159 :デフォルトの名無しさん:2009/02/05(木) 00:51:16
昔のマクロにはバッククォートなんてなかったよな
ひたすらlistでS式をこさえてたっけw

160 :デフォルトの名無しさん:2009/02/05(木) 03:32:58
どんだけ昔の人だよ

161 :デフォルトの名無しさん:2009/02/05(木) 03:40:10
Lisp-85とかって言っても分からんだろうなw

162 :デフォルトの名無しさん:2009/02/05(木) 03:53:31
そんな最近かよ
とっくにバッククオートあるよw

163 :デフォルトの名無しさん:2009/02/05(木) 04:06:48
Lisp-85ってS-OSというZ-80のOS上で動く奴なんだが
fexpr形式やmacro形式はあってもバッククォートは無かったぞ

164 :デフォルトの名無しさん:2009/02/05(木) 08:52:25
Alan Bawden, "Quasiquotation in Lisp"によれば、

 現在とは少し記号法が違うが、1972年のConniverが現代的な
 quasi-quoteの起源。

 少なくとも1977年ごろのLisp machineには、現在使われているのと
 ほぼ同じquasi-quoteがあった。

ということらしい。

D. V. McDermott and G. J. Sussman, "The Conniver reference manual," 1972
ftp://publications.ai.mit.edu/ai-publications/0-499/AIM-259a.ps

Alan Bawden, "Quasiquotation in Lisp," 1999
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.5.2566



165 :デフォルトの名無しさん:2009/02/05(木) 10:11:52
'の逆はevalだと思ってた

166 :デフォルトの名無しさん:2009/02/05(木) 10:29:33
>>163
Z80には荷が重かったのでは
メモリどんだけ積んでたとか知らないけど
展開後は再帰関数のかたまりだし

167 :デフォルトの名無しさん:2009/02/05(木) 10:39:22
全然問題ない。

168 :デフォルトの名無しさん:2009/02/05(木) 10:57:09
あっそ
ならLisp-85作った人が入れ忘れたんだね

169 :デフォルトの名無しさん:2009/02/05(木) 11:05:52
quasi-quoteを効率を保ってきちんと実装するのは意外と難しい。
80年代になってもマクロと組み合わせた時の実装手法の論文があった。
アンチquasi-quote派というのが昔はいた。Common Lispで決着。

170 :デフォルトの名無しさん:2009/02/05(木) 11:51:35
Gauche WiLiLiのあんまり目立たないとこに自分の作ったパッケージ書き足す方法はないものだろうか

171 :デフォルトの名無しさん:2009/02/05(木) 16:28:07
>>156
その関数の引数f,gにシンボルxを引数として渡すと死ねる。


172 :デフォルトの名無しさん:2009/02/05(木) 18:05:14
やっぱり gensym が必要なんだね。

173 :デフォルトの名無しさん:2009/02/05(木) 18:47:23
関数名じゃなく、関数「値」を式に埋め込めばいい。
gosh> (define x (list + 1 2))
x
gosh> (define y (list '+ 1 2))
y
gosh> (define + -)
+
gosh> (+ 1 2)
-1
gosh> (eval x (current-module))
3
gosh> (eval y (current-module))
-1

174 :デフォルトの名無しさん:2009/02/05(木) 20:23:37
再帰関数だったら?

175 :デフォルトの名無しさん:2009/02/05(木) 21:49:55
そこまで行くとR5RSでも解決できてるかどうか怪しい
R6RSは再定義禁止だっけ

176 :デフォルトの名無しさん:2009/02/05(木) 21:59:07
R5RSの件は
(define f (letrec ((f ...)) f))
と書けば安全かも

177 :デフォルトの名無しさん:2009/02/06(金) 08:10:38
仕様に自由があるから面白い。

178 :デフォルトの名無しさん:2009/02/06(金) 16:01:07
>>173
で'の使い方わかった気がするけど
本格的に勉強するならどの本がいいのでしょうか?

179 :デフォルトの名無しさん:2009/02/06(金) 17:53:52
>>178
SICPがいいよ
マクロの話題は一切ないけど、マクロは遊ぶものであって勉強するものではない
それでもSICPがSchemeを使ってる理由を考えながら読めばおもしろいかもね

180 :デフォルトの名無しさん:2009/02/06(金) 18:39:03
俺はOnLispをお勧めする。

181 :デフォルトの名無しさん:2009/02/06(金) 19:54:30
ふつうにあのお魚の本でよくないか?

182 :デフォルトの名無しさん:2009/02/06(金) 20:48:41
処理系のソースで十分

183 :デフォルトの名無しさん:2009/02/06(金) 21:37:03
ttp://user.ecc.u-tokyo.ac.jp/~tt076524/onlispjhtml/
ほれ

184 :デフォルトの名無しさん:2009/02/06(金) 23:02:05
うわーっ!びっくりした
と避ける

185 :デフォルトの名無しさん:2009/02/07(土) 08:31:34
>>169
ふむふむ、勉強になります。
そういえば関係あるかわからないけど、 scheme じゃなくて elisp も、
Emacs19 のころは

`(foo ,bar)

とはかけなくて、

(` (foo (, bar)))

と書いていたような。

186 :デフォルトの名無しさん:2009/02/07(土) 13:41:36
関係ないけどチャイティンのLispでは'はシンボルで
(QUOTE X) == (' X)
って書いてたな

187 :デフォルトの名無しさん:2009/02/07(土) 14:53:09
(define (% num1 num2) (remainder num1 num2))
としてるんですが、関数に別名与えるもっと良い方法はありますか?

188 :デフォルトの名無しさん:2009/02/07(土) 15:21:52
引数の数が一致しているのなら
(define % remainder)

189 :デフォルトの名無しさん:2009/02/07(土) 17:06:46
それでいいんですね。
気づきませんでした。

ありがとうございます。

190 :デフォルトの名無しさん:2009/02/07(土) 19:07:14
指定のクロージャが束縛されているシンボルを探す方法ってありますか?

191 :デフォルトの名無しさん:2009/02/07(土) 20:08:34
処理系によってはあるかもしれないけどRnRSにはないんじゃないかなぁ。
CLにはあるかもしれませんけどSchemerだから知らないです。
シンボルのリストを引数に与えるのであれば
グローバル束縛されているクロージャをevalで取り出してeq?して調べられるけど
グローバル変数のリストはどうやって得ればいいかわかりません。
それにローカル束縛も含めるとなると不可能じゃないでしょうか。

192 :デフォルトの名無しさん:2009/02/07(土) 20:28:40
CL なら do-symbols で探せるんじゃないかと。

193 :デフォルトの名無しさん:2009/02/07(土) 22:01:31
Haskellとlispの得意不得意ってどんなところなのでしょうか?

194 :デフォルトの名無しさん:2009/02/07(土) 22:44:15
別に無いよ?

195 :デフォルトの名無しさん:2009/02/07(土) 22:53:19
>>193
特にないんじゃないの?
文字列を扱うとめちゃくちゃメモリ食うってのがHaskellの弱点かもしれんけど
今時のマシンだったら何の問題も無いし。



196 :デフォルトの名無しさん:2009/02/07(土) 22:56:48
Haskellとlispを戦わせたくてしょうがないらしい

197 :デフォルトの名無しさん:2009/02/07(土) 23:04:03
ムシキングか何かでやってください

198 :デフォルトの名無しさん:2009/02/07(土) 23:39:04
[Lisp] 攻撃:85 素早さ:94 防御:96 命中:68 運:32 HP:154
[Haskell] 攻撃:68 素早さ:55 防御:65 命中:52 運:31 HP:233

Lisp vs Haskell 戦闘開始!!
[Lisp]の攻撃 HIT [Haskell]は91のダメージを受けた。
[Haskell]の攻撃 HIT [Lisp]は11のダメージを受けた。
[Lisp]の攻撃 HIT [Haskell]は109のダメージを受けた。
[Haskell]の攻撃 HIT [Lisp]は0のダメージを受けた。
[Lisp]の攻撃 HIT [Haskell]は76のダメージを受けた。
[Lisp]が[Haskell]を倒しました(ラウンド数:3)。
魔法のMD5 - MD5バトル http://www.newspace21.com/mix/btl.php

199 :デフォルトの名無しさん:2009/02/07(土) 23:41:50
いちいち貼らなくていいよ

200 :デフォルトの名無しさん:2009/02/07(土) 23:49:28
>>193
Haskellは近くのコンビニにぬり絵が売ってます。
Lispはドンキホーテに行けばぬいぐるみが売っています。
>>193君はどちらが好きですか?

201 :デフォルトの名無しさん:2009/02/08(日) 00:02:40
外に出なくても済む方がいいです

202 :デフォルトの名無しさん:2009/02/08(日) 07:17:52
λ

203 :デフォルトの名無しさん:2009/02/08(日) 08:13:10
maximaの中に面白いのみっけた

(defun for-eval-then-quote (var)
`(list 'quote ,var))

(setq x 1)
(for-eval-then-quote x)
-> '1


204 :デフォルトの名無しさん:2009/02/08(日) 12:37:31
>>203
えーと、ほんとにそれを動かしたら'1になったのかい?
正しい結果は(list 'quote 1)になるのでは。
関数とマクロの評価はごっちゃにしないように。
この辺り何か思い違いしてると思うよ。
ちなみに'1を期待するなら関数の中身は`',var または(list 'quote var)

205 :デフォルトの名無しさん:2009/02/08(日) 13:23:49
>>204
間違えました
(eval (for-eval-then-quote x))
->'1

206 :デフォルトの名無しさん:2009/02/09(月) 01:08:08
loopマクロ勉強したのにiterateの方が使われてたり
言語の発展はゆるやかだ
とか言ってたのどこのどいつだ

207 :デフォルトの名無しさん:2009/02/09(月) 01:52:43
>>206
それ言語じゃなくてライブラリの発展だと思うんだが……。

208 :デフォルトの名無しさん:2009/02/09(月) 02:14:28
>>206
これ読め。
http://pc11.2ch.net/test/read.cgi/tech/1203096230/251

209 :デフォルトの名無しさん:2009/02/10(火) 12:06:52
[clojure] 攻撃:28 素早さ:67 防御:78 命中:87 運:55 HP:202
[Qi II] 攻撃:51 素早さ:21 防御:48 命中:69 運:23 HP:189

clojure vs Qi II 戦闘開始!!
[clojure]の攻撃 HIT [Qi II]は1のダメージを受けた。
[Qi II]の攻撃 HIT [clojure]は16のダメージを受けた。
[clojure]の攻撃 HIT [Qi II]は56のダメージを受けた。
[Qi II]の攻撃 HIT [clojure]は1のダメージを受けた。
[clojure]の攻撃 HIT [Qi II]は56のダメージを受けた。
[Qi II]の攻撃 HIT [clojure]は10のダメージを受けた。
[clojure]の攻撃 HIT [Qi II]は38のダメージを受けた。
[Qi II]の攻撃 HIT [clojure]は1のダメージを受けた。
[clojure]の攻撃 HIT [Qi II]は25のダメージを受けた。
[Qi II]の攻撃 HIT [clojure]は1のダメージを受けた。
[clojure]の攻撃 HIT [Qi II]は57のダメージを受けた。
[clojure]が[Qi II]を倒しました(ラウンド数:6)。
魔法のMD5 - MD5バトル http://www.newspace21.com/mix/btl.php

210 :デフォルトの名無しさん:2009/02/10(火) 13:48:31
kill

211 :デフォルトの名無しさん:2009/02/10(火) 15:30:33
連邦のモビルスーツは化け物か!?

212 :デフォルトの名無しさん:2009/02/11(水) 05:14:36
array->list 変換関数がみつからない
自分で書くものなの?
(array->list
#2a((1 2)(3 4)))
->((1 2)(3 4))

213 :デフォルトの名無しさん:2009/02/11(水) 23:55:21
>>自分で書くものなの?
R5RSには記述がないからそうだと思うけど,
それより#2a(...の2aって何?

214 :デフォルトの名無しさん:2009/02/12(木) 00:02:23
#2A(..)ってのはCommon Lispの二次元配列かな。
ARRAY (2)のリストになってほしいのか、リストのリストになってほしいのか。
まぁ、結論からいうと>>212ARRAY (2 2)はLISTと互換性がないからムリ。自分で書く。
ベクタとかなら (coerce #(1 2 3) 'list) で変換できる。

215 :デフォルトの名無しさん:2009/02/12(木) 03:21:33
lispに興味があるんですが、
いまからlispを勉強するならなんの書籍がお勧めですか?
SICPってのがお勧めっぽいんですが、MITで使われてるとなると・・・
読みこなせるかなー

216 :デフォルトの名無しさん:2009/02/12(木) 05:29:30
オンラインで読める無料の
・独習Scheme三週間 ttp://www.sampou.org/scheme/t-y-scheme/
・入門Scheme ttp://www4.ocn.ne.jp/~inukai/scheme_primer_j.html

書籍じゃないけど
・もうひとつのScheme ttp://www.shido.info/lisp/idx_scm.html
あたりを読んでから買えばいいんじゃないでしょうか。

217 :デフォルトの名無しさん:2009/02/12(木) 05:46:35
>>215
SICP読んでみて、自分に合いそうなら買うのがいいとおも。
http://mitpress.mit.edu/sicp/

218 :デフォルトの名無しさん:2009/02/12(木) 10:05:25
SICP日本語版はちょっと高い

219 :デフォルトの名無しさん:2009/02/12(木) 10:48:56
なんでいきなりSICPなんじゃーー

220 :デフォルトの名無しさん:2009/02/12(木) 11:11:47
「良い本だ」ってよくScheme関連のWEBに載ってるから。

221 :デフォルトの名無しさん:2009/02/12(木) 11:20:35
良い本には違いないけど、
SICPも買いたいなら、別の本と併読した方がいいと思う。
言語仕様書が日本語化されているからそれでいいか、
って人ならSICPだけで問題なし。

222 :デフォルトの名無しさん:2009/02/12(木) 12:06:25
maximaが使いたいだけだったので
on lispはじっくり読んだが
SICPは問題もやらずに流し読み

223 :デフォルトの名無しさん:2009/02/12(木) 20:13:48
SICP は Scheme の本というわけではない。
Scheme を使って解説してる本。

224 :デフォルトの名無しさん:2009/02/12(木) 20:19:01
>>223
え、そうなんですか?
自分はアルゴリズムの勉強のために買いました。

序盤の関数 f(x) の話とか、大学の数学が懐かしいです。

225 :デフォルトの名無しさん:2009/02/12(木) 20:22:09
SICPにアルゴリズムの話が出てないわけではないが、
SICPをやってもアルゴリズムを勉強したとは言えない。


226 :デフォルトの名無しさん:2009/02/12(木) 20:22:39
>>223
何を解説してるの? w

227 :デフォルトの名無しさん:2009/02/12(木) 20:28:22
>>226

っ人生

228 :デフォルトの名無しさん:2009/02/12(木) 20:36:31
>>226
本のタイトル

229 :デフォルトの名無しさん:2009/02/12(木) 20:44:04
>>226
降り続く雨
きしむ廊下
立ち止まる足音
遠のく意識

230 :デフォルトの名無しさん:2009/02/13(金) 01:35:07
SICP読んだら魔法使いになれますか?

231 :デフォルトの名無しさん:2009/02/13(金) 07:26:27
>>230
なれません。

232 :デフォルトの名無しさん:2009/02/13(金) 07:45:20
>>230
なれます。
就活に有利です。

233 :デフォルトの名無しさん:2009/02/13(金) 11:01:41
>>230
さあ、30歳になるまで貞操を守る作業に戻るんだ

234 :デフォルトの名無しさん:2009/02/13(金) 14:39:58
30歳を越えてるのですがSICPは読めますか?

235 :デフォルトの名無しさん:2009/02/13(金) 14:51:53
読めなかったら困ると思いますよ

236 :デフォルトの名無しさん:2009/02/13(金) 15:01:35
60歳とかでも読めるらしいですよ
読めなかったら数学勉強してから再挑戦しましょう

237 :デフォルトの名無しさん:2009/02/13(金) 19:19:40
30歳過ぎてもSICP読むと童貞になりますか?

238 :デフォルトの名無しさん:2009/02/13(金) 19:34:56
俺はSICPを読んで、背が10cm伸びたよ

239 :デフォルトの名無しさん:2009/02/13(金) 19:49:08
SICP読んで宝くじ当たったよ。


240 :デフォルトの名無しさん:2009/02/13(金) 19:50:51
もしかして訳者の和田さんってスーフリの和田さん?

241 :デフォルトの名無しさん:2009/02/13(金) 19:52:39
プログラマ50人に1人ぐらいはSICP読んでるよね。

242 :デフォルトの名無しさん:2009/02/13(金) 19:54:25
>>250
和田って俺のことだけど。

243 :デフォルトの名無しさん:2009/02/13(金) 20:28:13
SICP未読で許されるのは小学生までだよね!

244 :デフォルトの名無しさん:2009/02/13(金) 22:31:02
ちょっと待ってくれ。「人生に必要な知恵はぜんぶ幼稚園の砂場で学んだ」とあるように、幼稚園のうちに読んでおくべきものではないだろうか?

245 :デフォルトの名無しさん:2009/02/13(金) 22:34:17
なんてこったい/(^o^)\

246 :デフォルトの名無しさん:2009/02/13(金) 22:52:02
人生に必要な知恵はぜんぶサンドボックで学んだ。


247 :デフォルトの名無しさん:2009/02/13(金) 22:55:25
俺、人生に必要な知恵はぜんぶ死後の世界で学ぶんだ…

248 :デフォルトの名無しさん:2009/02/13(金) 23:02:42
次はアメンボに生まれてきたりして

249 :デフォルトの名無しさん:2009/02/13(金) 23:07:08
おれも人生に必要なことは幼稚園で一通り学んだ覚えがあるな

250 :デフォルトの名無しさん:2009/02/13(金) 23:14:11
>>249
ってことは、幼稚園で、チュー済ませたタイプか。

251 :デフォルトの名無しさん:2009/02/13(金) 23:45:23
登り棒オナニーなら幼稚園の時に覚えました

252 :デフォルトの名無しさん:2009/02/14(土) 00:48:59
SICP以外誇れるものはないのか

253 :デフォルトの名無しさん:2009/02/14(土) 00:54:55
essential of なんたらとかreasoned schemerとかもいいかも

254 :デフォルトの名無しさん:2009/02/14(土) 01:00:19
時代は宝石の名前の言語じゃね?

255 :デフォルトの名無しさん:2009/02/14(土) 01:05:57
党員の友人とMercuryを学んでいます。

256 :デフォルトの名無しさん:2009/02/14(土) 01:13:10
Perlのことですね、わかります

257 :デフォルトの名無しさん:2009/02/14(土) 01:27:06
あのバージョン6がすべった言語のことか

258 :デフォルトの名無しさん:2009/02/14(土) 01:28:03
>>255
それは金属であって宝石ではない(゚д゚)!

259 :デフォルトの名無しさん:2009/02/14(土) 01:28:14
真珠の綴りはPerlじゃないぞ・・・

260 :デフォルトの名無しさん:2009/02/14(土) 01:32:50
まぁなんにせよ変な宗教言語は使いたくないわなw

261 :デフォルトの名無しさん:2009/02/14(土) 05:43:57
()とか幼稚園じゃ習わなかった

262 :デフォルトの名無しさん:2009/02/14(土) 09:40:03
幼稚園の時、世の中はすべてnilだと習った。

263 :デフォルトの名無しさん:2009/02/14(土) 09:44:22
うちの幼稚園ではnil派と()派が闘争を繰り返していた。

264 :デフォルトの名無しさん:2009/02/14(土) 10:01:49
little schemerって幼稚園児でも理解できるように書かれたんだっけ

265 :デフォルトの名無しさん:2009/02/14(土) 11:41:33
誰が象のラムダ君役をするかで喧嘩になってみっちゃんが泣いた。

266 :デフォルトの名無しさん:2009/02/14(土) 11:43:25
ここは幼稚園で人生のすべてが再帰的だと悟ったみなさんが集まるスレですかね。

267 :デフォルトの名無しさん:2009/02/14(土) 11:45:16
継続渡しスタイルで幼稚園ドロップアウトした。

268 :デフォルトの名無しさん:2009/02/14(土) 12:36:37
ところで、
チョコはいくつもらえましたか

269 :デフォルトの名無しさん:2009/02/14(土) 12:38:38
カーチャンから一個、姉さんから一個

270 :デフォルトの名無しさん:2009/02/14(土) 12:44:26
(´;ω;`)

271 :デフォルトの名無しさん:2009/02/14(土) 12:46:02
ええい、FOR文でもらえた奴はいないのか!

272 :デフォルトの名無しさん:2009/02/14(土) 12:50:04
「末尾再帰!」と叫んで保母さんのスカートをめくったのはいい思い出

273 :デフォルトの名無しさん:2009/02/14(土) 13:14:52
Next Boston Lisp Meeting: Monday February 23th 2009 at 1800 at MIT 34-401B
http://fare.livejournal.com/139926.html

vyzo will talk about gerbil, a little language for distributedprogramming
using PLT-Scheme. Gerbil is a macro language that provides facilities
for actor-based distributed programs and transparent network simulation.

これおもしろそうね。



274 :デフォルトの名無しさん:2009/02/14(土) 18:38:38
Seasoned Schemer ってどうですか?

275 :デフォルトの名無しさん:2009/02/14(土) 18:39:22
Let Over the Lambda ってどうですか?

276 :デフォルトの名無しさん:2009/02/14(土) 22:52:52
海は死にますか?

277 :デフォルトの名無しさん:2009/02/14(土) 23:11:19
nilもそうですか?

278 :デフォルトの名無しさん:2009/02/14(土) 23:18:17
水曜どうですか?

279 :デフォルトの名無しさん:2009/02/15(日) 00:06:17
明日来てくれるかな?

280 :デフォルトの名無しさん:2009/02/15(日) 00:43:26
このスレのネタの応酬はハイレベル過ぎて

281 :デフォルトの名無しさん:2009/02/15(日) 00:50:07
終いますか〜?

282 :デフォルトの名無しさん:2009/02/15(日) 00:58:25
括弧の山を愛する連中の嗜好が平凡なわけがなかった・・・・

283 :デフォルトの名無しさん:2009/02/15(日) 01:02:23
別に愛してるわけじゃないけど、無いと不安になるというか不安定に感じる。

284 :デフォルトの名無しさん:2009/02/15(日) 01:44:31
十分平凡でないです!

285 :デフォルトの名無しさん:2009/02/15(日) 17:10:57
アイちゃんも冗談を言うようになったか。

286 :デフォルトの名無しさん:2009/02/15(日) 20:27:36
>>274
何が?
俺は好きだよ?

287 :デフォルトの名無しさん:2009/02/15(日) 23:07:40
hogehoge

288 :デフォルトの名無しさん:2009/02/15(日) 23:40:17
(hage? >287)

289 :デフォルトの名無しさん:2009/02/15(日) 23:54:06
一連の1行の糞レスをあぼーんするプログラムを作れ

290 :デフォルトの名無しさん:2009/02/15(日) 23:59:14
(waha >>288)

291 :あぼ〜ん:2009/02/16(月) 00:38:22
あぼ〜ん

292 :デフォルトの名無しさん:2009/02/16(月) 02:11:17
>>289
navi2chちょっといじればいいだけ

293 :デフォルトの名無しさん:2009/02/18(水) 03:08:12
iPhone/iPod touch用のLisp/Schemeを発見。次スレのテンプレに入れて。

http://www.turbozen.com/sourceCode/TinyLisp/
http://programming.nu/

294 :デフォルトの名無しさん:2009/02/18(水) 04:15:12
こういうlist が返ってくるときに
((1 2 3) (1 2 3) (1 2 3))

こういう処理にするにはどうすればできますか?
(map + '(1 2 3) '(1 2 3) '(1 2 3))

295 :デフォルトの名無しさん:2009/02/18(水) 04:25:47
(apply map (cons + list))

296 :デフォルトの名無しさん:2009/02/18(水) 04:36:47
>>295
ありがとうございます!

297 :デフォルトの名無しさん:2009/02/19(木) 10:24:17
>>293
wikiのテンプレに書き加えておいて。

298 :デフォルトの名無しさん:2009/02/20(金) 00:27:38
(setq list1 '((message "X") (message "Y")))
があったとして、list1 の各要素を順番に実行していく方法を教えてください。


299 :デフォルトの名無しさん:2009/02/20(金) 00:38:32
(eval (cons 'progn list1))
こういう話?
それともこんなのをお望み?
(mapcar #'(lambda (x) (apply (car x) (cdr x))) list1)

300 :デフォルトの名無しさん:2009/02/20(金) 00:44:13
(mapcar #'eval '((message "X") (message "Y")))
とかでもいいのか。

301 :デフォルトの名無しさん:2009/02/20(金) 01:01:05
仮定が分からないな。
messageというのが関数なのか?
(setf *func-hash* (make-hash-table))
(setf (gethash 'message *func-hash*) #'(lambda (x) (princ x)))
(setf list1 '((message "x") (message "y")))
(mapc #'(lambda(x)(funcall (gethash (car x) *func-hash*) (cadr x))) list1)
=> 以下が結果 maximaとかはこの手のことをやってるね。
xy
("x" "y")

302 :298:2009/02/20(金) 03:13:07
>>299
>(eval (cons 'progn list1))

すごいです。これでできました。
ありがとうございました。

303 :デフォルトの名無しさん:2009/02/20(金) 05:52:44
Scheme

(let ((list1 '((display "X") (display "Y"))))
 (map eval list1))
⇒XY(#<void> #<void>)

304 :デフォルトの名無しさん:2009/02/21(土) 01:33:52
(cons 1 '(2 3))
-> (1 2 3)

となりますが

(cons '(1 2) 3)
-> ((1 2) . 3)

になりますよね

今は (append '(1 2) '(3)) と書いてますが
(cons 1 '(2 3)) に比べて冗長だと感じます
もっと良い書き方はありますか?

305 :デフォルトの名無しさん:2009/02/21(土) 01:51:17
書き方というか、片方向リストの仕様だから

306 :デフォルトの名無しさん:2009/02/21(土) 03:11:26
(define (wahacons a b) (append a (list b)))
(wahacons '(1 2) 3)

307 :デフォルトの名無しさん:2009/02/21(土) 05:12:06
>>305
仕様ですか…。
>>306
関数を書いてしまえば良かったんですね
ありがとうございます

308 :デフォルトの名無しさん:2009/02/21(土) 06:25:59
>>307
quasiquoteは?

> (define x '(1 2))
x
> `(,x 3)
((1 2) 3)

309 :デフォルトの名無しさん:2009/02/21(土) 06:28:27
肝心な部分コピペし忘れとかどうなのよ、俺……orz

> `(,@x 3)
(1 2 3)

310 :デフォルトの名無しさん:2009/02/21(土) 23:02:45
Luaスレがschemeネタで盛り上がってるw

311 :デフォルトの名無しさん:2009/02/22(日) 00:35:49
ちょっと見てくルア

312 :デフォルトの名無しさん:2009/02/22(日) 01:21:09
見てきたけど、あんまり面白い流れでも無かった。
速いなら実装を参考にしよう、とか建設的な意見が出る訳でもなく、
単にSchemeイラネ、だし。

313 :デフォルトの名無しさん:2009/02/22(日) 04:20:15
括弧うぜえとか。

314 :デフォルトの名無しさん:2009/02/22(日) 09:18:44
Schemeは作るの簡単とか。

315 :デフォルトの名無しさん:2009/02/22(日) 09:36:45
>>312
Luaってのはどういう言語かもよく知らないんだが、
処理系は結構よくできているみたいで遅くはないよ。
http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&lang=all&box=1

316 :デフォルトの名無しさん:2009/02/22(日) 14:35:16
ypsilon軍団とgauche軍団どっちが多い?

317 :デフォルトの名無しさん:2009/02/22(日) 14:36:35
[gauche] 攻撃:52 素早さ:32 防御:27 命中:74 運:17 HP:258
[Ypsilon] 攻撃:88 素早さ:69 防御:92 命中:95 運:96 HP:144

gauche vs Ypsilon 戦闘開始!!
[Ypsilon]の攻撃 HIT [gauche]は154のダメージを受けた。
[gauche]の攻撃 HIT [Ypsilon]は1のダメージを受けた。
[Ypsilon]の攻撃 HIT [gauche]は173のダメージを受けた。
[Ypsilon]が[gauche]を倒しました(ラウンド数:2)。
魔法のMD5 - MD5バトル http://www.newspace21.com/mix/btl.php




318 :デフォルトの名無しさん:2009/02/22(日) 14:38:19
何という二番煎じ、お前は車輪の再発明でもしてろ

319 :デフォルトの名無しさん:2009/02/22(日) 20:43:41
車輪の再発明はハッカーの大好物

320 :デフォルトの名無しさん:2009/02/22(日) 21:09:19
>>315
遅くないのは知ってるけど、向こうの話題の発端がそういう話だった。

俺の場合、VCSのmonotoneで組み込まれてて知ったんだけど、
かなり評価高い言語だよね。Adobeとかも採用してるとか。

321 :デフォルトの名無しさん:2009/02/22(日) 21:14:55
Lispが早いとか

322 :デフォルトの名無しさん:2009/02/22(日) 22:30:29
CLでもSchemeでもいいので話題のHSPみたいに簡単にゲーム作れるソフトはありますか?

323 :デフォルトの名無しさん:2009/02/22(日) 22:38:44
>>322
CL/scheme はしらんが、どこぞのメーカは
ゲーム開発ベッドで専用 Lisp 使ってなかったっけ?


324 :デフォルトの名無しさん:2009/02/22(日) 22:56:50
>>322
LispやSchemeをゲーム制作に生かしている企業とかはあるみたいだけど、
誰でも分かり易いライブラリだの、特化した処理系だのはないんじゃない?
一応、SDLとかOpenGLとか使ってゲーム作るのは、大抵の処理系で出来ると思うけど。

というか、HSPが話題っていつの話だ。

325 :デフォルトの名無しさん:2009/02/22(日) 23:41:31
>>323
これね。
http://en.wikipedia.org/wiki/Game_Oriented_Assembly_Lisp

326 :デフォルトの名無しさん:2009/02/23(月) 02:25:21
LuaとかSquirrelは遅かったらC++に書き直せばいいだけだからな

327 :デフォルトの名無しさん:2009/02/23(月) 02:48:48
Lisp/Schemeも同じことができると思うんだが……。

328 :デフォルトの名無しさん:2009/02/23(月) 03:01:43
書き直す際に
実装が多いのが弱点ではないかと。


329 :デフォルトの名無しさん:2009/02/23(月) 03:04:34
Squirrelは書き直すのが楽そうだ

330 :デフォルトの名無しさん:2009/02/23(月) 06:21:26
StalinならCより速くなることもあるんじゃなかったっけ?


331 :デフォルトの名無しさん:2009/02/23(月) 09:01:55
Stalinって実際どんな感じ?

332 :デフォルトの名無しさん:2009/02/23(月) 09:49:25
StalinってCを出力するんでしょ?
Cより速くなる事は無いと思うけど…
Cで「人間が」書くより速くなる事ならあるかもしれないけど

333 :デフォルトの名無しさん:2009/02/23(月) 10:13:08
stalin ... それは、かつてソ連で大量虐殺をおこなった恐怖の支配者。。。
だから
非人間的な行動(コード)だろ?人間が書くCのコードより速いってことじゃ?

334 :デフォルトの名無しさん:2009/02/23(月) 12:45:31
Stalinは、人間がかくCコードよりかなり早い場合も多い。
ただし、継続が使えないとか制限が多いし、コンパイル時間がめっちゃかかる。

>>332
> Cより速くなる事は無いと思うけど…
> Cで「人間が」書くより速くなる事ならあるかもしれないけど
こんなこというやつ初めて見た。

335 :デフォルトの名無しさん:2009/02/23(月) 13:00:30
そうか?理論値と実情を別に語るのは良くあると思うが。

336 :デフォルトの名無しさん:2009/02/23(月) 14:49:32
だって、人間が書いたものではないCを含めて 「C言語より速い」
を語るなら、それって実質的にCコンパイラの最適化の差に帰着するじゃん。

コンパイラによってはCから (ほぼ)最小のアセンブリを生成できることだってできるし、
そうすると何をもって「Cのソース」とするのかって話になって、
「Cのソースを吐くんだからCより速いはずがない」 っていう議論は空虚じゃない?

まぁ言い出しておいてアレだけどスレチだな。すまん

337 :デフォルトの名無しさん:2009/02/23(月) 15:49:25
Stalinの話は定期的にでてくるけど、流れとしては・・・

「同じ問題を解くのに俺様の書いたCよりXXにあるStalinのコードの方が速かった!」
「でも俺様のCのコードがヘボいことはありえない!そんなことは考えられない!」<- これが間違い
「Stalinはどんな魔法を使ってるんだ!スゲーよStalin!」

一部で盛り上がるけどスルーする人も多い。
同じ速度を出すのにStalinを使った方が簡潔に短時間で書けるというのはあると思う。
だからあれほどコンパイル時間がかかってもユーザーは気にしないんじゃないかな。



338 :デフォルトの名無しさん:2009/02/23(月) 17:31:09
まぁStalinはある種の一発モノだからな。
研究とか勉強の材料としてはすごいけど、プロダクションでは使えないから
盛り上がるのは一部にとどまる。

俺は盛り上がった派だけどw
最適化の解説の論文は勉強になった

339 :デフォルトの名無しさん:2009/02/23(月) 21:26:10
schemeのマクロを使って 
見た目から括弧を無くしていくことって出来ますか? 
例えば括弧のない1 + 2を3と評価するとか 
for リスト do 処理 done 
みたいな構文がmapの意味で動くようにしてみたい 


340 :デフォルトの名無しさん:2009/02/23(月) 21:34:29
>>339
まえにどっかでみたことがある。srfiなんとか だったと思う。

341 :デフォルトの名無しさん:2009/02/24(火) 01:17:57
SRFI 49のI-expressionsは、インデントで構文木を表す表記法であって、
マクロは関係なかった気がするんだけど、違ったっけ?

342 :デフォルトの名無しさん:2009/02/24(火) 06:02:54
SRFI 49: Indentation-sensitive syntax
http://srfi.schemers.org/srfi-49/srfi-49.html

最高にキモい Lisp コードを書いてみよう with 100 行リーダーマクロ
http://lispuser.net/memo/lisp/2006-03-30-23-58.html

343 :デフォルトの名無しさん:2009/02/24(火) 12:45:19
つ Standard Lispの記号モード

344 :デフォルトの名無しさん:2009/02/24(火) 15:44:53
>>339
「schemeのマクロを使って」も
マクロ使用を囲う括弧と、マクロ名さえあれば中置記法もできます。
ただしこの3つをなくするのはRnRSではできない。
処理系によってはリーダマクロをサポートしているのでそれを使うと可。

345 :デフォルトの名無しさん:2009/02/24(火) 20:11:25
なるほど、やはり出来ないのかー
リーダーマクロ、存在だけは知ってましたが
コンパクトでかっこいいSchemeで出来たらなぁって思いまして

昨日考えてたんですが、
Schemeには演算子の優先順位がないのが原因でしょうね
もし優先順位がつけば、括弧省略出来る
それはそれで、F#やらHaskellやらでみかける
パイプライン演算子みたいなのが定義出来たり、と夢が膨らむが
言葉に表せない大切な物が犠牲になってしまう気がします

>マクロ使用を囲う括弧と、マクロ名さえあれば中置記法もできます。
これ非常に興味あるんですが、どういうことでしょうか?

適当に試してはみたんですが、わかりません
(define-syntax plus
(syntax-rules ()
; ((x _ y) (+ x y))))
; ((x (_) y) (+ x y))))
; (((x _ y))(+ x y))))

Gaucheの拡張で優先順位を計算して括弧を省略ってページなら見つけましたが
そういった話でしょうか?


346 :デフォルトの名無しさん:2009/02/24(火) 20:42:16
こういうことじゃないの
(define-syntax calc
(syntax-rules (+ -)
((_ a + . rest) (+ a (calc . rest)))
((_ a - . rest) (- a (calc . rest)))
((_ a) a)
)
)
> (calc 1 + 10 - 5)
5

347 :デフォルトの名無しさん:2009/02/24(火) 20:44:04
5かよ

348 :デフォルトの名無しさん:2009/02/24(火) 20:44:55
> Schemeには演算子の優先順位がないのが原因でしょうね
> >マクロ使用を囲う括弧と、マクロ名さえあれば中置記法もできます。
> これ非常に興味あるんですが、どういうことでしょうか?
そうゆう reader を作ればいいじゃね?
作るだけだったら誰でも作れると思うし…


349 :デフォルトの名無しさん:2009/02/24(火) 20:45:29
>>345
俺は344じゃないけど、344の言ってることは違う。

344が言ってるのは、「一番その側のカッコがあれば」 ということ。
いちばん外側のカッコは、どう頑張ってもRnRSでは省略不可能。
しかし、一番外側のカッコとマクロ名を許容すれば、
そのマクロの引数を全部自力で解釈すれば、そういうことは可能ということ。

文字通り、言語をもう1つ作るようなもんだけど。



350 :デフォルトの名無しさん:2009/02/24(火) 20:46:54
× 一番その側
○ 一番外側

351 :デフォルトの名無しさん:2009/02/24(火) 21:16:51
>>344
これ面白いなぁ。
引き算は
(calc 1 - 2 - 3)
こう展開されてしまうから
(- 1 (- 2 3))
正しい値にならないね
けど、面白いからちょっと考えてみます

>>349
なるほど、勉強になります。
「マクロ使用を囲う括弧と、マクロ名さえあれば」
というのは、344氏の例でいけば、
一番外側の()とマクロ名であるcalcっていう意味なわけですね
そして、それより内側であれば、がんばり次第で自由自在だ、と。

352 :デフォルトの名無しさん:2009/02/24(火) 21:51:26
('A`)y-~

353 :デフォルトの名無しさん:2009/02/25(水) 02:20:27
そもそも、何で括弧なくしたいんだ?
知的好奇心満たしたいだけなら何も言わんが。

354 :デフォルトの名無しさん:2009/02/25(水) 07:19:11
Lisp Scheme初心者です。マグロウヒルの「プログラムの構造と実行」をテキストに
Schemeを勉強しようと思っています。
そこで皆様のアドバイスをお願いしたいのですが、どのScheme処理系がお勧めでしょうか?
あまりにもたくさんありすぎて判断できません。
OSはWindows XPです。よろしくお願いします。

355 :デフォルトの名無しさん:2009/02/25(水) 08:44:21
>>354
windows上で勉強目的なら統合環境のほうが楽だろうしPLT schemeで良いんじゃないかな。
さもないなら、linux上でemacs+gauche(日本語の本があるから)とかでも良いように思うん
だけどね。

356 :デフォルトの名無しさん:2009/02/25(水) 15:03:43
>>338
stalinがダメなら
記述力と速度を同時に達成できるのって
ocamleぐらい?

357 :デフォルトの名無しさん:2009/02/25(水) 16:11:06
GCの停止時間がなくて
記述力も同時に達成できるのはC++しかないんだぜ

358 :デフォルトの名無しさん:2009/02/25(水) 16:19:51
確か2月前半ぐらいに
comp.lang.lisp
でreadable なlisp -> C 変換の話がでてたはずなのに見つからない


359 :デフォルトの名無しさん:2009/02/25(水) 16:55:36
C++はOOPの振りをした関数型言語だからな

360 :デフォルトの名無しさん:2009/02/25(水) 17:34:58
>>359
テンプレートで遊ぶ分にはそうだけどな

361 :デフォルトの名無しさん:2009/02/25(水) 18:16:37
OOPは言語関係ねーす

362 :デフォルトの名無しさん:2009/02/25(水) 18:20:23
c++でoneceonlyマクロって書けるんだろうか
前にoneconleyできない関係で何度も代入評価されてる
「そんなエラー絶対みつかんないだろう」ってエラーがboost関係で報告されてた

363 :デフォルトの名無しさん:2009/02/25(水) 19:39:11
>>353
どっちかっていうと実用的な理由
 ・タイプ量を減らしたい
 ・括弧がネストすると、対応が激しくおいづらい

364 :デフォルトの名無しさん:2009/02/25(水) 19:48:59
emacsを使えばそんなこと屁でもないな
むしろ()がある方がタイプ量が減るし、移動が楽ってぐらいになる
逆にエディタの支援が無いとなるとなるほどそれは確かに致命的だ

365 :デフォルトの名無しさん:2009/02/25(水) 20:09:55
エディタの機能でどうのこうのっていうのは
言語の話とは別のような・・
俺もemacsは使ってるが

>()があるほうがタイプ量が減る
それはない
letよりlet1のほうが読みやすいし打ちやすい

366 :デフォルトの名無しさん:2009/02/25(水) 20:26:16
>>363
実用的な理由で括弧を消すのはないだろー。
前者の理由なら、そのために高階関数やマクロがある。
後者の理由なら、そのためにエディタの支援機能がある。
というか、インデントで対応を追うのが普通。

まあ、実際にやってみて、構文を増やす度に複雑化する、
仕様やリーダーマクロのメンテにうんざりしてみれば、
その辺良く分かるとは思うけど。

367 :デフォルトの名無しさん:2009/02/25(水) 20:34:54
実用ってことはコードを編集することを含むだろう?
ならエディタは関係あるじゃないか

368 :デフォルトの名無しさん:2009/02/25(水) 20:52:06
emacsの括弧うんぬんはいじる方の腕しだいで楽になる。

369 :デフォルトの名無しさん:2009/02/25(水) 20:56:54
emacs はこのへんを組み込んでるかどうかでも全然ちがうよ。
1. insert-parentheses を使ってるかどうか
2. show-paren-mode を使ってるかどうか
3. transient-mark-mode を使ってるかどうか

370 :デフォルトの名無しさん:2009/02/25(水) 20:57:00
>>365
プログラムのコードのタイプ量は減るだろうけど、
編集作業全体のタイプ量は驚きの増加量、って感じになる気がするよ。
S式単位での編集を使わないと、移動に掛かる手間が段違い。

371 :デフォルトの名無しさん:2009/02/25(水) 21:03:44
emacs userは1匹見ると10匹いると思え

372 :デフォルトの名無しさん:2009/02/25(水) 21:06:15
>>371
ごきぶりみたいにいうな にがわらひ
370みたいなべてらんもいるけど、C-F C-B C-N C-Pもままならずマウスな初心者も
いるから。
viでもlispモードは普通にあるよ。

373 :デフォルトの名無しさん:2009/02/25(水) 21:36:25
>>371
むしろ1匹しかいない絶滅危惧種扱いの所が多いよ。

374 :デフォルトの名無しさん:2009/02/25(水) 22:18:10
google trendsをみても検索数の指数は減ってるけど、多い地域はアカデミックなところが
多いね。日本も亜米利加もね。

375 :デフォルトの名無しさん:2009/02/25(水) 23:15:14
俺ベテランじゃなくて異端。
viper-modeで、viとEmacs両方のキーバインドを同程度に使う変態。

376 :デフォルトの名無しさん:2009/02/25(水) 23:19:42
vipperかお?

377 :デフォルトの名無しさん:2009/02/25(水) 23:22:13
お じゃない。

378 :デフォルトの名無しさん:2009/02/25(水) 23:27:08
>>375
viper-modeかぁ。15年以上起動したことがない。笑い

379 :デフォルトの名無しさん:2009/02/25(水) 23:31:02
>>375
   ___l___   /、`二//-‐''"´::l|::l       l! ';!u ';/:::l ', ';::::::l ';:::::i:::::
   ノ l Jヽ   レ/::/ /:イ:\/l:l l::l   u   !. l / ';:::l ', ';:::::l. ';::::l:::::
    ノヌ     レ  /:l l:::::lヽ|l l:l し      !/  ';:l,、-‐、::::l ';::::l::::
    / ヽ、_      /::l l:::::l  l\l      ヽ-'  / ';!-ー 、';::ト、';::::l:::
   ム ヒ       /::::l/l::::lニ‐-、``        / /;;;;;;;;;;;;;ヽ!   i::::l:::
   月 ヒ      /i::/  l::l;;;;;ヽ \             i;;;;;;;;;;;;;;;;;;;l   l::l:::
   ノ l ヽヽノ    /:::l/:l /;;l:!;;;;;;;;;',               ';;;;;;;;;;;;;;;;;ノ    l:l::
      ̄ ̄    /::::;ィ::l. l;;;;!;;;;;;;;;;;l            `‐--‐'´.....:::::::::!l
   __|_ ヽヽ   /イ//l::l ヽ、;;;;;;;ノ....      し   :::::::::::::::::::::ヽ /!リ l
    | ー      /::::l';!::::::::::::::::::::  u               ', i ノ l
    | ヽー     /イ';::l          ’         し u.  i l  l
     |       /';:';:!,.イ   し    入               l l U
     |      /,、-'´/ し      /  ヽ、   u    し ,' ,'  l
     |        /l し     _,.ノ     `フ"       ,' ,'  ,ィ::/:
     |       /::::::ヽ       ヽ    /     し ,' ,' / l::
     |      /::::::::::::`‐、 し      ',  /    u   ,、-'´  l,、-
     |      ``‐-、._::::::::::` ‐ 、     ',/       , -'´`'´ ,-'´
     |      _,、-‐'"´';:::::::::イ:l';:::` ‐ 、._____,、-‐'"´  u /
   | | | |    \ l::/ l::::::/リ ';:::::lリ:::::l';:::l l:l:::::l\  u /
   | | | |

380 :デフォルトの名無しさん:2009/02/25(水) 23:56:13
>>375
viperモードたまに使うけど、完全に終了させる方法教えて下さい。
viper-go-away しても別のファイル開いたらまたviperになってて、
仕方ないからemacs毎再起動してる。

381 :デフォルトの名無しさん:2009/02/26(木) 02:13:24
>>380
せっかくなので、ソースコードを読んで原因を探ってきました。

viper-go-awayを呼ぶと、viper.elのviper-remove-hooksで、
仕掛けていた各メジャーモードのフックを解除していくのですが、
コードを見ればお分かりの通り、とても素敵なバグがありまして、
find-file-hooksとかは完全スルーです。

なので、自分でコードを修正するか、本家にフィードバックするか、
俺のようにVIPER常駐野郎になるか選んでください。

382 :デフォルトの名無しさん:2009/02/26(木) 04:40:02
と思ったんだけど、追加で調べていったら、
デフォルトのメジャーモードを元に戻さないってバグもあって、
これが本筋っぽい。CVS最新版では修正されてる。
↓を.emacsに追加でひとつ。

(defadvice viper-go-away (after revert-default-major-mode activate)
(setq default-major-mode 'fundamental-mode))

383 :デフォルトの名無しさん:2009/02/26(木) 08:37:29
maximaの細かいbugが未だに放置なのは
common lispの問題なんだろうか
schemeで書かれてるならbugは少なくなるんだろうか

384 :デフォルトの名無しさん:2009/02/26(木) 11:34:14
妄想はそのくらいに

385 :デフォルトの名無しさん:2009/02/26(木) 19:45:52
もともと"Common Lisp"じゃないものをGCLに、そして"Common Lisp"に書き直したからじゃない?
最初から"Common Lisp"で書かれていたら違っていたかも
Maxima使ってないからよくわからないけど

386 :デフォルトの名無しさん:2009/02/26(木) 23:21:25
質問。この2つに違いってありますか?

(define (f x)
(define g 10)
(+ x g))

(define (g x)
(let ((h 10))
(+ x h)))

387 :デフォルトの名無しさん:2009/02/26(木) 23:29:49
5.2.2 internal definitionsに変らないと書いてある。

> A <body> containing internal definitions can always be converted
> into acompletely equivalent letrec expression.

388 :デフォルトの名無しさん:2009/02/26(木) 23:45:33
(define (g x)
 (letrec ((h 10))
  (+ x h)))
となら同じ、が正しいのでは?
letとletrecは違う
この例はたまたまコンビネータ式が束縛されているに過ぎない
(正確には式が束縛されているわけではないけど)

389 :デフォルトの名無しさん:2009/02/26(木) 23:53:51
質問の意図によるだろうけど
最終的な機械語に落とす段階では同じコードになる

390 :388:2009/02/26(木) 23:57:23
とはいったものの、束縛する式が1つならSchemeレベルではletとletrecは等価ですね

391 :デフォルトの名無しさん:2009/02/27(金) 00:01:31
>>387
ありがとうございます
自分の知らない、
何か違う意味があるんだろうと思って質問したんですが
letrecと同じ意味なんですね

392 :デフォルトの名無しさん:2009/02/27(金) 00:01:49
おっちょこちょいですね。

393 :デフォルトの名無しさん:2009/02/27(金) 00:04:11
>>391
>>386の例ではletで問題ない。

394 :デフォルトの名無しさん:2009/02/27(金) 00:11:24
>>393
了解です。Schemeってシンプルですね。ありがとうございます

395 :デフォルトの名無しさん:2009/02/27(金) 00:20:22
>>387
編集ミスった。
acompletely→a completely

否定のa-に見えてしまう すまん

396 :デフォルトの名無しさん:2009/02/27(金) 10:00:52
さしずめ「うは宇宙のう」

397 :デフォルトの名無しさん:2009/02/27(金) 21:31:01
>>382
遅くなったけどありがとう。これでviperモードと仲良く暮らせそうです。

398 :デフォルトの名無しさん:2009/02/28(土) 08:07:26


399 :デフォルトの名無しさん:2009/02/28(土) 09:35:38
399

400 :デフォルトの名無しさん:2009/02/28(土) 09:36:03
400

401 :デフォルトの名無しさん:2009/02/28(土) 18:05:35
shibuya.lisp ストリーミング中!
って今ごろ気付いたorz

402 :デフォルトの名無しさん:2009/02/28(土) 23:49:13
見逃した……
ニコニコ動画辺りに上げてくれないかあ

403 :デフォルトの名無しさん:2009/03/01(日) 20:33:59
>>402
マイリスト Shibuya.lispテクニカルトーク#2‐ニコニコ動画(ββ)
http://www.nicovideo.jp/mylist/11305224


404 :デフォルトの名無しさん:2009/03/01(日) 20:48:54
>>403と投稿者に感謝を

405 :デフォルトの名無しさん:2009/03/01(日) 20:57:15
>>403
マジでありがとう!!

406 :デフォルトの名無しさん:2009/03/02(月) 01:21:33
他の関数型言語でこの手の集まりをみないのは
学会で代用してるからなのだろうか

407 :デフォルトの名無しさん:2009/03/02(月) 01:33:04
>>406
勉強会ならあるけどな。

408 :デフォルトの名無しさん:2009/03/02(月) 05:19:41
>>403
あー、配信のときとは別テイクで音声がずいぶん聞きやすくなってる!
ありがとうございます。

409 :デフォルトの名無しさん:2009/03/02(月) 10:57:50
>>406
HaskellとかOCamlだと人がそんなにまだ多くないし(Lispに比べれば)、
ゲーム作りましたみたいな大きいネタとか、その筋なら誰でも知ってる大先生とか
そういうのないからねぇ。
さがせば>>407が書いてるみたいに勉強会とかあるからメイリングリストとか
入ってみれば? 今時捨てアドのひとつやふたついくらでも作れるし。

410 :デフォルトの名無しさん:2009/03/02(月) 17:06:35
lispが多いといってもschemerが多いんじゃない?
やはり、川合さんとか、処理系製作者が3人もいるくらいだからね。
common lispは人は少ないよ。Qiやclojure,newLispに至っては壊滅的。

そーいえば、abclがバージョンアップしてたな。

411 :デフォルトの名無しさん:2009/03/02(月) 17:12:46
ircを覗くと、常駐者が

#lisp 250
#haskell 550
#ocaml 50
#scala 50
#clojure 100
#ruby 250

くらいみたいだね。haskellがなんでこんなに多いんだ?

412 :デフォルトの名無しさん:2009/03/02(月) 18:35:37
has略は中ニ設定豊富だからな

413 :デフォルトの名無しさん:2009/03/02(月) 22:33:36
http://pc11.2ch.net/test/read.cgi/tech/1234635513/378

自分はLispが全然書けないけど、どんだけ短くなるのか見てみたいです。
どなたお願いします〜

414 :デフォルトの名無しさん:2009/03/03(火) 00:34:29
>>410
Qiというものを始めて知りましたが、Haskellっぽくて面白そうですね。
ところで皆さんはこういった面白い実装の情報をどこで得てるんでしょうか?
英語のメーリングリストなのかな?とは思ってるんですが・・・

415 :デフォルトの名無しさん:2009/03/03(火) 01:00:31
>>414
それはねぇ。。。こまめに調べてるだけよ。ふふふ。。。lisperがあつまる日本語のチャット
も情報源だよ。
うんQiはHaskellっぽいね。

416 :デフォルトの名無しさん:2009/03/03(火) 01:13:41
ttp://www.zazzle.com/lisp+gifts

これがメリケンだ!?

417 :デフォルトの名無しさん:2009/03/03(火) 02:06:13
>>416
made with secret alien technologyのシャツが無いなんて信じられん

418 :デフォルトの名無しさん:2009/03/03(火) 03:44:57
schemer多いのはシンプルだからなんだろうか

419 :デフォルトの名無しさん:2009/03/03(火) 03:50:50
Qi ECLでは駄目なんだ・・・
高速化って書いてるから期待したのに

420 :デフォルトの名無しさん:2009/03/03(火) 04:18:51
>>413
(use srfi-1)
(define request '((hoge . 1) (fuga . 2) (piyo . 3)))
(filter (lambda (x) (member (car x) '(hoge fuga))) request)
とか

421 :デフォルトの名無しさん:2009/03/03(火) 08:26:08
>>414
Planet LispってRSSあるよ。

422 :デフォルトの名無しさん:2009/03/03(火) 09:50:56
>>421
おおっ、有り難うございます!! さっそくGoogle Readerに追加しました。

423 :デフォルトの名無しさん:2009/03/03(火) 12:07:00
>>420 3行目 srfi-26使って(gaucheならuse不要)
(map (cut assoc <> request) '(hoge fuga))

424 :デフォルトの名無しさん:2009/03/03(火) 12:13:58
ハッシュテーブルに代入したら負けですねわかります

425 :デフォルトの名無しさん:2009/03/03(火) 13:20:03
(defvar *request* (make-hash-table))
(mapc #'(lambda (elem)
(setf (gethash (car elem) *request*) (cdr elem)))
'((hoge . 1) (fuga . 2) (piyo . 3) ...))
(let ((res (make-hash-table)))
(mapc #'(lambda(key)(setf (gethash key res)
(gethash key *request*)))
'(hoge fuga piyo))
res)

とくに簡潔ではないな。

426 :デフォルトの名無しさん:2009/03/03(火) 21:48:35
schemeで論理の勉強しようと思って
(tflist n)で#tと#fの組み合わせを列挙してくれる関数を書こうとしたんだが
意外と難しい
最初mapで#t → (#t #f) (#t #t)という風に書こうとしたが
これだとflattenが居るし、flattenを再帰で呼び出してみたら
全部平らになってしまって(#t #t #t #t #t #f #t #f #t ...)みたくなっちまった
誰かたすけて

動作イメージ
(tflist 1)
 '(#t #f) or '((#t) (#f))
(tflist 2)
 '((#t #f) (#t #t) (#f #f) (#f #t))
(tflist 3)
 '((#t #t #t) (#t #t #f) (#t #f #t) (#t #f #f) (#f #t #t) (#f #t #f) (#f #f #t) (#f #f #f))

427 :デフォルトの名無しさん:2009/03/03(火) 22:07:54
(define (tflist n)
 (cond
  ((<= n 0) '())
  ((= n 1) '((#t) (#f)))
  (else
   (let ((l (tflist (- n 1))))
    (define (add-t l) (cons #t l))
    (define (add-f l) (cons #f l))
    (append (map add-t l) (map add-f l))))))

428 :デフォルトの名無しさん:2009/03/03(火) 22:08:27
(define (tflist n)
(if (= n 1)
(list (list #t) (list #f))
(append
(map (lambda (x) (cons #t x)) (tflist (- n 1)))
(map (lambda (x) (cons #f x)) (tflist (- n 1))))))

429 :デフォルトの名無しさん:2009/03/03(火) 23:19:22
>>427-428
おお、神よ。なるほど、(append (map..)(map..))の形になるのか
もしよろしければもう1個
以下の例で最後の行は動くようになりませうか?
;guile/gaucheでどちらもエラー
(define (mujunritu p) (not (and p (not p))))
(define (haityuritu p) (or p (not p)))
(define (try1 f) (map f '(#t #f)))
(try1 mujunritu)
;これがダメ。try1のfでλx(apply f x)やλx(eval(f x))も試してみたものの
(map try1 '(mujunritu haityuritu))

OCamlでは動作
let mu p = not (p && (not p));;
let hai p = p || (not p);;
let tr f = List.map f [true;false];;
List.map tr [mu;hai];;

430 :デフォルトの名無しさん:2009/03/03(火) 23:23:52
>>420>>425
サンクス。今の自分じゃ全然理解できないけどorz

431 :デフォルトの名無しさん:2009/03/03(火) 23:25:52
前きたquote判ってない人かね

432 :デフォルトの名無しさん:2009/03/03(火) 23:28:26
>>429
`(,mujunritu ,haityuritu)または(list mujunritu haityuritu)
'(mujunritu haityuritu)との違いわかるかな

433 :前きたquote判ってない人:2009/03/03(火) 23:55:18
>>431
別人です。あれからROMしかしてないですよ。

434 :デフォルトの名無しさん:2009/03/05(木) 00:52:37
>>432
Lisp属の初心者には、このあたりは難しすぎます
調べるのは本当に大変でしたが、何とか見つかりました
ttp://www.ice.nuie.nagoya-u.ac.jp/~h003149b/lang/comparison.html
これのことですよね?
 Common Lispでも、関数引数に関数実体も名前も両方使える。
 (略)
 Schemeでは、関数しか受けとらない

確かに、CLでは両方動作することを確認
(defun muj (x) (not (and x (not x))))
(defun hai (y) (or y (not y)))
(defun tr (f) (mapcar #'(lambda (z) (funcall f z)) (list t nil)))
(mapcar #'tr (quote (hai muj)))
(mapcar #'tr (list 'hai 'muj))

schemeの場合
(list mujunritu haityuritu)だと関数実態が返ってくるが
(quote (mujunritu haityuritu))だと名前が返ってくる
schemeにもCLのsymbol-functionみたいな関数があれば
quoteのほうでも動作すると思い調べてみたものの
該当の関数が全然見つからない\(^o^)/
しかし、関数はおいといて、この考えでたぶん、大丈夫ですよね?

435 :デフォルトの名無しさん:2009/03/05(木) 01:20:53
>>434
つ「eval」

436 :デフォルトの名無しさん:2009/03/05(木) 02:00:08
quoteとevalは静的スコープな言語にふさわしくないとつくづく思う

437 :デフォルトの名無しさん:2009/03/05(木) 02:12:51
スコープと評価が?

438 :デフォルトの名無しさん:2009/03/05(木) 02:50:43
schemeのシンボルは文字列に毛の生えた特殊オブジェクトと思えばよろし。
プログラム内でそのシンボルに何が束縛されているかとは基本的に全く関係ない。

439 :デフォルトの名無しさん:2009/03/05(木) 07:25:51
R5RS の eval だと、その時点の環境での評価ができないから symbol-function の代わりにはできないし。

440 :デフォルトの名無しさん:2009/03/05(木) 12:06:53
あくまでも、定義中の名前はシンボルではなくただの変数の入れ物の
名前として使われる。また、プログラムを実行するには変数の位置を
表現できれば名前のような冗長な情報は必要ない。
よって名前は実行前のある時点でアドレスに変換されていると考えるべき。

evalやCLのsymbol-functionみたいな実行時にシンボルからその位置情報へ
変換する仕組みを作るとなると、処理系のインタプリタやコンパイラ相当を
必要時に起動するのと全く事になり、非常に馬鹿げたコストが掛かる。


441 :デフォルトの名無しさん:2009/03/05(木) 12:13:45
>>436
evalはともかくquoteはこの件と関係ない

442 :デフォルトの名無しさん:2009/03/05(木) 13:16:24
>>440
文章として突っ込みどころ多すぎw

内容的にも、後段のsymbol-functionについては、
特殊オペレータのfunctionと勘違いしているとしか思えない。

(defun foo ()
(print 'foo))
(flet ((foo () (print 'foolet)))
(foo)
(funcall (function foo))
(funcall (symbol-function 'foo))))
FOOLET
FOOLET
FOO


443 :デフォルトの名無しさん:2009/03/07(土) 12:49:38
急に流れが止まったから釣りかと思ったが
やっと>>422の言っていることがわかった
symbol-functionってグローバルな関数定義しか参照しないんだな

444 :デフォルトの名無しさん:2009/03/07(土) 13:48:24
schemeにシンボルが無いってことが少し分かってきた
やっぱ Common Lisp 最強だな!

445 :デフォルトの名無しさん:2009/03/07(土) 14:16:03
>>442
(let ((foo #'(lambda () (print 'fooval))))
(flet ((foo () (print 'foolet)))
(foo)
(funcall foo)
(funcall 'foo)
(funcall (function foo))
(funcall (symbol-function 'foo))))
FOOLET
FOOVAL
FOO
FOOLET
FOO

Common Lispは、symbol-valueとsymbol-functionが
シンボルセル内の別スロット。

funcallは>>440の後段のような処理は、
functionに任せて、関数呼び出しに専念する仕様。
funcallの第一引数は関数か、シンボル。
シンボルの場合symbol-functionの結果を使う。

446 :デフォルトの名無しさん:2009/03/07(土) 16:10:34

何が真実なのかさっぱりわからんのでまとめてみたら
カオスになった。つっこみ希望

・evalは静的スコープにはふさわしくない
 動的スコープなら1つしか環境を考えなくて良いためと想像

・schemeのシンボルは文字列に毛の生えた特殊オブジェクト

・呼び出し
 (hoge)はレキシカルな環境での関数呼び出し(関数セル)
 (funcall hoge)はレキシカルな環境での関数呼び出し(値セル)
 (funcall 'hoge)は↓と同様。symbol-functionを使うため
 (funcall (symbol-function 'hoge))はグローバルに定義されたシンボルの関数呼び出し(関数セル)
 (funcall (function hoge))はレキシカルな環境での関数呼び出し(関数セル)
 レキシカル環境で同名の変数がある場合に
 グローバルなシンボルのsymbol-value(値セル)を参照する方法はなさそう

>>442氏の440へのコメント
 ここのあたりが一番わからない
 symbol-functionは(トップレベル変数が動的スコープのため)
 動的スコープを参照出来る
 →functionのようにレキシカルスコープの変数を考慮しなくてよい
 →symbol-functionに関してはevalもそんなにコストかからんぜ、ってこと?

447 :デフォルトの名無しさん:2009/03/07(土) 17:43:08
>>446
442,445はCommon Lispのコードっていうのは分かってる?

> ・evalは静的スコープにはふさわしくない

これは俺も何が言いたいのかさっぱりわからんというか、
はっきり言って間違い。反証はScheme。

448 :デフォルトの名無しさん:2009/03/07(土) 19:15:47
> evalは静的スコープにはふさわしくない
はLisp1.5世代の人の意見なのかな。

449 :デフォルトの名無しさん:2009/03/07(土) 20:28:14
現在のevalはLispらしさを演出するためだけの存在だからな

450 :デフォルトの名無しさん:2009/03/07(土) 21:07:27
evalを使うってのは、速度的にも不利になるし、普通にlispでプログラムを組む人は
避けるところだと思うよ。避けないとすれば腕の悪い人という印象しかないな。少な
くとも他の方法を探すだろう。

451 :デフォルトの名無しさん:2009/03/08(日) 10:41:58
大抵マクロでおkだからな

452 :デフォルトの名無しさん:2009/03/08(日) 15:39:34
Qiは
データ
[]
program
()
のカッコをわけたらlispの意味ないとは思わなかったんだろうか


453 :デフォルトの名無しさん:2009/03/08(日) 16:21:06
>>451
マクロでできることはevalでもできるみたいな言い方だな
第一印象はそんなものだろうけど
それをいつまでも引きずっていていいのかな?

454 :デフォルトの名無しさん:2009/03/08(日) 16:40:18
451じゃないけど違うの?

455 :デフォルトの名無しさん:2009/03/08(日) 16:49:10
Lispのマクロ機能はevalで実装されていると思うのだが・・・

456 :デフォルトの名無しさん:2009/03/08(日) 17:11:36
http://codepad.org/kiclBi61

457 :デフォルトの名無しさん:2009/03/08(日) 18:36:31
(display (eval (let1 'y 2 `(+ ,x y))))
これで動くよ
何が言いたいのかわからんが


458 :デフォルトの名無しさん:2009/03/08(日) 19:00:31
言いたいことは
>>443
>symbol-functionってグローバルな関数定義しか参照しないんだな
と同じことがevalにも言えるということ。

evalは外側のローカル変数xの定義を参照できないから
>>457では、事前にxのところを値で置き換えたものをevalに渡している。

459 :デフォルトの名無しさん:2009/03/08(日) 19:58:27
つーかevalは他のローカル変数のことなんか知らんから。
関数の引数として渡されたコンテクストで評価するしかない。
それを知らせる手段として(current-environment)みたいなものが
処理系にあればやりたいことは実現できるんじゃないか。

460 :デフォルトの名無しさん:2009/03/08(日) 20:13:48
Schemeのevalの話?

Common Lispでは、

(defvar x 1)
(print (eval '(+ x x)))
2
(let ((x 10))
(print (eval '(+ x x))))
20

Schemeのevalは渡された環境への変更に制限もあるよね。
;; R5RSとR6RSで少し違う

461 :デフォルトの名無しさん:2009/03/08(日) 21:10:14
(let ((x 10))
(print (eval '(+ x x))))

*** - EVAL: variable X has no value



462 :デフォルトの名無しさん:2009/03/08(日) 21:15:34
>>460が一見意図通り動いてるように見えるのは
最初のdefvarでxをスペシャル変数にしてるから。

schemeで同じことをする場合はfluid-letを使う。

(define x 1)
(display (eval '(+ x x)))
2
(fluid-let ((x 10))
(display (eval '(+ x x))))
20
x
1


463 :デフォルトの名無しさん:2009/03/09(月) 08:01:39
mzschemeで、CGIをPOSTメソッドで使いたいのですが(クライアント側)、うまくいきません。

たとえば、
http://en.wikipedia.org/w/api.php?action=query&meta=siteinfo&siprop=namespaces
と同じことをしたいのですが(これはGETメソッド)、

(let* ((url (string->url "http://en.wikipedia.org/w/api.php"))
(post (string->bytes/utf-8 "action=query&meta=siteinfo&siprop=namespaces"))
(port (post-pure-port url post))
(xml (read-string 1000 port))
)
xml)

でいけると思ったのですが、エラーメッセージが帰ってきます。
どこがまずいのでしょうか?

464 :デフォルトの名無しさん:2009/03/09(月) 08:57:46
コンビネータパーサを作ったから
せっかくなのでR5RSかR6RS準拠のパーサを書いてみようと思ったんだが
全体のBNFのリストってどこかにまとまってる?
仕様書をざっと見した感じでは、
ばらばらにちょっとずつBNFが載っているように感じるんだが
仕様書ってのはこんな感じのもん?

465 :デフォルトの名無しさん:2009/03/09(月) 09:02:30
Schemeの仕様書はこんな感じのもん。
まぁLispでBNFもくそもないが。

466 :デフォルトの名無しさん:2009/03/09(月) 17:51:26
Lisp系言語の場合、構文のフォーマルな定義がBNFとはちょっと合わない。書けなくはないけれど。
構文の定義はこんな感じのレイヤになってる。
(1)まずtokenに分解 (R6RSの用語ではlexical syntax)
(2)S式として読み込み (R6RSの用語ではdatum syntax)
(3)S式の中の特定の構造をプログラムの構文として認識 (R6RSの用語ではprogram syntax)
このうち、(2)の出力は既に抽象的な木構造のデータなんで、(3)のレベルの構文定義っていうのは
木構造に対する定義になる。もちろん木構造にマッチする文法を書けばいいんだけど。
プログラムの字面に対するBNFとは違ってくるな。
例えば、"(if x y z)" と"(if . (x . (y . (z))))" は字面では違うけどdatum syntaxとして
読まれた後は全く同じ木構造になる。program syntaxはその木構造だけを見る。



467 :デフォルトの名無しさん:2009/03/09(月) 18:22:02
コンビネタ・パーザだとレキサも一体で書くスタイルが多い。
>>466で言うと(1)と(2)が一体。
ただ演算子多重定義出来る言語じゃないと、
見た目がシンプルにならない。

468 :デフォルトの名無しさん:2009/03/09(月) 20:48:06
>>467
それは知ってるんだが、要点はそこじゃなくて(2)と(3)が分離してるってとこ。仕様からして。
>>464 は言語構文のBNF定義がまとまってないってことに違和感を覚えたわけだろ。
(1)-(3)までまとめて書くことはできると思うがきれいになるかな?


469 :デフォルトの名無しさん:2009/03/09(月) 21:39:11
(3)は、R5RSとR6RSでちょっと違うし、
内部表現的には変える必要ない上に、
read/evalの分離構造ともマッチしているから、
あえて混ぜる必要はないと思う。

>>449
そういえばEuLispにはevalがなかったな。
おもしろい試みだったけどあっさりと廃れたね。
YooTooはまだ更新されているみたいだけど。
R6RSのmoduleも一部影響受けてるね。

470 :デフォルトの名無しさん:2009/03/10(火) 06:01:07
>>463ですが、自己解決しました。
このコードで動きます。


(let* ((url (string->url "http://en.wikipedia.org/w/api.php"))
(post (string->bytes/utf-8 "action=query&meta=siteinfo&siprop=namespaces&format=xml"))
(header
'("User-Agent: MzScheme"
"Accept: application/xml"
"Accept-Encoding: deflate"
"Accept-Charset: utf-8"
"Content-Type: application/x-www-form-urlencoded"))
(port (post-pure-port url post header))
(xml (read-string 1000 port)))
xml)

すくなくともen.wikipedia.orgのサーバーは、Content-Typeを指定しないとCGIだと認識してくれないようです。

471 :デフォルトの名無しさん:2009/03/10(火) 23:41:18
>>465-469
ありがとう。こういうもんか
特に466の説明はとてもわかりやすい。
R5RSのほうはBNFついてそうだから
こっちやってみよかな

しかし、PDFって扱いにくいわ
<hoge>って表記をテキストでコピペするとhhogeiになるし
<で検索できんから不便

472 :デフォルトの名無しさん:2009/03/11(水) 05:03:58
ファイルの basenameを取得する関数ってありますか?

"foo.txt" -> "foo"
"foo.bar.txt -> "foo.bar"

といった風に取得したいのですが

自分で書くなら
一文字ずつ後ろから文字比較して . が来るまで探して
その部分を削除。とするんですが

もし既にあるなら書くのも悲しいので
どなたかご存知ありませんか?

473 :デフォルトの名無しさん:2009/03/11(水) 05:37:46
(pregexp-replace "(.*)\\.[^.]+" "foo.bar.txt" "\\1")

474 :デフォルトの名無しさん:2009/03/11(水) 05:49:52
pathname-name
http://www.lispworks.com/documentation/HyperSpec/Body/f_pn_hos.htm

475 :デフォルトの名無しさん:2009/03/11(水) 06:47:07
>>473-474
レスありがとうございます。

環境を書いていませんでした申し訳ありません。
R5RSで行うにはどうすれば良いでしょうか?

476 :デフォルトの名無しさん:2009/03/11(水) 07:39:05
R5RSにそんな高レベルな標準関数ないと思う

477 :デフォルトの名無しさん:2009/03/11(水) 08:52:04
R5RSで動く出来合いのライブラリが欲しいってことかね

478 :472:2009/03/11(水) 09:17:26
>>476-477
ありませんか…。

仕方がないので自分で書いてみました。
もうちょっとすっきり書けないもんかと思うんですが
今の自分にはこれが限界でした。

(define (chop str)
(substring str 0 (- (string-length str) 1)))
(define (basename str)
(if (string? (basename-if-thereis str))
(basename-if-thereis str)
str))
(define (basename-if-thereis str)
(cond ((= (string-length str) 0) #f)
((eqv? (string-ref str (- (string-length str) 1)) #\.)
(chop str))
(#t (basename-if-thereis (chop str)))))

479 :デフォルトの名無しさん:2009/03/11(水) 11:47:54
>>472
SRFI 13 使えばいいんじゃね

(let ((i (string-index-right s #¥.)))
(if i
(substring s 0 i)
s))


480 :デフォルトの名無しさん:2009/03/11(水) 14:19:19
basenameの本質って拡張子を省くことじゃなくてディレクトリパスの削除じゃないのかな?
(my-basename "foo.txt") => "foo.txt"
(my-basename "foo.txt" #t) => "foo"
(my-basename "/foo/bar.txt") => "bar.txt"
みたいな
472の例はgaucheではpath-sans-extensionという手続きが割り当てられている

481 :デフォルトの名無しさん:2009/03/11(水) 15:07:51
クラススロットを辞書のように自由に登録したいのですが、
何かいい方法はありませんか?

例えば、
 (define-class <test> () (()))
というクラスから
 (define foo (make <test> :xxx 0 :yyy 10))
 (ref foo 'xxx) -> 0
 (ref foo 'yyy) -> 10
を可能にしたいのです。

482 :デフォルトの名無しさん:2009/03/11(水) 16:09:20
>>481
処理系は?

483 :デフォルトの名無しさん:2009/03/11(水) 16:16:34
>>482
gaucheです

484 :デフォルトの名無しさん:2009/03/11(水) 18:23:09
簡単にやるならこんな感じかな
(use gauche.sequence) (use util.list)
(define-class <test> () (%slots))
(define-method initialize ((self <test>) initargs)
(next-method)
(slot-set! self '%slots (map (lambda (x) (cons (string->symbol (keyword->string (car x))) (cadr x))) (slices initargs 2))))
(define-method ref ((self <test>) slot) (assq-ref (slot-ref self '%slots) slot))
(define-method (setter ref) ((self <test>) slot val) (assq-set! (slot-ref self '%slots) slot val))
ほんとうのスロットのようにふるまわせたいならMOP使わないとだめかも。


485 :デフォルトの名無しさん:2009/03/11(水) 19:37:09
>>484
それだとクラス内に辞書を確保して、
setterとgetterをスロット操作のようにエミュレートするってことですね。
なるほど〜
ありがとうございます。

ところで、Gauche本やリファレンスを見てもMOPの使い方がいまいち分からないのですが、
MOPを使うとどのようなソースになるのでしょうか?
よかったら教えてください。
よろしくお願いします。

486 :472:2009/03/11(水) 22:12:20
>>479
こういうライブラリがあるんですね、紹介ありがとうございます。
ただ、これだけのためにライブラリ入れるのも何なんで
もう少し難しい文字列処理が必要になったら入れることにします。

>>480
そうですね、確かに言われてみれば。
名前は変えることにします。

487 :デフォルトの名無しさん:2009/03/12(木) 01:34:42
コンビネータの勉強がしたいんですが
(expand S)とすると
(fun x (fun y (fun z ((x z) (y z)))))
が返ってくるような関数orマクロを作ろうとしたら
実質インタプリタを作るようなもんでしょうか?
もし楽な方法(特定の処理系の拡張機能etc)等があるのであれば知りたいです

488 :デフォルトの名無しさん:2009/03/12(木) 08:19:24
lispな方はバージョン管理は何を使ってますか?

git
svn
cvs


489 :デフォルトの名無しさん:2009/03/12(木) 08:23:19
>>488
darcs


490 :デフォルトの名無しさん:2009/03/12(木) 08:28:28
mercurial,
git

491 :デフォルトの名無しさん:2009/03/12(木) 09:14:18
Bazaar

492 :デフォルトの名無しさん:2009/03/12(木) 11:02:23
質問します。
組合せ問題、経路問題などの、記号処理問題をリストを使って解決するのに
相応しい言語を教えてください。
環境はできるだけ特定のOSに限定されない方が結構です。
グラフ表示は別の専門家が扱うのでロジック部分のみです。


493 :492:2009/03/12(木) 11:15:29
すみません。誤爆です。"初心者のためのプログラミング言語ガイド Part14"に書き込む
つもりでした。直前にこのスレを確認していたのでpasteされたURLがここになって
いました。
このスレの方々は それはSchemeだ! っておしゃいますよねw


494 :デフォルトの名無しさん:2009/03/12(木) 11:16:25
cl-graph
boost::graph

495 :デフォルトの名無しさん:2009/03/12(木) 11:54:50
>>492
「リストを使って解決するのに相応しい」って、その質問がすでにLISPを想定しているとしか。その名も、LISt Processer。
昔は人工知能を書くために使われていたので、ターゲット分野的にもぴったり。

LISPをはずすなら、Haskellかなぁ。
ただ、Haskellはマルチバイト文字の処理周りが痛いらしい。

496 :デフォルトの名無しさん:2009/03/12(木) 12:03:13
>>485 Gauche特有の話だし、wilikiででも質問してみたら?

497 :デフォルトの名無しさん:2009/03/12(木) 16:25:52
ものまね鳥をまねる、14000円つけてるなw
今図書館で借りっぱなしで催促の電話が何度もかかってる。
忙しくて読めなかったんです。
この場を借りて予約入れてる人に謝るよ。


498 :デフォルトの名無しさん:2009/03/12(木) 16:33:29
lispのラーメンタイマーだよ
(require :pythononlisp)
(py::py "import noodletimer;noodletimer.noodletimer")

499 :デフォルトの名無しさん:2009/03/12(木) 16:43:28
QiはQiからlispよぶのは簡単なのに
Qiをdumpしてlispから呼ばせるにはコードいじれって書いてある
自動でできないものなんだろうか

500 :デフォルトの名無しさん:2009/03/14(土) 03:25:49
lispは、カッコばかりでみづらいとよく言われるけど
これは、慣れだね

生産効率性については、まだよくわからないけど

501 :デフォルトの名無しさん:2009/03/14(土) 05:23:24
入門者レベルなんですが、lambdaを使わないと書けないんでしょうか

練習問題 1

次の関数を再帰を使って書いてください。
3. リスト (ls) から要素 (x) を取り除いたリストを返す関数。

; 3 模範解答
(define (remove x ls)
(if (null? ls)
'()
(let ((h (car ls)))
((if (eqv? x h)
(lambda (y) y)
(lambda (y) (cons h y)))
(remove x (cdr ls))))))


502 :デフォルトの名無しさん:2009/03/14(土) 06:56:30
>>501

(define (remove x ls)
(cond
((eq? x (car ls)) (cdr ls))
(else (cons (car ls) (remove x (cdr ls))))))

503 :502:2009/03/14(土) 08:50:42
Σ(゚д゚)

ls の中に x が二回以上出る場合はこうだ。

(define (remove x ls)
(cond
((null? ls) '())
((eq? x (car ls)) (remove x (cdr ls)))
(else (cons (car ls) (remove x (cdr ls))))))

504 :デフォルトの名無しさん:2009/03/14(土) 08:58:47
>>502
突っ込もうと思っていました
最初のは、(remove 5 '(1 2 3 2))でもコケますね

ヒントで実装までできました
ありがとうございました

505 :デフォルトの名無しさん:2009/03/14(土) 19:18:21
これ読んでいるとlispのほうが良さそうにみえるね
http://www.unixuser.org/~euske/doc/python/python-lisp-j.html

506 :デフォルトの名無しさん:2009/03/14(土) 20:54:29
Schemeでスタックを書こうとした場合
スタックのデータはグローバル変数に置くのが普通ですか?
出来たらクロージャとかに閉じ込めたいのですが
引数を2個にして1個目でpush/pop判断だとpopの時は引数が一つ無駄だし
個別にクロージャを使うと環境が別々になるし。

Gaucheのオブジェクト指向拡張とかだと綺麗にかけるんでしょうかね
他に思いつくのは、モジュールを作って
そこにスタック本体のデータを置くとかですが
どれが良いと思いますか
環境はGauche0.8.14です

507 :デフォルトの名無しさん:2009/03/14(土) 21:08:09
どれがって、consセルで作れば簡単じゃないかと

508 :デフォルトの名無しさん:2009/03/14(土) 21:21:08
(define top car)
(define pop cdr)
(define push cons)
じゃまずいですか?



509 :デフォルトの名無しさん:2009/03/14(土) 21:40:07
>>505
例外処理の項目の数値が未だに信じられない

510 :デフォルトの名無しさん:2009/03/14(土) 21:52:51
>>508
スタックをリストとして直接触らせたくないってことなんじゃね?

まぁ、Gauche の OO 関連はそんなに効率が良くないので、
クロージャに閉じ込める方がまだ無駄は少いかもね。

511 :デフォルトの名無しさん:2009/03/14(土) 22:01:34
>>509
> まぁ、Gauche の OO 関連はそんなに効率が良くないので、
> クロージャに閉じ込める方がまだ無駄は少いかもね。

くわしく
なにと比べて?
効率って生産効率?

512 :デフォルトの名無しさん:2009/03/14(土) 22:06:56
>>506-508

想像だけど、破壊的更新をしたいじゃないの?

オブジェト志向なら、
 a = stack.pop()
stack.push(b)
 …
とか書くわけジャン。

513 :デフォルトの名無しさん:2009/03/14(土) 22:14:32
>>511
速度とかメモリ効率とか。
メソッドのディスパッチも基本的には実行時にしか出来ないし。
どうでもいいけど、アンカ間違ってるぞ。

速度的には検証していないけど、
なんとなく>>506がイメージしているものを想像して書いてみた。
Gauche には依存していないつもり。

(define (make-stack)
(let ((stack (cons '() '())))
(lambda(proc)
(proc stack))))

(define (push stack-obj elem)
(stack-obj
(lambda(stack)
(set-cdr! stack
(cons (car stack)
(cdr stack)))
(set-car! stack elem))))

(define (pop stack-obj)
(stack-obj
(lambda(stack)
(if (null? (car stack))
'()
(let ((elem (car stack)))
(set-car! stack (cadr stack))
(set-cdr! stack (cddr stack))
elem)))))

514 :デフォルトの名無しさん:2009/03/14(土) 22:23:34
スタックはconsで実装するつもりだったし、
なんか話がかみ合わないと思ったら・・そういうことか、理解しました
自分がやりたかったのは510氏のいうような意味でして
ちょっと調べてたら可変長引数なる便利なものがあるってわかったので
これで実装出来ました。もう少し処理を追加したら自分の目的には使えそうな感じ

(define (stack)
(let1 val '()
(lambda a
(let-optionals*
a
((b 'none)(c '()))
(cond ((eq? b 'none) val)
((eq? b 'top) (if (eq? val '()) '() (car val)))
((eq? b 'push) (set! val (cons c val)) c)
((eq? b 'pop) (if (eq? val '()) '() (let1 r (car val) (set! val (cdr val)) r))))))))
(define a (stack))
(a 'push 1)
(a 'push 2)
(a 'push)
(a)
(a 'pop)
(a)

515 :デフォルトの名無しさん:2009/03/14(土) 22:43:02
>>513
(規制されてて書き込みのタイミングが悪かったのですが・・)
そういえば、Schemeのライブラリは、こういう形のほうが多いですね
参考にさせてもらいます
ありがとうございました

516 :デフォルトの名無しさん:2009/03/14(土) 23:03:47
最近のスタックインターフェースは、
top, pop, pushと三つに分けるのが主流だよ。
もはやイディオムになっているといっていい。


517 :デフォルトの名無しさん:2009/03/15(日) 00:08:39
;; クロージャに閉じ込める
(define (with-stack f)
(let ((stack '()))
(f
;; push
(lambda (obj) (set! stack (cons obj stack)))
;; pop
(lambda ()
(if (null? stack)
'()
(let ((obj (car stack))) (set! stack (cdr stack)) obj)))
;; top
(lambda () (if (null? stack) '() (car stack))))))

(with-stack
(lambda (push pop top)
(push 1) (push 2) (push 3)
(write (top)) (write (pop))
(write (top)) (write (pop))
(write (pop))
(write (pop))))

518 :デフォルトの名無しさん:2009/03/15(日) 00:10:58
topってなんや?

519 :デフォルトの名無しさん:2009/03/15(日) 00:11:52
解決
あとemptyっていうのも重要っぽいね

520 :デフォルトの名無しさん:2009/03/15(日) 02:34:25
[]も使うようにしたほうがいいの?

処理系によっては [] を () と同じように使えて、多少見かけを区別することができます:

(let ([x (calculate-x a b c)]
[y (calculate-y d e f)])
body ...)

(cond [(predicate x)
(do-something) (do-something2)]
[(predicate y)
(do-another-thing)]
[else
(do-whatever)])

括弧の意味の多重化 (中段)
http://practical-scheme.net/wiliki/wiliki.cgi?Lisp%3aS%E5%BC%8F%E3%81%AE%E7%90%86%E7%94%B1

521 :デフォルトの名無しさん:2009/03/15(日) 03:12:22
どうせそんなのはppしたら消えてしまうでしょ。
意味がある試みとは思えない。


522 :デフォルトの名無しさん:2009/03/15(日) 03:32:55
つーかカッコが何種類も入り乱れるのは激しくウザい

523 :デフォルトの名無しさん:2009/03/15(日) 04:59:08
世間でC言語みたいなものが好まれるのは、
演算子を含む式と文とのバランスが良く、
メリハリが付くからだと思う。
LISPは書式が関数も式も文も全く同じ規則で
さらにそれを括る括弧に極端に縛られる。
C言語でも関数呼び出しだけで書いていけば
同じ印象になるが、C言語では関数のネストなんて
書こうと思わなければほとんどする必要がない。
要するに括弧の形を変えたところであまり効果はない。
S式ベースでうだうだ考えるよりは、括弧に縛られない
都合の良い構文フロントエンドを作った方がマシである。

524 :デフォルトの名無しさん:2009/03/15(日) 05:20:32
俺は好きでよく使っているけどなぁ。
処理系によっては()[]{}の3種類が使えるから、数学の式を書くときみたいな感覚で。


525 :デフォルトの名無しさん:2009/03/15(日) 05:34:48
・よく言われる演算子の有無
前置記法である事と関係する。
a.b.cは
(ref(ref a 'b)'c)
1  2    3

のような書き方になる。
見ての通り1を脳内スタックに積んで2を読み、
1を降ろして3と結合する、という思考を要求する。
また、aとb,cは同一に扱えない。
((ref a b c)とは書けず、何かしら歪になる)
演算子があれば
a.b.c
1 2 3

a().b().c()
1 2  3
どちらも1から3まで、左から右へと目を動かすだけで良い。
修正が発生しても一箇所で済む。
これはS式というより、前置記法では解決できない問題と認識している。

526 :デフォルトの名無しさん:2009/03/15(日) 05:46:04
前置記法を排除すればS式でも(a -> b -> c)と書ける。
ここで、aをマクロ的に加工して実装してしまう事も考えられる。
が、それが現実的ではない事も判っている。
自分で演算子を作り、管理するのと同じ事になる。

527 :デフォルトの名無しさん:2009/03/15(日) 05:58:26
また>>526の(a -> b -> c)のように、
S式内で独自言語を構築する場合、
独自言語の構文としての括弧もあるので、
S式のくくりの括弧がどうしても邪魔に見える。
ここまでやるならもうS式である意味がない。
a->b->cと書きたいならそのまま書けばいい。

528 :デフォルトの名無しさん:2009/03/15(日) 06:25:55
だから、どうせやるなら>>523に書いた通り、必要時にS式も扱えるような
ちゃんぽん言語でもLISPで作ったらどうかというわけ。
不毛な縛りの中で何かやるよりはよっぽど健全ではないかと思う。
S式はデータとしてならともかく、コードとして出てくる必然性はあまりない。

>>520とどっちが読みやすいだろうか?
let x=calculate-x(a, b, c), y=calculate-y(d, e, f)
in body ...;

if (predicate(x)) { do-something(); do-something2(); }
else if (predicate(y)) { do-another-thing(); }
else { do-whatever(); }


529 :デフォルトの名無しさん:2009/03/15(日) 06:54:38
入門者なんですが、shchemeでS式以外の書き方の標準構文ってあるんでしょうか?

人間のパターン認知力なのか、人間の適応力のすごさ、慣れなのか、よくわからないけど
今のままのほうがいい気がする
基本レベルの正規表現が使える人で、schemeを100時間触ってみて、それで真っ当な意見を聞きたいかも
みんな、「このまままでいいんじゃねえ?」って言いそう

採用する理由になった論文の疑似コードもみてみたいところだが

530 :デフォルトの名無しさん:2009/03/15(日) 07:12:55
>>525
refが関数なら、(define ref* (lambda x (fold ref (car x) (cdr x))) で
(ref* a 'b 'c) って書けるんじゃない。
つか一般に二項演算子があるならfoldしてやりゃ不定長でも扱えるでしょ。
マクロならマクロでくるんでやればいいだろうし。
まあquoteは必要だけど、それは別の話だよね。

531 :デフォルトの名無しさん:2009/03/15(日) 07:43:20
>>529
昔の Lisp の論文とかには M 式ってあったね。
http://en.wikipedia.org/wiki/M-expression
Scheme の方だと SRFI 49 で I 式っていうのが提案されてる。
http://srfi.schemers.org/srfi-49/srfi-49.html
正規表現云々は知らないが、どっちもあまり流行ってない。

532 :デフォルトの名無しさん:2009/03/15(日) 10:10:46
そういえば、syntax が安定するまでは yacc を使って試行錯誤して
安定したら手書きの parser を使うという話を聞いたことがある。
lisper は逆に yacc より更に柔軟な方向に進もうとするのか。

533 :デフォルトの名無しさん:2009/03/15(日) 10:31:03
リードマクロがあるからね。

534 :デフォルトの名無しさん:2009/03/15(日) 11:54:13
>>528
マクロを忘れてるぜ。
コードがS式だからマクロ変換子は単なるリスト操作をすれば済むんだろう。
Scheme のマクロは単なるリスト操作じゃないけど、S式は大前提だ。
リーダーマクロにしたところで、内部的にはやっぱりS式だしな。

535 :デフォルトの名無しさん:2009/03/15(日) 12:13:45
リードマクロってキャラクタストリームベースじゃなかったっけ?

536 :デフォルトの名無しさん:2009/03/15(日) 21:58:23
; M-x run-scheme で下のコードをC-x C-eすると、最後に添付するエラーになってしまいます
(define (foo x)
(if (= x 0) '()
(cond ((= (modulo x 15) 0) (cons "FizzBuzz" (foo (- x 1))))
((= (modulo x 5) 0) (cons "Buzz" (foo (- x 1))))
((= (modulo x 3) 0) (cons "Fizz" (foo (- x 1))))
(else (cons x (foo (- x 1)))))))

環境
"GNU Emacs 22.3.1 (x86_64-unknown-linux-gnu)
of 2009-03-10 on localhost.localdomain"
guile> "1.8.0"
ちなみにon emacsでloadすると、うまくいきます。
guile> (load "fizzbuzz.scm")
guile> (foo 21)
("Fizz" "Buzz" 19 "Fizz" 17 16 "FizzBuzz" 14 13 "Fizz" 11 "Buzz" "Fizz" 8 7 "Fizz" "Buzz" 4 "Fizz" 2 1)
また、gosh on emacsだと、こうなります
gosh> (32 31 #0="FizzBuzz" 29 28 #1="Fizz" 26 #2="Buzz" #1# 23 22 #1# #2# 19 #1# 17 16 #0# 14 13 #1# 11 #2# #1# 8 7 #1# #2# 4 #1# 2 1)
OS再起動してもダメでした

エラー(長いので、一部略)
guile> ... ...
Display all 1922 possibilities? (y or n)
...
Display all 1922 possibilities? (y or n)
$abs
EISCONN
ERROR: Unbound variable: s
ABORT: (unbound-variable)
"Fizz"


537 :デフォルトの名無しさん:2009/03/15(日) 21:58:57
Backtrace:
In current input:
307: 0* [foo 3]
304: 1 (if (= x 0) (quote ()) ...)

<unnamed port>:304:1: In procedure memoization in expression (if (= x 0) (quote ()) ...):
<unnamed port>:304:1: In line 303: Missing or extra expression in (if (= x 0) (quote ()) d ((= (modulo x 15) 0) (cons "FizzBuzz" (foo (- x 1)))) s "Buzz" (foo (- x 1))).
ABORT: (syntax-error)
ERROR: In procedure scm_lreadr:
ERROR: #<unknown port>:307:24: unexpected ")"
ABORT: (read-error)
ERROR: In procedure scm_lreadr:
ERROR: #<unknown port>:307:25: unexpected ")"
ABORT: (read-error)
guile>
Display all 1922 possibilities? (y or n)
$abs
%app
%cond-expand-features
%cond-expand-table
%get-pre-modules-obarray
%guile-build-info
ERROR: Unbound variable: s
ABORT: (unbound-variable)
4

Backtrace:
In current input:
308: 0* [foo 3]

538 :デフォルトの名無しさん:2009/03/15(日) 21:59:36

<unnamed port>:304:1: In procedure memoization in expression (if (= x 0) (quote ()) ...):
<unnamed port>:304:1: In line 303: Missing or extra expression in (if (= x 0) (quote ()) d ((= (modulo x 15) 0) (cons "FizzBuzz" (foo (- x 1)))) s "Buzz" (foo (- x 1))).
ABORT: (syntax-error)
ERROR: In procedure scm_lreadr:
ERROR: #<unknown port>:308:19: unexpected ")"
ABORT: (read-error)
ERROR: In procedure scm_lreadr:
ERROR: #<unknown port>:308:20: unexpected ")"
ABORT: (read-error)
ERROR: In procedure scm_lreadr:
ERROR: #<unknown port>:308:21: unexpected ")"
ABORT: (read-error)
ERROR: In procedure scm_lreadr:
ERROR: #<unknown port>:308:22: unexpected ")"
ABORT: (read-error)
ERROR: In procedure scm_lreadr:
ERROR: #<unknown port>:308:23: unexpected ")"
ABORT: (read-error)
guile>

539 :デフォルトの名無しさん:2009/03/15(日) 22:58:47
(print (foo 21)) or (write (foo 21))
トップレベルプリンタが同一オブジェクトを複数回出力しないだけの問題では?

540 :デフォルトの名無しさん:2009/03/16(月) 02:04:38
>>539
どういう意味ですか?
自分なりに解釈して、やってみたけど、ダメでした

541 :デフォルトの名無しさん:2009/03/16(月) 04:02:54
>>540
>>539 の言っているのは gosh の出力についてだね。
guile のエラーについては式が guile にちゃんと渡されてない感じがする。
プロンプトが複数回表示されてるあたり、
式が複数に分割されて渡されている形になってそうなんだけど。
gosh だと C-x C-e でちゃんと動いてるのかな。

542 :デフォルトの名無しさん:2009/03/16(月) 06:02:16
アドバイスをきっかけに解決しました
タブによるインデント構造をつくるとこのエラーになるみたいです
スペースに置換してみたら、通りました
おとといまでは、普通に使えていた気がしたので、謎です
特別な設定をしたとしたら、メニューバーのschme欄をちょっと触ったときなのかな
触ったあとに特別不都合は、なかった気がしたけど
>>541
> >>539 の言っているのは gosh の出力についてだね。
把握しました

> gosh だと C-x C-e でちゃんと動いてるのかな。
もちろん、そうです

ドキュメント関係とデバッグ関係が整備されていそうなguileで行きたいんですよね
言語に慣れていないレベルなので、文字列処理関係は、まだ先っぽいので

気に掛けてくださったみなさま、お世話になりました

543 :デフォルトの名無しさん:2009/03/16(月) 07:18:20
ああそっちの問題か
readlineが悪さをしてる予感
emacsで使うときはactivate-readlineを無効にしたらどうでしょう

544 :デフォルトの名無しさん:2009/03/16(月) 09:56:12
>>543
本当だ
cat ~/.guile
(use-modules (ice-9 readline))
(activate-readline)
の設定を外したら、tabインデントでもC-x C-eが通るようになりました

また、安直にcat ~/.gosh
(use-modules (ice-9 readline))
(activate-readline)
としていたんですが、これって効いていないんですね
goshに関しては、info関連をまだ目を通していないので、あれなんですけど

構文を多少読めるようになったので、readline.scmとguile関連のinfoを眺めてみることにします

545 :デフォルトの名無しさん:2009/03/16(月) 16:32:24
gaucheのインタラクティブモードで読み込まれるスクリプトは.gaucherc。
それとice-9モジュールはguileの物であってgaucheにはない。
.guileから外すのは(activate-readline)だけでいいと思う。
gaucheを使うのならttp://practical-scheme.net/gauche/man/gauche-refj_toc.htmlを読む事を勧めます。

guileのgaucheに対する利点:多くのOSでportやpackageが用意されている。リードマクロがある。親方GNU。
gaucheのguileに対する利点:速い。日本語のドキュメントが多い。マルチバイト文字がサポートされている。

546 :デフォルトの名無しさん:2009/03/16(月) 22:37:55
(activate-readline)を外すのが嫌だったので、とりあえず関数に割り当ててみました

scheme, lisp関連の設定って、みなさんは、どういうふつうにされているんでしょうか?
不都合がなければ、晒してほしい・・・

cat ~/.guile
; first setting
(use-modules (ice-9 readline))
(define (a) (activate-readline))
; adding
(use-modules (ice-9 popen))
(use-modules (ice-9 rdelim))
(define date (read-line (open-input-pipe "date -R")))
(define pwd (read-line (open-input-pipe "pwd")))
(define echo-home (read-line (open-input-pipe "echo $PATH")))

547 :デフォルトの名無しさん:2009/03/16(月) 22:43:57
activate-readlineはemacsからrun-schemeで使うときは不要。っていうか邪魔。
(or (string=? "dumb" (getenv "TERM")) (activate-readline))
とか書けばいいんじゃないかな
(run-schemeのときは環境変数TERMがdumbに設定されるから)

548 :デフォルトの名無しさん:2009/03/16(月) 22:59:01
ああそれからactivate-readlineは起動後の任意の段階で評価できるから
.guileに書かないでおいて、シェルから直にguileを起動しただけ
手動で評価してもいい。
$ guile
guile> (activate-readline)
guile>

scheme、lisp関連の設定といっても自分は.emacsくらいですね。
ttp://karetta.jp/book-node/gauche-hacks/004682などを参考にするといいと思います。

549 :デフォルトの名無しさん:2009/03/16(月) 23:11:27
>>543
なるほど、readline が \t を食っちゃうのか。
知らないと意外とはまりそうだな。覚えておこう。

550 :デフォルトの名無しさん:2009/03/16(月) 23:26:15
逆に言えばreadlineでシンボル補完が効きます

551 :デフォルトの名無しさん:2009/03/17(火) 00:01:45
ドキュメントとデバッグ環境でGuileを選ぶってのも珍しい気がする。
そういう場合はPLTとかに行きそうなもんだけど。

552 :デフォルトの名無しさん:2009/03/17(火) 00:26:21
>>547
コンソール時
echo $TERM
linux

gnome-terminal時 
echo $TERM
xterm

emacs時 echo $TERM
emacs
なのに、なぜemacs時だけ(activate-readline)が実行されないの?
>>551
scheme処女なもんで4つのinfoがあるguileなのかなと思って
PLTは、存じませんでした
候補として考えたのは、Gauche, guile(, tiny scheme)の2つ(3つ)ですね
ちょっとした疑問なんですが、guileにあるhelp関数ってGaucheにもあるんでしょうか?
あと日本人のguile率って少ないんでしょうか?
SchemeでぐぐるとGaucheがいっぱいひっかかりますね

553 :デフォルトの名無しさん:2009/03/17(火) 00:47:53
Gaucheは高機能な上、日本人のShiro Kawaiさん作なので日本語のドキュメントがたくさんある。
guileはGNU標準でポータビリティは高いんだけど動作が遅くてスタックが(標準では)少ない。
入門用ならばR5RS規格に最も厳格にマッチしている上にguile以上のポータビリティがあるScheme48もお勧め。
自分はGauche>>guile>Scheme48の順に使ってます。
マクロの種類で言えば
Gauche:syntax-rulesマクロ、伝統的マクロ
guile:syntax-rulesマクロ、syntax-caseマクロ、伝統的マクロ、リードマクロ
Scheme48:syntax-rulesマクロ、明示的改名マクロ
なのでguileが最も充実してますが。

554 :デフォルトの名無しさん:2009/03/17(火) 04:34:29
>>552
gaucheにはhelp関数は無いけどinfo関数というのがある。
ただ、表示されるのが「その関数を含むinfoの1ページ」なのでちょっと面倒。
emacsから使ってるなら、カーソルのある関数のinfoエントリを一発で*info*バッファに
表示するelispが昔MLに流れたことがあった気がする。


555 :デフォルトの名無しさん:2009/03/17(火) 04:57:19
describeもaproposも使えるけど
なんだかんだでhyperspecとslimeが使いやすいやね


556 :552:2009/03/17(火) 05:23:33
自己解決しました
コピペまんまだと、activate-readlineきいていました
"dumb"のところを"emacs"に変えればいいわけですね
当たり前と言えば、当たり前なんだけど

日本語WikipediaのSchemeの項目の最下部の外部リンクの「関数プログラミングは、なぜ必要か、うんぬん」の文章ってわけわからないっすね
あの疑似コード、わかりにくいw

プログラミングしていて、なんとなく関数言語がいうモジュール化がわかってきたかも
>>553
今、気づいたんですが、日本語WikipediaにSchemeの処理系の項目は、Gauche以外書かれていないんですね
そういう意味でもGaucheに流れる人が多いのかな
>>554
info関数なんてあるんですね
Gaucheのインストール失敗したのか、よくわかりませんが、info閲覧できないんですよね
まだ必要に迫られていないので、ちゃんと調べていませんが

>emacsから使ってるなら、カーソルのある関数のinfoエントリを一発で*info*バッファに
>表示するelispが昔MLに流れたことがあった気がする。
便利そうですね

>>555
slimeって聞きますね
もうちょっとしたら、導入してみます

557 :デフォルトの名無しさん:2009/03/17(火) 08:05:53
あれ、run-schemeで起動したguileで
guile> (getenv "TERM")
"dumb"
ってなりませんでしたか?
guile> (getenv "TERM")
"emacs"
なら"dumb"を"emacs"でいいですけど…

558 :デフォルトの名無しさん:2009/03/17(火) 09:22:34
>>557
shellモードもrun-schemeモードも"emacs"と返りますね

infoドキュメントでがんばって、勉強しているんですが
けっこう大変ですね

基本的なlet, set, lambda関連の記述の仕方は、わかるんですが
ちょっと複雑になると理解しにくい・・・

559 :デフォルトの名無しさん:2009/03/17(火) 10:39:23
>SchemeでぐぐるとGaucheがいっぱいひっかかりますね
絶望した!横文字をウェブ全体から検索した結果に絶望した!

560 :デフォルトの名無しさん:2009/03/17(火) 13:28:37
infoで勉強する心意気は結構ですけど
先ずは>>216あたりのウェブページで勉強するほうが楽かもしれません。
わからない所はこことかに具体的にドシドシ書きこむと
さらに後に続く人の為にもなるでしょう。

561 :デフォルトの名無しさん:2009/03/17(火) 19:17:54
>>560
> infoで勉強する心意気は結構ですけど
> 先ずは>>216あたりのウェブページで勉強するほうが楽かもしれません。

infoで勉強するのが今回の目的だったりするんですよね
あとguileは、なにができるだ(どういう機能があるの?)というのも速く知りたいから、
とりあえず、なぞっているのもあります

もちろん、Schemeの学習階段的には、日本語の入門サイトは有用ですね

英語圏の人は、infoだけで事足りるのか、プログラミング経験度を前提しているのかとか

562 :デフォルトの名無しさん:2009/03/17(火) 22:17:23
>infoだけで事足りるのか
そんな完璧な文書があると思うか?
あるわけねーだろ
完璧を目指すのはいいが少しずつ地道に改善していくしかない


ちなみに、アジャイルとかなんとか言われるようになる以前は
一発で完璧なものが作れると思ってる奴がたくさんいたとかいないとか

563 :デフォルトの名無しさん:2009/03/18(水) 02:46:26
>>562
完璧な文書だとは、思わないけど
十分な文書だと思うよ

564 :デフォルトの名無しさん:2009/03/18(水) 12:35:17
common lispの情報探そうとするとhatenaなどのblogにいきあたること多い
schemeは2chの過去スレが検索にかかることが多い

この違いは何?


565 :デフォルトの名無しさん:2009/03/18(水) 12:46:13
Googleの中の人に聞いて下さい。

566 :デフォルトの名無しさん:2009/03/18(水) 12:48:47
schemeしか知らないけど、lispでぐぐればいいんじゃない?
lisp --> common lisp
scheme --> scheme
という理解だけど

567 :デフォルトの名無しさん:2009/03/18(水) 12:48:51
&hl=en付けたら2chにもhatenaにもいきあたらないな

568 :デフォルトの名無しさん:2009/03/18(水) 13:00:54
>564
実用性があるか無いか、実アプリ開発に使ってるか否かの差だとオモ。
言い方を変えればSchemeは教育的効果は高いが…

569 :デフォルトの名無しさん:2009/03/18(水) 13:30:55
おっとBASICの悪口はそこまでだ

570 :デフォルトの名無しさん:2009/03/18(水) 15:54:36
schemeで、(car '())や(cdr '())の結果はどうなるんしょうか?
昔読んだLISPの本か何かでnilのcarやcdrはnilになるという
説明を見た気がするのですが、schemeにも当てはまるんでしょうか。

571 :デフォルトの名無しさん:2009/03/18(水) 16:04:13
r5rsでは空のリストにcar,cdrはエラーって定義されてるな

572 :デフォルトの名無しさん:2009/03/18(水) 16:05:36
R5RS 6.3.2

573 :デフォルトの名無しさん:2009/03/18(水) 16:06:31
r5rs-ja.pdfにありました。ありがとうございました。

574 :デフォルトの名無しさん:2009/03/18(水) 21:02:29
>>497
オレ、とある図書館でその本の順番待ちなんだが、
まさかオマエが止めてるのか?w


575 :デフォルトの名無しさん:2009/03/18(水) 22:54:43
なんだこいつ

576 :デフォルトの名無しさん:2009/03/18(水) 23:33:46
これをLIFOと言います

577 :デフォルトの名無しさん:2009/03/18(水) 23:59:26
後入れ中出しだっけ

578 :デフォルトの名無しさん:2009/03/19(木) 00:29:47
アッー!

579 :デフォルトの名無しさん:2009/03/19(木) 01:54:40
guile, gaucheよりelispのほうがデバッガが整備されているの?

>Shiro(2007/09/05 13:39:49 PDT): 慣れが半分、後は「バグを出しにくいコードの書き方」が半分でしょうか。出来る限り副作用無しで書いておくとバグの切り分けが非常に容易になります。
>たぶん、「ソースの動きを追う」という考え方自体、C/C++とSchemeで差があるんではないかと思います。
http://practical-scheme.net/wiliki/wiliki.cgi?Scheme%3a%E5%88%9D%E5%BF%83%E8%80%85%E3%81%AE%E8%B3%AA%E5%95%8F%E7%AE%B1#H-1frlpc5

C(手続き型言語)との対比でschemeにとってソースの動きを追うってどんな感じなんですか?
個人的にデバッガを使って、「ソースをよく読み、ときどき書き」というのをしたいんですが

580 :デフォルトの名無しさん:2009/03/19(木) 05:47:16
>>579
そのすぐ下に書いてある通りでは。
デバッガを使わずとも、replで個々の手続きを呼べるので、色々な入力を与えて出力を
見るかな。入力と出力の関係がすぐに把握できない(手続き内でステップ実行したいと思う)
ようであればたぶん手続きが(あなたにとって)大きすぎる。


581 :デフォルトの名無しさん:2009/03/19(木) 07:32:34
で、何のソースを読みたいの?
抽象論はもう飽きたよ

582 :デフォルトの名無しさん:2009/03/19(木) 08:30:31
>C(手続き型言語)との対比でschemeにとってソースの動きを追うってどんな感じなんですか?
そういえばあんまり追ったことないかも・・・スタックトレースが1000行と出ちゃうから。面倒なんでデバッガ使わなくなった。"Type (debug) to enter the debugger."とか出されても、もう無視(w

583 :デフォルトの名無しさん:2009/03/19(木) 08:34:34
>>580
処理系への絶対的な信頼性ってこと?
効率的なデバッグ術の個人の差ってかなり開きがありそうだね
>>581
日本語サイトのサンプルとか、とりあえず、デバッグツールで読みたいなあと思って

バグでハマって、解決はしたけど、ものすごく時間がかかった場合は
バグの見つけ方のポイントを教えてくださいね

584 :デフォルトの名無しさん:2009/03/19(木) 10:56:39
初心者ですけど

(define (f x)
(let ((a (hoge1 x))
(b (hoge2 a))
(c (hoge3 b))
(d (hoge4 c)))
d))

;; (f "なんちゃら")

みたいな書き方をしています。

Emacsで、最後のコメントアウト行でC-c C-eで評価。
思ったような主力がでないときは、最後のdをcとかbとかに書き換えて、その段階での出力をみます。

手続き型に毒されたやり方でしょうか?

585 :デフォルトの名無しさん:2009/03/19(木) 14:10:57
それをやるならlet*じゃないかね


586 :デフォルトの名無しさん:2009/03/19(木) 14:33:22
>>579
自分はC++でプログラム書く時も、
デバッガ使うのはcore dump(assert含む)した時くらい。
基本的にユニットテストやってる。
自分のことを全然信用してないから、
全自動で網羅的なチェックした方がよい。

もちろんテストコードの方が圧倒的に多いし、
assertも馬鹿みたいに書いてる。
コードを書いたらすぐにユニットテストも書いてるから、
何かテストしたい時には、デバッガ立ち上げて操作するより、
既存のユニットテストコードを基に新たに書く方が速いw

テスト、assertコードを書くのは設計の検討にもなってる。
設計をあらゆる角度から観察する必要があるから。
もちろんdtrace, profilerなんかも使いますが。

587 :デフォルトの名無しさん:2009/03/19(木) 14:36:15
>自分のことを全然信用してないから、
分かるわ〜
自分もいっつもデイジー・デイジー歌っちゃう

588 :デフォルトの名無しさん:2009/03/19(木) 15:46:53
そんなんじゃボーマンさんにスイッチ切られちゃうぞ。

589 :デフォルトの名無しさん:2009/03/19(木) 19:56:25
>>585
ご指摘のとおり、let* でした。

590 :デフォルトの名無しさん:2009/03/20(金) 21:57:53
そのテストツールの作り方の方針というか
みたいなものをまとめている本ってないでしょうか

591 :デフォルトの名無しさん:2009/03/20(金) 23:28:14
そのってどの?

592 :デフォルトの名無しさん:2009/03/20(金) 23:32:39
まずデバッガに依存するのをやめて徹底的に構造化プログラミングを意識するようにした方がいいんじゃね?

593 :デフォルトの名無しさん:2009/03/21(土) 00:24:13
具体的に何のコードをテストしたいのかを意識するべき。
そうでないと、ツールとか方針とかが正しいのか、そもそも必要なのかを検証できない。

594 :デフォルトの名無しさん:2009/03/21(土) 01:36:26
>>592
デバッガ使ってうまくいっている人は使えばいいと思うよ。

595 :デフォルトの名無しさん:2009/03/21(土) 01:53:44
デバッグのしやすさをよく考えて作ったほうがいいよ。つまり
手続っぽく作るのも可能だけど、なるべく関数のスタイルを身につけたほうが
効率的だよ。関数のスタイルをとるなら、デバッグはassertやtraceさえ出来れ
ば、大体なんとかなるし。いわゆるデバッガが必要なのは、関数がでかくって、
その中で手続的に処理が乱雑になっちゃうからなのでは?

596 :デフォルトの名無しさん:2009/03/21(土) 02:13:43
そもそもの話はコードの読み方じゃなかったっけ。
まあ、それはreplで関数叩いて入出力確かめろ、ですでに結論出てるな。
とは言え、じゃあひどいコードはどうやったら効率よく読めますか、
とか訊かれると、どうしたもんかね、となるが。

597 :デフォルトの名無しさん:2009/03/21(土) 21:43:54
本屋でO'reilly Gaucheをみかけて、軽く立ち読みしたけど
良さそうな感じだね

598 :デフォルトの名無しさん:2009/03/22(日) 08:10:07
>>590
処理系のソースに付いてくるテストコード読みなよ。

599 :デフォルトの名無しさん:2009/03/22(日) 20:33:23
>>597
新しいGauche本が出たのかと喜んでオライリーを覗きに行ったら
ふぬああ本のことだったのか…

600 :デフォルトの名無しさん:2009/03/22(日) 20:45:12
2133?

601 :デフォルトの名無しさん:2009/03/22(日) 20:57:45
フ ムフム
ヌ クヌク
ア プ
ア ア

602 :デフォルトの名無しさん:2009/03/22(日) 22:20:27
フムフムヌクヌクアプアア ♪

http://www.youtube.com/watch?v=ir38tIOQdT0

603 :デフォルトの名無しさん:2009/03/22(日) 22:27:25
すまんがカッコ付きで話してくれんか

604 :デフォルトの名無しさん:2009/03/23(月) 01:13:46
(+ (* フム 2) (* ヌク 2) アプアア)

605 :デフォルトの名無しさん:2009/03/23(月) 01:34:35
Syntax Error

606 :デフォルトの名無しさん:2009/03/23(月) 01:36:23
>>605
お前が閉じろよ。

607 :デフォルトの名無しさん:2009/03/23(月) 12:27:25
私のカギカッコは渚でしか見つけられませんでした。

608 :デフォルトの名無しさん:2009/03/23(月) 13:08:06
))) ←波

609 :デフォルトの名無しさん:2009/03/23(月) 21:44:13
))) ←こんなん見て人生おかしくならないか?

610 :デフォルトの名無しさん:2009/03/23(月) 22:04:11
>>609
おれのヘッドホンは
beyerdynamics))))
だよ。

611 :デフォルトの名無しさん:2009/03/23(月) 22:16:03
(((((((((((パナウェーブ)))))))))))

612 :デフォルトの名無しさん:2009/03/24(火) 03:00:39
Lisp使い初めてから人生おかしくなったとか損したなんて人は
今まで一人も見たことがないな。



その前に周りにLisp使える人が一人も居ないお(´;ω;`)

613 :デフォルトの名無しさん:2009/03/24(火) 03:03:56
損はしていないが、Lisp使えるだけでアレゲな現場に投入された経験はある。
周りが変態ばかりで困った記憶がある。
かくいう俺もド変態だ。どうだまいったか。

614 :デフォルトの名無しさん:2009/03/24(火) 05:11:32
アレゲってエロゲでAI作るとか?

615 :デフォルトの名無しさん:2009/03/24(火) 06:16:04
ぬるぽ

616 :デフォルトの名無しさん:2009/03/24(火) 09:07:38
LISPにNullPointerExceptionあるの?

617 :デフォルトの名無しさん:2009/03/24(火) 09:10:41
規格上はない。
補足してトップレベルに復帰する処理系はある。

618 :デフォルトの名無しさん:2009/03/24(火) 09:26:42
おお、安心しました。

619 :デフォルトの名無しさん:2009/03/24(火) 09:29:47
値が束縛されてないシンボルを参照したりすると出るエラーがぬるぽに相当するんでは?

620 :デフォルトの名無しさん:2009/03/24(火) 10:03:13
それはUNBOUND-VARIABLEだよね。
NILのCDR取るとか規格の範囲内で起きるものじゃなくて、
MEMREFなどの低レベルAPIや処理系バグで起きる、
*((char *)0)な話かと思ったが。

621 :デフォルトの名無しさん:2009/03/24(火) 19:13:24
>>574
謝ってるのにオマエとか言う奴には貸したくないな。

622 :デフォルトの名無しさん:2009/03/24(火) 19:58:32
いやいや、アナタの本じゃないし
読んでなくても一度返すのがスジですよ。
そして列の最後尾に並び直すのです。
(セドラーから5000円だか7000円だかで新古本を買った者より)

623 :デフォルトの名無しさん:2009/03/24(火) 20:32:59
筋というか、普通はそういう規則じゃないの。
予約を入れた人がいなくても
貸し出し期間内に図書館にいって延長手続き(借り直し)するものだと思うんだけど。

624 :デフォルトの名無しさん:2009/03/24(火) 22:53:18
>>622
へー新古品なんてあるところにはあるんだなあ。
ところで訳書を出してたとこってたしかオンデマンド印刷とかで
幾つか出してるし、これもそれで復刊してくれないかなあ。


625 :デフォルトの名無しさん:2009/03/24(火) 23:07:18
某大手書店の最後のディヴィグ本をゲットして喜んでたのに
いつの間にか増刷されてamazonでさえ普通に新本が手に入るようになってて涙目w
手習いとかものまねも復刊されるかもね

626 :デフォルトの名無しさん:2009/03/24(火) 23:15:26
>>625
ま、そんなこともあるさ。 どんまいどんまい。

627 :デフォルトの名無しさん:2009/03/24(火) 23:23:31
筋ってw
ヤクザやさんがこんなところに居るとはw
規則なんだから返すに決まってるでしょ。
あればね…

ていうか本なくしちゃったw

628 :デフォルトの名無しさん:2009/03/24(火) 23:30:41
>> 627
細かいこと気にするなって。買って返せば無問題♪

629 :デフォルトの名無しさん:2009/03/25(水) 01:11:21
>>621とか>>627とか、こういう奴がいるから、
図書館の中の人が苦労するんだろうな、と思った。
釣りならいいけど、素でその態度なら頭おかしいだろ。

630 :デフォルトの名無しさん:2009/03/25(水) 01:22:12
わざわざ言うことかw

631 :デフォルトの名無しさん:2009/03/25(水) 02:27:05
絶版Lisp本ではものまね鳥と竹内先生の本が読みたいな。
あとLisp以外ではPrologの技芸。ヤフオクみたら29500円とかwwwwww
オンデマンドで売ってくれくれ。

632 :デフォルトの名無しさん:2009/03/25(水) 02:44:01
Prologの技芸ってたまに名前を聞くんだが、そんなに偉大な本だったのか・・・・・

633 :デフォルトの名無しさん:2009/03/25(水) 02:49:05
Prologの技芸持ってるけど読んでないぜ
そんなプレミア付きとは知らなんだ

634 : ◆7y/z31W.Wg :2009/03/25(水) 02:55:24
>>633
よかったら読んだら売ってよ。1万なら買うよ。

635 :デフォルトの名無しさん:2009/03/25(水) 02:56:26
「Prologの技芸」はProlog版SICP。
SICPはアーキテクチャよりだけど、こっちは応用より。
内容グーで印刷ショボ。

636 : ◆7y/z31W.Wg :2009/03/25(水) 03:01:49
間違ったヤフオクじゃなくてアマゾンだった。> 29500円

637 :デフォルトの名無しさん:2009/03/25(水) 06:41:10
これって業者がつり上げてんの?ひどい値段だなぁ。

638 :デフォルトの名無しさん:2009/03/25(水) 09:28:43
>Prolog版SICP
なるほど

639 :デフォルトの名無しさん:2009/03/25(水) 11:06:13
the art of prologの和訳本だよね

640 :デフォルトの名無しさん:2009/03/25(水) 13:22:05
MITの教科書か。既に新しい版が出てるみたいだね。


641 :デフォルトの名無しさん:2009/03/25(水) 14:53:33
話ぶった切ってすまないけど、SchemeでProcessingみたいに
Arduinoを制御することができる処理系ってあるのかな?
GaucheとかPLTってどうなんだろ?
できればやりかた書いてあるリンク教えてください。

642 :デフォルトの名無しさん:2009/03/25(水) 15:20:28
>>641
chicken scheme + avr-gcc + avrdude
http://1010.co.uk/arduino.html#2

643 :デフォルトの名無しさん:2009/03/25(水) 15:55:03
一方ポールグレアムはクラウドを制御した

644 :デフォルトの名無しさん:2009/03/25(水) 16:08:31
crowdコンピューター?

162 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)