kb84tkhrのブログ

何を書こうか考え中です あ、あと組織とは関係ないってやつです 個人的なやつ

Reasoned Schemer (18) adderoまとめ

表にしてみた 行 b n m r overlap 計算 1 =0 =0 6(n=1 m=0) 8(n=2 m=0) (== n r) 2 =0 =0 >0 -- (== m r) 3 =1 =0 6(n=1 m=0) 8(n=2 m=0) (addero 0 n '(1) r) 4 =1 =0 >0 -- (addero 0 '(1) m r) 5 =1 =1 6(n=1 m=1) (full-addero b 1 1 a c) 6 =1 1 3 5 (g…

Reasoned Schemer (17) addero中身

はじめて読む人は114コマ目まで飛ばしていいよ でも読む やっぱり2回は読めってことだなPreface には書いてなかったけど 処理系まで理解してからもう一度読めばそりゃ間違いなく理解度は上がるもんな nとmを足した答えがr 下からの繰り上がりはb (defrel (ad…

Reasoned Schemer (16) addero

90 adderoの定義は104コマめにあります。 なぜ前方参照? しかもadderoややこしそう・・・ (run 3 (x y r) (addero 0 x y r))の値はなんですか。 ((_0 () _0) (() (_0 . _1) (_0 . _1)) ((1) (1) (0 1))) 値がそうなることは(順番を除けば)理解できる ((1)…

Reasoned Schemer (015) 自然数

自然数の表現 ビット(0、1)のリスト リストの先頭が20の位、末尾が最上位 表現は一意 最上位は0にならない 自然数0の表現は() 自然数をビットによる表現に変換する

Reasoned Schemer (015) ビット演算

7. A Bit Too Much bitです (defrel (bit-xoro x y r) (conde ((== 0 x) (== 0 y) (== 0 r)) ((== 0 x) (== 1 y) (== 1 r)) ((== 1 x) (== 0 y) (== 1 r)) ((== 1 x) (== 1 y) (== 0 r)))) これは単純 (defrel (bit-xoro x y r) (fresh (s t u) (bit-nando x…

Reasoned Schemer (014) nevero

こんどはいっそうシンプルに (defrel (nevero) (nevero)) #uは失敗するが、(nevero)は成功も失敗もしない (run 1 q (nevero)) → 値なし (run 1 q #u (nevero)) → () 1回目に#uで失敗するから (run 1 q (conde (#s) ((nevero)))) → (_0) 1回目に#sで成功する…

Reasoned Schemer (013) alwayso

6. The Fun Never Ends... 何がNever Endsなのかというと (defrel (alwayso) (conde (#s) ((alwayso)))) これが終わらないってことか? Schemeに戻せば (define (always) (cond (#t) (else (always))))で ただ#tを返すだけのコードだけれどもalwaysoはどう動…

AWSのお勉強始めました

今のところメインの目的は資格取得なので使ってみました、じゃなくてほんとにお勉強 今はスマホやタブレットでも勉強できて便利ですね回線はケチり気味なプランなので動画とかだとパケットを使うのが気になりますがまあなんとか足りるかな速度制限がかかると…

Reasoned Schemer (012) rembero続き

(a b e d _0)はy=eってことなんだろうけどやっぱり なんで右側のeが消えているのか 左のeが消える場合も右のeが消える場合もあって、ここでは右のeが消えてる、ってこと? ひとつずつ再帰を追っていけばわかるのかなあ (a b _0 d _1 e)に至ってはなぜ_0が消…

Reasoned Schemer (011) memo、rembero (わからん)

5. Members Only またわからんタイトルを (define (mem x l) (cond ((null? l) #f) ((equal? (car l) x) l) (#t (mem x (cdr l))))) memだからか安直な いやダブルミーニングが隠されてるかもしれないぞ気をつけろ

Reasoned Schemer (010) 戒律・法則・unwrap

いろんなパターンを試します (run 5 x (fresh (y) `(appendo `(cake & ice . ,y) '(d t) x))) の値は (() (_0) (_0 _1) (_0 _1 _2) (_0 _1 _2 _3)) run*だと帰ってこないパターンですね なのに (run* x (fresh (z) `(appendo '(cake & ice cream) `(d t . ,z…

Reasoned Schemer (009) appendoと翻訳(最終版)

4. Double Your Fun 何が2倍? (define (append l t) (cond ((null? l) t) (#t (cons (car l) (append (cdr l) t))))) lがプロパーなリストだと値を持たないけれども tはプロパーなリストでも値を持つ ということを気にしている?

Reasoned Schemer (008) member?とmembero

member?を翻訳して簡略化して試します 再帰をひとつずつたどっていったり 値を持たなかったり member?はプロパーなリストでないとエラーになりますが memberoは最後の要素が無視されるだけ Schemeの関数から翻訳していますがSchemeの関数と同じ結果を出すわ…

Reasoned Schemer (007) list?とlisto、など

3. Seeing Old Friends in New Ways 再帰出てきました (define (list? l) (cond ((null? l) #t) ((pair? l) (list? (cdr l))) ((#t #f)))) 翻訳だけすると (defrel (listo l) (conde ((nullo l) #s) ((pairo l) (fresh (d) (cdro l d) (listo d))) (#s #u)))…

Reasoned Schemer (006) (Schemeからの)翻訳

nulloは見たまんま (defrel (nullo x) (== '() x)) なんだけどじーっと見てるとわからなくなってきたり これは#sとか#uとか返すやつ pairoもやることは見たまんまなんだけど定義にはconsoを使う (defrel (pairo p) (fresh (a d) (conso a d p))) Is pairo re…

『名画で遊ぶあそびじゅつ!』

ウチのムスメは本が好きなので占いとか心理テストとかヘアアレンジとかちょっと怖い系の話とか好きな本は自分で勝手に読んでてそれはいいんですが興味のない分野には見向きもしないタイプ それはそれで悪いわけじゃないんですけど親的にはいろんな本を読んで…

Reasoned Schemer (005) caro、cdro、conso

2. Teaching Old Toys New Tricks Don't put new wine into old bottlesのもじりだったりするんだろうか あんまり関係ないかな そういうとこ気にしなきゃいけないとこが多そうで翻訳はちょっとたいへんそうだな SICPとかマジメなやつのほうがある意味楽そう …

Reasoned Schemer (004) conde

disj2の中にconj2が現れるパターンはよく出てくるので、conde式を導入する (run* (x y) (disj2 (conj2 (teacupo x) (teacupo x)) (conj2 (== #f x) (teacupo y)))) は (run* (x y) (conde ((teacupo x) (teacupo x)) ((== #f x) (teacupo y)))) と書ける

Reasoned Schemer (003) conj2、disj2、defrel

conj2はふたつのゴールが両方とも成功すれば成功する 2は引数がふたつってこと conjはたぶんconjunctionの略 連言てやつ andみたいなもの 定理証明手習いにも出てきた

Reasoned Schemer (002) goal、run*、fresh、fuse

1. Playthings 相変わらず章タイトルは役に立ちそうにありません goal: 何かしら成功したり失敗したり値を持たなかったりするもの #s: 成功 #u: 失敗 run*: 成功する変数の組み合わせを探してリストで返してくれるなにか たとえば(run* q (== q 'pea))の値は…

Reasoned Schemer (001) Forewordとか

『The Reasoned Schemer』買いました The Reasoned Schemer (MIT Press) 作者: Daniel P. Friedman,William E. Byrd,Oleg Kiselyov,Jason Hemann,Duane Bibby,Guy Lewis Steele Jr.,Gerald Jay Sussman,Robert A. Kowalski 出版社/メーカー: The MIT Press …

TiddlyWikiのソースを読む 続き3

boot.jsに戻って nodeだったらfs、path、vmのモジュールを読み込む fs = require("fs");みたいな書き方はちょっとおもしろい なんでもオブジェクトだとかなんでも連想配列みたいな感じは好き

TiddlyWikiのソースを読む 続き2

$tw.modules = { titles: {}, // hashmap by module name of moduleInfo types: {} // hashmap by module type and then name of moduleInfo }; このへんからモジュールシステムの話

TiddlyWikiのソースを読む 続き1

boot.jsの続きから /*jslint node: true, browser: true */ /*global modules: false, $tw: false */ なにかを説明するためのコメントではなさそうな雰囲気 jslintはJavaScript lintってことだろう 検索 JSLint: The JavaScript Code Quality Tool これか ふ…

TiddlyWiki/Dev - ソースを読み始める

さて何から読んでみようか あんまり人のコード読んだことないんでどこから手を付けていいのやらカンがない まあ起動するところから順番に行ってみよう bootprefix.jsってやつだな っていうかこれがどうやって起動するんだ 最初はtiddlywiki.jsってやつか #!/…

TiddlyWiki/Dev - Conclusion

Conclusionまで来ましたとりあえず記事を読むのはここまでということで TiddlyWikiの中心部は裸のTiddlerストアとモジュールシステムを提供するマイクロカーネルのみ マイクロカーネルはJavaScriptで書かれており、ブラウザでもnode.jsでも動く コアプラグイ…

TiddlyWiki/Dev - Core Application (5)

TiddlyWiki Core Applicationの続き トランスクルージョンとテキスト参照 TextReferenceとスペースなしの一単語として書いてあるからテキストリファレンスと書いたほうが雰囲気が出るだろうか テキスト参照 テキスト参照は指定されたTiddlerのフィールドの内…

TiddlyWiki/Dev - Core Application (4)

TiddlyWiki Core Applicationの続き 動的な振る舞いはふたつの方法で追加できる から メッセージ メッセージはユーザによって発信されるイベントで、ウィジェットによって生成される "tm-delete-tiddler"といった型のプロパティを持つ メッセージは親へ親へ…

TiddlyWiki/Dev - Core Application (3)

TiddlyWiki Core Applicationの続き UIとレンダリングパイプライン WikiText → パーズツリー → レンダツリー → DOM →シリアライズ→ 静的HTML パーザ コアプラグインはWikiTextのパーザを提供し、テキストをパーズツリーに変換する パーザはparserタイプのモ…

TiddlyWiki/Dev - Core Application (2)

TiddlyWiki Core Applicationの続き タグ コアプラグインはTiddlerにタグを付ける仕組みを提供する 特定のタグを使ってTiddlerを取得する { tag: [tiddler1, tiddler3, tiddler3] }のようなハッシュマップを取得する 特定のタグがついてないTiddlerのリスト…