Lisp Scheme Part19
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2008/01/14(月) 00:14:56Part18: 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/
Part9: ttp://pc2.2ch.net/test/read.cgi/tech/1069594582/
Part8: ttp://pc5.2ch.net/tech/kako/1058/10582/1058263391.html
Part7: ttp://pc5.2ch.net/tech/kako/1042/10421/1042167213.html
Part6: ttp://pc3.2ch.net/tech/kako/1031/10315/1031560687.html
Part5: ttp://pc3.2ch.net/tech/kako/1023/10230/1023091882.html
Part4: ttp://pc.2ch.net/tech/kako/1016/10162/1016211619.html
Part3: ttp://pc.2ch.net/tech/kako/1008/10082/1008220265.html
Part2: ttp://pc.2ch.net/tech/kako/1002/10025/1002584344.html
Part1: ttp://piza2.2ch.net/tech/kako/987/987169286.html
0446デフォルトの名無しさん
2008/02/03(日) 17:51:47全く問題ないよ。
Schemerになりなさい。
0447デフォルトの名無しさん
2008/02/03(日) 17:57:42読めるよ。全10章中、Yコンビネータが出てくるのは第9章だけ。
これを理解するのに "To Mock A Mockingbird" が巻末で推奨されている。
"Litle Schemer" は習うより慣れろの精神で書かれているので読みやすい。
0448デフォルトの名無しさん
2008/02/03(日) 18:02:350449デフォルトの名無しさん
2008/02/03(日) 18:03:57arc> (= var (table))
#hash()
arc> var
#hash()
arc> (= (var 'x) 'x1)
x1
arc> (= (var 'y) 'y1)
y1
arc> var
#hash((y . y1) (x . x1))
arc> (var 'x)
x1
arc>
0450デフォルトの名無しさん
2008/02/03(日) 18:11:41arc> (cdr '())
nil
arc> (car '())
nil
arc> (is '() nil)
t
arc>
0451デフォルトの名無しさん
2008/02/03(日) 18:14:59arc> (type "a")
string
arc> (type 1)
int
arc> (type 0.1)
num
arc> (type 'a)
sym
arc> (type '(a))
cons
arc> (type 1+1i)
num
arc>
0452デフォルトの名無しさん
2008/02/03(日) 18:19:04>>446
>>447
>>448
アドバイスありがとうございます。
C++ばかりやっていて数学的基礎もあまりなく
どうかと思ってたのですが、まずはSchemerシリーズ
3冊を一読してから考えます。
0453デフォルトの名無しさん
2008/02/04(月) 00:54:100454デフォルトの名無しさん
2008/02/04(月) 04:14:49http://www.crockford.com/javascript/little.html
0455デフォルトの名無しさん
2008/02/04(月) 12:54:21arc> (subst 'a '(b) '(a b c))
"aac"
arc> (subst "a" "b" "abc")
"aac"
arc>
0456デフォルトの名無しさん
2008/02/04(月) 13:26:47http://pc11.2ch.net/test/read.cgi/tech/1202098949/
ついカッとして立ててみた。悪気はなかった。たとえスレが寂れても
後悔するつもりはない。
0457デフォルトの名無しさん
2008/02/05(火) 15:07:500458デフォルトの名無しさん
2008/02/05(火) 15:15:240459デフォルトの名無しさん
2008/02/05(火) 16:24:01斜め上を行ってくれ。w
0460デフォルトの名無しさん
2008/02/05(火) 18:29:140461デフォルトの名無しさん
2008/02/05(火) 18:55:28Arc自体、ちゃんとしたモノになるまでまだ何年かは時間が掛かるだろう。
0462デフォルトの名無しさん
2008/02/05(火) 19:06:573-Schemeとか、3-Arcでもいいです。
; Smithの元の実装はMacLISPでした。
0463デフォルトの名無しさん
2008/02/05(火) 19:12:07http://www.htdp.org/2003-09-26/Book/
これどんなもんなんかな?
0464デフォルトの名無しさん
2008/02/05(火) 21:45:46お前が読めばいいだろ。
0465デフォルトの名無しさん
2008/02/06(水) 09:32:49そんないじわるな事言わないで><
0466デフォルトの名無しさん
2008/02/06(水) 10:17:02読むぐらい自分でしろよ
0467デフォルトの名無しさん
2008/02/06(水) 10:20:38消え失せろ。
0468デフォルトの名無しさん
2008/02/06(水) 12:18:18偉そうな事言わないで><
ネットで吠える事しかできない低能くん。
0469デフォルトの名無しさん
2008/02/06(水) 12:30:130470デフォルトの名無しさん
2008/02/06(水) 15:22:530471デフォルトの名無しさん
2008/02/06(水) 15:34:42>>468
偉そうな事言わないで><
ネットで吠える事しかできない低能くん。
0472デフォルトの名無しさん
2008/02/06(水) 19:30:38以前ざっと読んだよ。
いきあたりばったりでしかプログラム書いたことのない無能向け教科書。
0473デフォルトの名無しさん
2008/02/06(水) 20:25:59つまりごく当たり前の事しか書いてないと言いたいわけか。
0474デフォルトの名無しさん
2008/02/06(水) 21:07:29思考の段取りもつけられないようなバカも
少なからず存在しているのが世の中なわけで。
プログラミング上の概念については何がとりあげられているかは
目次見ればわかる。あとはデザイン・レシピの部分を拾って
ざっと流せば自分にとって読む必要のあるなしは判断できるだろう。
0475デフォルトの名無しさん
2008/02/06(水) 22:03:52> 思考の段取りもつけられないようなバカも
> 少なからず存在しているのが世の中なわけで。
ちゃいます!!!
"少なからず"ではなく, 彼らの方が多数なんです, 現場に行けば...
0476デフォルトの名無しさん
2008/02/06(水) 22:31:140477デフォルトの名無しさん
2008/02/06(水) 23:02:290478デフォルトの名無しさん
2008/02/07(木) 00:23:25絡む気は毛頭ないですが、
ざっと読むだけで必要、不必要が分かるってのは
言い過ぎな気がします
ざっと見た人が不必要だと思ったものでも、じっくり
読めばありな部分とかはないもんですかね?
基本的に安いものじゃないんで本はじっくり見る派です。
0479デフォルトの名無しさん
2008/02/07(木) 02:41:50http://d.hatena.ne.jp/sumii/20060413/1144920144
SICP目次
http://d.hatena.ne.jp/win_fmv/20000101
HtDP目次
http://d.hatena.ne.jp/win_fmv/20000102
HtDPはSICPより易しいです。
でも「計算機プログラムの構造と解釈」を読み通す根性がないなら
英語アレルギーを乗り越えてHtDPを読むのはなおさら無理です。
素直に「計算機プログラムの構造と解釈」を買って熟読しましょう。
0480デフォルトの名無しさん
2008/02/07(木) 05:48:04よほどの超絶英語コンプレックスだったんだな、それ書いたやつ。
0481デフォルトの名無しさん
2008/02/07(木) 07:51:12ママに読んでもらえバカ。
0482デフォルトの名無しさん
2008/02/07(木) 08:00:490483デフォルトの名無しさん
2008/02/07(木) 12:51:510484デフォルトの名無しさん
2008/02/07(木) 20:44:33> guileはutf-8で日本語は使えないのでしょうか?
guile> (let ((s "日本語表示テストです."))
(string? s))
#t
guile>
0485デフォルトの名無しさん
2008/02/07(木) 20:51:570486デフォルトの名無しさん
2008/02/07(木) 21:12:090487デフォルトの名無しさん
2008/02/07(木) 22:59:39日本語が使えますか?
gosh> (日本語が使えますか?)
#t
0488デフォルトの名無しさん
2008/02/07(木) 23:27:380489デフォルトの名無しさん
2008/02/08(金) 00:20:270490デフォルトの名無しさん
2008/02/08(金) 01:27:270491デフォルトの名無しさん
2008/02/08(金) 01:34:32先輩が言ったんですけど、ほんまですか?
0492デフォルトの名無しさん
2008/02/08(金) 01:36:140493デフォルトの名無しさん
2008/02/08(金) 01:38:250494デフォルトの名無しさん
2008/02/08(金) 01:47:57せつないきもちをまぎらわすんだよ
0495デフォルトの名無しさん
2008/02/08(金) 06:09:520496デフォルトの名無しさん
2008/02/08(金) 08:51:300497デフォルトの名無しさん
2008/02/08(金) 10:33:35guile> (define hoge "ほげほげ")
guile> hoge
"?\x81??\x81\x92?\x81??\x81\x92"
guile> (string-length hoge)
12
となってしまうけど、4にはならないの?
0498デフォルトの名無しさん
2008/02/08(金) 15:26:02guileではcharacterは8bitだったはず
(integer->char 256)はエラー
バイナリデータと文字が混在するファイルを扱う場合は
こっちのほうが割り切って使えるからいい
0499デフォルトの名無しさん
2008/02/08(金) 16:31:45プログラムでも書いてもらおうかな。
【問題】上のGuileのような文字列のバイト列を
UTF-8とみなし、その文字数を返す関数を書け。
0500デフォルトの名無しさん
2008/02/08(金) 16:44:490501デフォルトの名無しさん
2008/02/08(金) 17:15:55__(begin (define (follow-char? c)
____________(char<=? #\200 c #\277)))
__(and (string? str)
_______(let ((strlen (string-length str)))
_________(let loop ((acc 0)
____________________(i 0))
___________(cond ((= i strlen) acc)
_________________((char<=? #\0
___________________________(string-ref str i)
___________________________#\177)
__________________(loop (+ acc 1) (+ i 1)))
_________________((and (< (+ i 1) strlen)
_______________________(char<=? #\300
________________________________(string-ref str i)
________________________________#\337)
_______________________(follow-char? (string-ref str (+ i 1))))
0502デフォルトの名無しさん
2008/02/08(金) 17:19:210503デフォルトの名無しさん
2008/02/08(金) 17:52:54(define (utf8-string-length s)
(define (first-byte->length b)
(define byte (char->integer b))
(cond ((<= #x00 byte #xbf) 1)
((<= #xc0 byte #xdf) 2)
((<= #xe0 byte #xef) 3)
((<= #xf0 byte #xf7) 4)
((<= #xf8 byte #xfb) 5)
((<= #xfc byte #xfd) 6)))
(define strlen (string-length s))
(define (strlen-iter index len)
(if (<= strlen index) len
(strlen-iter (+ index (first-byte->length (string-ref s index)))
(+ len 1))))
(strlen-iter 0 0))
0504デフォルトの名無しさん
2008/02/08(金) 17:53:58_((and (< (+ i 2) strlen)
_______(char<=? #\340
________(string-ref str i)
________________#\357)
_______(follow-char? (string-ref str (+ i 1)))
_______(follow-char? (string-ref str (+ i 2))))
__(loop (+ acc 1) (+ i 3)))
_((and (< (+ i 3) strlen)
_______(char<=? #\360
________________(string-ref str i)
________________#\367)
_______(follow-char? (string-ref str (+ i 1)))
_______(follow-char? (string-ref str (+ i 2)))
_______(follow-char? (string-ref str (+ i 3))))
__(loop (+ acc 1) (+ i 4)))
_(else #f))))))
これならどうだ
0505デフォルトの名無しさん
2008/02/09(土) 21:41:09SBCL1.0.13よりLarcenyのほうが圧倒的に速いんだけど
こんなものなの?
0506デフォルトの名無しさん
2008/02/09(土) 21:52:430507デフォルトの名無しさん
2008/02/09(土) 22:12:213-Schemeと言っていい、Brownと後継Bloodはみつからず、
その代わり米澤研のRScheme, Blackが見つかりました。
RSchemeは論文に全コードが、Blackは米澤研のWebサーバ:/pub/black
0508デフォルトの名無しさん
2008/02/09(土) 23:38:58hspみたいなライブラリがついてる実装って無い?
0509デフォルトの名無しさん
2008/02/10(日) 01:03:55測定したプログラムや測定方法を書いてくれたら追試してくれる人が居るかもよ
0510デフォルトの名無しさん
2008/02/10(日) 01:06:52>>508はPLT Schemeとかどうよ。
0511デフォルトの名無しさん
2008/02/10(日) 03:04:12http://www.scsh.net/
それだけ。
0512デフォルトの名無しさん
2008/02/10(日) 08:43:08つ http://community.schemewiki.org/?scheme-faq-standards#H-3sv08v
つ http://community.schemewiki.org/?scheme-faq-standards#specialimpl
0513デフォルトの名無しさん
2008/02/10(日) 11:47:46見てみます
ありがとうございました
0514デフォルトの名無しさん
2008/02/10(日) 22:14:31Larceny めちゃくちゃ速いんで驚いたよ。
主要開発メンバーってLight Ship MacScheme 作ってた人でしょ。
この処理系、かなり期待。
0515デフォルトの名無しさん
2008/02/10(日) 22:31:000516デフォルトの名無しさん
2008/02/10(日) 22:47:46Words allocated: 0
Words reclaimed: 0
Elapsed time...: 156 ms (User: 156 ms; System: 0 ms)
Elapsed GC time: 0 ms (CPU: 0 in 0 collections.)
12
compile-file にしてもしなくても同じ結果。読み込んだ時点で
コンパイル済みなんじゃないかな。
記憶違いかもしれないけどアセンブラがどうとかってHPにあったような。
かなり最適化をしているのかも。
0517デフォルトの名無しさん
2008/02/10(日) 23:00:19Lisp1.5の時代はLAPを使ってたけど、今はVMなんかね?
Arcのコード読みでああいう簡単なのはおおよそわかったけど、
本格的なのってどういう仕組みをとってるんだろう。
0518デフォルトの名無しさん
2008/02/10(日) 23:05:01独自じゃなくて、JVMをターゲットにするのもある。
0519デフォルトの名無しさん
2008/02/10(日) 23:58:11あれ、良いと思うんだけどな。
0520デフォルトの名無しさん
2008/02/11(月) 00:03:190521デフォルトの名無しさん
2008/02/11(月) 00:04:180522デフォルトの名無しさん
2008/02/11(月) 00:04:510523デフォルトの名無しさん
2008/02/11(月) 00:30:25・・・俺が馬鹿なのは知ってるから。
SBCLのコンパイルから実行までの手順をご教授願いたい。
正直言って
初めてLISPをインストールして
「どんなのかなあ?使ってみようかなあ」と思っても
CやJAVAのように簡単に入口の手順が調べられないんですよ。
「そんな厨はLISP使うな!」は無しでお願いします。
0524デフォルトの名無しさん
2008/02/11(月) 00:44:410525デフォルトの名無しさん
2008/02/11(月) 00:47:36で、プラットフォームは何?
Mac,Linux,Windows?
初めてでWindows上ならxyzzy上のLispなんかの方が手近だと思うが。
Meadowだ、slimeだ、Emacsだとかは面倒くさいでしょ?
0526デフォルトの名無しさん
2008/02/11(月) 01:01:220527デフォルトの名無しさん
2008/02/11(月) 01:08:392. インストールする
3. New File でファイルを編集
4. コンパイルボタンを押す
5. REPL から呼び出す
0528デフォルトの名無しさん
2008/02/11(月) 01:09:31それによっても答えが変わると思う
0529デフォルトの名無しさん
2008/02/11(月) 01:13:14LinuxとFreeBSDとMacOSX以外のUnixLikeOSで動かせて
Gauche並の軽さ&速さとは言わないけど
Pythonくらいの軽さ&速さはあるCL処理系ってありますか?
SchemeでもGaucheより速い処理系も軽い処理系もあるけど
速さと軽さのバランスが一番いいのはやはりGauche
コンパイルすればCLのがチョッ速だと思うけど重い処理系が多いように思えます
0530デフォルトの名無しさん
2008/02/11(月) 01:16:48と書いてあるから、SBCL 自体のコンパイルをしたい訳ではないと予想。
cc や javac を使う様な感じで、コンパイル済みファイル(fasl?)を作成して
それをロード→実行する方法を聞いているんじゃないかしら。
すまんが俺は最近 SBCL を触っていないので、やり方が分からん。
0531デフォルトの名無しさん
2008/02/11(月) 01:18:32CLISP
0532デフォルトの名無しさん
2008/02/11(月) 01:22:00CLISPの最近のverはi386-OpenBSDでも動かないのです
(ビルドは出来るけどsaveinitmem:executable Tとか動かない)
それにちょっと遅すぎます
ECLのほうが速いくらいです
0533デフォルトの名無しさん
2008/02/11(月) 01:23:15すみません説明不足で
要するに先に出てた、SBCL VS Larceny を
Tak関数を使ってやりたいのです。
OS:Windows Vista
LISP:SBCL1.0.13
でTak関数がtak.clというファイル名であるとして
(compile-file "tak.cl")
とすれば、tak.fasl ファイルができるのですが・・・
ここから先が・・・orz
でもコンパイルしたとしても
実行時にSBCL起動して
(time (tak 12 6 0))
なんてすると意味の無いような気がするし、
"(time)"の部分も当初の tak.cl に入れて
コンパイルすればいいのでしょうが、
そこまで頭が回らないので助けていただこうかと。
0534デフォルトの名無しさん
2008/02/11(月) 01:23:53今度は CLISP より ○○ のほうが優れているように思えます!! とか言いそうだな…。
無理せず Gauche 使えばいいじゃん。
0535デフォルトの名無しさん
2008/02/11(月) 01:25:40そういう事は先に書かないと駄目だよ
ECL はネイティブコンパイルするから CLISP よりも速くて当然なんじゃないの?
0536デフォルトの名無しさん
2008/02/11(月) 01:27:38重すぎるのが難点
KCLファミリーでありながらCLtl2な所とか
長所もいろいろあるのですが
(*package*がCOMMON-LISP-USERだからCLtl2とみなしてもいいんですよね?)
0537デフォルトの名無しさん
2008/02/11(月) 01:29:18まぁ、10年以上後発なんだし結果は見えているような。
0538デフォルトの名無しさん
2008/02/11(月) 01:31:250539529=532=536
2008/02/11(月) 01:43:40CLにも敬意を表してちゃんと使えるようになりたいと考えております
多分に主観的ですが
エレガントさはSchemeに分が
それ以外の大部分はCLに分があると思っています
LuaみたいにAnsiCさえあれば動くぜ!みたいな処理系がCLにもSchemeにもほしいものです
0540デフォルトの名無しさん
2008/02/11(月) 02:09:14GC等のことを考えると速度的なペナルティ無しに完全にANSI-Cの範囲で記述するのは難しい
んじゃないかな。遅い処理系なら作れると思うけど、速くするには何かズルしないと。w
0541デフォルトの名無しさん
2008/02/11(月) 02:09:25(if (zero? choco)
(display "お前は既に死んでいる")
(display "カエルchokochoko3chokochoko/n合わせてchokochoko6chokochoko")))
0542デフォルトの名無しさん
2008/02/11(月) 02:11:41(load "tak.fasl")
0543デフォルトの名無しさん
2008/02/11(月) 02:37:040544デフォルトの名無しさん
2008/02/11(月) 04:26:33takを選んでしかも最適化宣言無し…意図が無いとしたら天才かもしれん。
haskell使えば?
0545デフォルトの名無しさん
2008/02/11(月) 04:46:57俺も Schemer が余興でやるなら CL より Haskell が良いと思う
■ このスレッドは過去ログ倉庫に格納されています