[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 2chのread.cgiへ]
Update time : 05/09 15:00 / Filesize : 210 KB / Number-of Response : 784
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Lisp Scheme Part19



1 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 00:14:56 ]
過去スレ
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/
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

413 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 17:32:32 ]
arc> (fn (for) (for))
Error: "#<procedure>: expects at least 3 arguments, given 0"

何か変だと思ったら束縛するより先にマクロ展開してる
マクロと同じ名前の局所変数がマクロを隠すことがない
逆にマクロが変数を隠す問題はfuncallに相当するものを使って回避できる
(リストの先頭に来なければマクロに間違われることもないから)

414 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 01:56:42 ]
ttp://blog.livedoor.jp/dankogai/archives/50994188.html

415 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 06:13:13 ]
>>385
その本もってるが、定理と証明ばっかりでさっぱり判らん。
1章はともかく、2章辺りから終始論理式と、「〜を仮定すると
〜を満たす〜があるとき〜は〜の〜という」みたいな口調で
うんざりした。だから何、と。書き方が数学屋さん向け。
時代的に無理だろうけど「はじめに」でLISPの基礎理論だ
とか言うなら、それで書いてくれた方が良い。
プログラマの心理は、手段みたいなものは最初どうでもよくて、
結果や効果からの興味で中身がどうなってるか、と関心が
向いてくと思うんだけど、そういうのを期待できる本じゃない。

416 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 09:19:47 ]
Lispの本質はマクロです
SICP読んだだけの人にはわからんのです

417 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 12:46:00 ]
>>413
schemeのスコープで評価してないだけじゃないかと。
schemeだと
((lambda (list) (list)) (lambda () 'うんこ))
=>うんこ
ちゃんとうんこが出てきます。

418 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 15:31:12 ]
ttp://d3.jpn.org/blog/2008/02/arc_source_review_1.html

419 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 17:16:18 ]
未完成の俺様Lispでポールが爆釣

420 名前:ポール@アークヒルズ mailto:sage [2008/02/02(土) 17:24:44 ]
沢山釣れた(@wぷ

421 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 18:05:26 ]
アークヒルズってどのポールだよ?



422 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 19:38:25 ]
arc いいんじゃない。なんか、こう、こざっぱりした感じで。

へ〜、イイ感じじゃん。


423 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 19:43:34 ]
>>417
これで便秘解消ですね!

424 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 19:46:12 ]
平方根があるのに三角関数がない?複素数はいいみたい。

arc> (sqrt 2)
1.4142135623730951
arc> (sin 3.14)
Error: "reference to undefined identifier: _sin"
arc> (acos -1)
Error: "reference to undefined identifier: _acos"
arc>
arc> (* 1+1i 1+1i)
0+2i
arc>

425 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 20:09:55 ]
高階関数はSchemeと同じみたい。ファーストクラス、λと同じ。

(def sum (f n)
(if (is n 0)
0
(+ (f n) (sum f (- n 1)))))
arc> (sum sqrt 10)
22.4682781862041
arc>

426 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 20:38:53 ]
スピードを比較するのは酷かもしれんけど...

arc> (def tak (x y z)
(if (> x y)
(tak (tak (- x 1) y z)
(tak (- y 1) z x)
(tak (- z 1) x y))
y))
#<procedure: tak>
arc> (tak 12 6 0)
12
arc> time
#3(tagged mac #<procedure>)
arc> (time (tak 12 6 0))
time: 18047 msec.
12
arc>
Schemeで書かれていることを考えれば悪くはない。

427 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 20:51:27 ]
CommonLisp = ベンツ
Scheme = ポルシェ
Arc = アルファロメオ

428 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 21:10:43 ]
なんだすぐ錆びるのか Arc

429 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 22:19:26 ]
また遅れるみたいですね... orz

xach.livejournal.com/156584.html

430 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 00:56:48 ]
きっと初心者がarcやったら混乱する
ポールは結局、前置記法に嫌気が差しただけに見える
pythonやMLみたいなのを設計した方が受けが良いと思う
頭に括弧がある限り、ただのLISP方言だよ

431 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 01:25:45 ]
煽りでも荒らしでも喧嘩腰でもないレスに1行も同意できないのは珍しい。



432 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 02:04:24 ]
Arcは予想通りというか、「Perlがこだわっているもの」を取り込んできた感じ(小飼氏の見方は半分くらい受け付けないけど)。
PaulにとってLispの価値は「美しいこと」より「現実的に強いこと」のほうにあって、
「スケッチ的に手を動かして、試行錯誤で形を作っていける力」「同じことを短く書く力」は
特に大きなウェイトを占めるから、かの言語にある程度近づくのは読めたことだろう。

ただしPerlと違うのは、Lispの構文(あるいは構文の無さ)の範疇でそれをやっているからこそ、
Perlの「しっかり覚えてもなお読みにくいという難しさ」は遠ざけることができているところかな。
「覚えなきゃ手が出せない替わりに、覚えれば物凄い速度で書き下ろせるし、混乱無く読めもする」
という所に着地するために、ArcはLispであることと、LispっぽくないことをPaul流に融合させてると思う。

>>430は「Lispである部分」を4行目、「Lispっぽくない部分」を1行目でネガティブに捉えているのだと思う。
でも、俺にはどちらも一つのヴィジョンのもとに選択され、良くまとまっているように思える・・・・・・のは多分、
俺がPaulの文章を読んでLispの世界に足を踏み入れた人間で、頭がまだちゃんと独り立ちしてないからかもしれないw

433 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 03:27:48 ]
arcのfnは構造化代入が使える?のね。
srv.arcに
(with ((i o ip) (socket-accept s)) 〜)
みたいな使われ方があって、withの機能かと思ったら、
with自体はarc.arcに
(mac with (parms . body)
`((fn ,(map1 car (pair parms))
,@body)
,@(map1 cadr (pair parms))))
とだけ書いてあった。つまり最初のを展開するとfnにたらい回しされる。
((fn ((i o ip)) 〜) (socket-accept s))
socket-acceptは多値相当をリストで返すんかな?
こういうのは便利のような気もするけど、つい効率の方を気にしてしまう。
名前付き引数ってわけじゃないのか。


434 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 04:18:26 ]
ac.scmに追加したら数学関数も動いた。
;;数学関数追加
(xdef 'sin sin)
(xdef 'cos cos)
(xdef 'tan tan)
(xdef 'asin asin)
(xdef 'acos acos)
(xdef 'atan atan)

arc> (cos 1)
0.5403023058681398
arc> (= pi (acos -1))
3.141592653589793
arc> pi
3.141592653589793
arc>

435 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 05:16:13 ]
文字列の扱いが楽だね。
arc> (+ "abc" "def")
"abcdef"

そういうのアリ!
arc> ("abc" 2)
#\c
あ、いいかも。

lambdaが無いのは寂しいけど
arc> ((fn (x) (* x x x)) 3)
27
arc>
さっぱりして気持ちいいな。

よし、Arc 気に入った。


436 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 06:17:56 ]
文字列を掛けるとどうなるん?
引き算すると??


437 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 06:19:04 ]
(* "a" 5)
=>"aaaaa"
(- "abcde" "bcd")
=>"ae"



な、わけねーだろ

438 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 14:31:39 ]
型推論によって
整数が期待されている所では
(+ "abc" "defgh" "ij") -> 10
文字列が期待されている所では
(+ "abc" "defgh" "ij") -> "abcdefghij"
リストが期待されている所では
(+ "abc" "defgh" "ij") -> ("abc" "defgh" "ij")
になるとか?

439 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 14:35:20 ]
>>437
俺Lispはかなり初期からそれやってるw

440 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 16:42:47 ]
Arcって文字列とリストを同じような感覚で操作できるみたいだ。

arc> (+ '(a b) '(c d))
(a b c d)
arc> (+ '(a b) '(c d))
(a b c d)
arc> (+ "ab" "cd")
"abcd"
arc> (rem 'b '(a b c d))
(a c d)
arc> (rem #\b "abcd")
"acd"
arc>

remはremoveかね。

441 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 16:45:05 ]
マッカーシー博士がLispを開発した時の気分しだいではこうだったのかもしれない。

(def test (n)
(if (> n 90) 'AA
(> n 80) 'A
(> n 70) 'B
(> n 60) 'C
'D))

シンプルなcond節でifだけで用が足りるからいいかも



442 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 16:54:15 ]
エディタの自動インデント規則もArc用をちゃんと作りたくなるな。
if とか with とか、2個単位でインデントしたくなる。
(if
 c1
  e1
 c2
  e2)

443 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:37:41 ]
なんかキモ系のAAにしか見えねえw

444 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:40:58 ]
ラムダ算法とかYコンピネータとかの概念を全く知らない
状態でLittle SchemerとかでSchemeを勉強しても
理解できますか?

445 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:43:17 ]
知らないことを開き直るべきではないけど、
とりあえず「知らなきゃどこにも進めない」ってものではないよ。

446 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:51:47 ]
>>>444

全く問題ないよ。
Schemerになりなさい。

447 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:57:42 ]
>>444
読めるよ。全10章中、Yコンビネータが出てくるのは第9章だけ。
これを理解するのに "To Mock A Mockingbird" が巻末で推奨されている。
"Litle Schemer" は習うより慣れろの精神で書かれているので読みやすい。

448 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 18:02:35 ]
Yコンビネータなんて見りゃどういう事か直感で判るだろ

449 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 18:03:57 ]
Arcはハッシュが標準装備か。連想リストを使わないでこれもいいかも。

arc> (= 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>

450 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 18:11:41 ]
この辺りはCommonLisp風なんだね。

arc> (cdr '())
nil
arc> (car '())
nil
arc> (is '() nil)
t
arc>

451 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 18:14:59 ]
こんなのもあるんだ〜。
arc> (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>



452 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 18:19:04 ]
>>445
>>446
>>447
>>448
アドバイスありがとうございます。
C++ばかりやっていて数学的基礎もあまりなく
どうかと思ってたのですが、まずはSchemerシリーズ
3冊を一読してから考えます。

453 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 00:54:10 ]
一言語を学び始めるのに入門書を3冊読む?気軽にやれよ

454 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 04:14:49 ]
The Little 〜
www.crockford.com/javascript/little.html

455 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 12:54:21 ]
Arcのリストと文字列って?

arc> (subst 'a '(b) '(a b c))
"aac"
arc> (subst "a" "b" "abc")
"aac"
arc>

456 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 13:26:47 ]
【普通のやつらの】 Arc Language 0 【上を行け】
pc11.2ch.net/test/read.cgi/tech/1202098949/

ついカッとして立ててみた。悪気はなかった。たとえスレが寂れても
後悔するつもりはない。

457 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 15:07:50 ]
正直サブタイトルは要らなかったと思う

458 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 15:15:24 ]
荒し呼んでるようなもんだもんなw


459 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 16:24:01 ]
ま、スレが盛り上がるのを期待してるよ。おれたちの期待の
斜め上を行ってくれ。w

460 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 18:29:14 ]
アルファブロガー隔離スレだろ

461 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 18:55:28 ]
たとえ荒氏でも廃れるよりはマシということかw

Arc自体、ちゃんとしたモノになるまでまだ何年かは時間が掛かるだろう。



462 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 19:06:57 ]
現役処理系で動く3-Lispの系統の実装ってありますか?
3-Schemeとか、3-Arcでもいいです。

; Smithの元の実装はMacLISPでした。

463 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 19:12:07 ]
HtDP (How to Design Programs) って読んだ人いる?
www.htdp.org/2003-09-26/Book/
これどんなもんなんかな?

464 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 21:45:46 ]
>>463
お前が読めばいいだろ。

465 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 09:32:49 ]
>>464
そんないじわるな事言わないで><

466 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 10:17:02 ]
何かと思ったら全部オンラインで読めるじゃん
読むぐらい自分でしろよ

467 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 10:20:38 ]
つーか読みもしないで損得勘定してるのが気に入らんな。
消え失せろ。

468 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 12:18:18 ]
>>467
偉そうな事言わないで><
ネットで吠える事しかできない低能くん。

469 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 12:30:13 ]
自爆かよ

470 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 15:22:53 ]
>< ←これがきもい

471 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 15:34:42 ]
468 デフォルトの名無しさん [sage] Date:2008/02/06(水) 12:18:18  ID: Be:
    >>468
    偉そうな事言わないで><
    ネットで吠える事しかできない低能くん。



472 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 19:30:38 ]
>>463
以前ざっと読んだよ。
いきあたりばったりでしかプログラム書いたことのない無能向け教科書。

473 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 20:25:59 ]
>472
つまりごく当たり前の事しか書いてないと言いたいわけか。

474 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 21:07:29 ]
>>473
思考の段取りもつけられないようなバカも
少なからず存在しているのが世の中なわけで。

プログラミング上の概念については何がとりあげられているかは
目次見ればわかる。あとはデザイン・レシピの部分を拾って
ざっと流せば自分にとって読む必要のあるなしは判断できるだろう。

475 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 22:03:52 ]
>>474
> 思考の段取りもつけられないようなバカも
> 少なからず存在しているのが世の中なわけで。
ちゃいます!!!
"少なからず"ではなく, 彼らの方が多数なんです, 現場に行けば...


476 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 22:31:14 ]
現場に恵まれていませんね

477 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 23:02:29 ]
... まあええやん。次いこ。

478 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 00:23:25 ]
>>474
絡む気は毛頭ないですが、
ざっと読むだけで必要、不必要が分かるってのは
言い過ぎな気がします

ざっと見た人が不必要だと思ったものでも、じっくり
読めばありな部分とかはないもんですかね?

基本的に安いものじゃないんで本はじっくり見る派です。

479 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 02:41:50 ]
関数型言語マニアのための論文紹介3:FelleisenとSICPとHTDP
d.hatena.ne.jp/sumii/20060413/1144920144
SICP目次
d.hatena.ne.jp/win_fmv/20000101
HtDP目次
d.hatena.ne.jp/win_fmv/20000102

HtDPはSICPより易しいです。
でも「計算機プログラムの構造と解釈」を読み通す根性がないなら
英語アレルギーを乗り越えてHtDPを読むのはなおさら無理です。
素直に「計算機プログラムの構造と解釈」を買って熟読しましょう。

480 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 05:48:04 ]
どこかのスレにあった紹介だと思うが、
よほどの超絶英語コンプレックスだったんだな、それ書いたやつ。

481 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 07:51:12 ]
>>478
ママに読んでもらえバカ。



482 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 08:00:49 ]
じゃあ僕はコンピューターおばあちゃんに読んでもらいます。

483 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 12:51:51 ]
guileはutf-8で日本語は使えないのでしょうか?


484 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 20:44:33 ]
>>483
> guileはutf-8で日本語は使えないのでしょうか?

guile> (let ((s "日本語表示テストです."))
(string? s))
#t
guile>


485 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 20:51:57 ]
日本語が使えるが何を意味してるかによる

486 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 21:12:09 ]
まあ、日本語なんてこっちじゃ乞食でも気違いでも使ってるからね

487 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 22:59:39 ]
gosh> (define (日本語が使えますか?) #t)
日本語が使えますか?
gosh> (日本語が使えますか?)
#t


488 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 23:27:38 ]
日本語schemeキタコレ

489 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 00:20:27 ]
全角カッコのあつかいはどうなるのでしょうか


490 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 01:27:27 ]
全角なんてありませんよw

491 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 01:34:32 ]
lispとかschemeとかやってるとチョコレートもらえないって
先輩が言ったんですけど、ほんまですか?




492 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 01:36:14 ]
あ、それは本当です。でも人に喋っちゃ駄目だよ。

493 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 01:38:25 ]
いつもの倍でお得になります。

494 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 01:47:57 ]
チョコレートもらえないからlispとかschemeとかやって
せつないきもちをまぎらわすんだよ

495 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 06:09:52 ]
チョコレートなんてLispで書けばいいだろ。

496 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 08:51:30 ]
((lambda (choco) (choco choco)) (lambda (choco) (choco choco)))

497 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 10:33:35 ]
guileでUTF-8で

guile> (define hoge "ほげほげ")
guile> hoge
"?\x81??\x81\x92?\x81??\x81\x92"
guile> (string-length hoge)
12

となってしまうけど、4にはならないの?

498 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 15:26:02 ]
>>497
guileではcharacterは8bitだったはず
(integer->char 256)はエラー
バイナリデータと文字が混在するファイルを扱う場合は
こっちのほうが割り切って使えるからいい

499 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 16:31:45 ]
ちょうどいいからお前らにUTF-8の文字数を数える
プログラムでも書いてもらおうかな。

【問題】上のGuileのような文字列のバイト列を
UTF-8とみなし、その文字数を返す関数を書け。

500 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 16:44:49 ]
宿題スレでLispの質問しちゃいけないわけじゃないでしょ?

501 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 17:15:55 ]
(define (utf8len str)
__(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))))



502 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 17:19:21 ]
続きが書き込めない

503 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 17:52:54 ]
;; SICP挫折中の見習いです
(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))

504 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 17:53:58 ]
__(loop (+ acc 1) (+ i 2)))
_((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))))))
これならどうだ

505 名前:デフォルトの名無しさん mailto:age [2008/02/09(土) 21:41:09 ]
Windows Vistaなんだけど、
SBCL1.0.13よりLarcenyのほうが圧倒的に速いんだけど
こんなものなの?

506 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 21:52:43 ]
コンパイルした?

507 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 22:12:21 ]
>>462
3-Schemeと言っていい、Brownと後継Bloodはみつからず、
その代わり米澤研のRScheme, Blackが見つかりました。
RSchemeは論文に全コードが、Blackは米澤研のWebサーバ:/pub/black

508 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 23:38:58 ]
ウィンドウスxpで使えて最初から
hspみたいなライブラリがついてる実装って無い?

509 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 01:03:55 ]
>>505
測定したプログラムや測定方法を書いてくれたら追試してくれる人が居るかもよ

510 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 01:06:52 ]
Larcenyのほうが設計が10年以上新しいんだし、そんなもんじゃね。
>>508はPLT Schemeとかどうよ。

511 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 03:04:12 ]
scsh という Scheme シェルを入れてみた。未だ起動もしてないけど。

www.scsh.net/


それだけ。



512 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 08:43:08 ]
>>508
community.schemewiki.org/?scheme-faq-standards#H-3sv08v
community.schemewiki.org/?scheme-faq-standards#specialimpl

513 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 11:47:46 ]
>>510
見てみます
ありがとうございました






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<210KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef