kb84tkhrのブログ

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

2019-01-01から1年間の記事一覧

Reasoned Schemer (56) 10章 reify-s, reify, run-goal

reifyするっぽい何か

『関数型プログラミングに目覚めた!』読んだ

いつぞや某プログラミング情報サイトで物議をかもしてた人の物議をかもしてた本 関数型プログラミングに目覚めた!IQ145の女子高校生の先輩から受けた特訓5日間 作者: 岡部健 出版社/メーカー: 秀和システム 発売日: 2015/04/22 メディア: 単行本 この商品を…

Reasoned Schemer (55) 10章 walk*

(walk w ``((,x . b) (,z . ,y) (,w . (,x e ,z))))は``(,x e ,z)だけど (walk* w ``((,x . b) (,z . ,y) (,w . (,x e ,z))))は``(b e ,y)になる そんなwalk*について考える 変数が見つかったら終わりというだけではなくて 値の中に変数があればそれも置き換…

本好きの下克上 第一部~第三部 読んだ

ここ2週間くらいこれ読んでました 【合本版 第一部】本好きの下剋上(全3巻) 本好きの下剋上(合本版) (TOブックスラノベ) 作者: 香月美夜 出版社/メーカー: TOブックス 発売日: 2017/03/17 メディア: Kindle版 この商品を含むブログ (6件) を見る

Reasoned Schemer (54) 10章 call/fresh, reified variable

新たな変数を導入する (define (call/fresh name f) (f (var name))) fは変数を引数にとってgoalを返す関数 たとえば(lambda (fruit) (== 'plum fruit))

ABC145

AtCoder Beginner Contest 145 - AtCoder は「D - Knight」が突破できず 最初は何も考えずメモ化再帰で解こうとしたけどメモ化はちっとも効果なし 図を描いてみたら単なるパスカルの三角形 じゃあnCk求めればいいんだもらったな こう書いたら半分TLEになりま…

侍巾帷房紈扇 練習(行書)

今日は行書だけ 行書のときの方が楷書に比べてあれこれ考えずにすむ分書きやすい・・・と書いてるときは思ってるんだけどサムネイル画像を見るとバランスのとれてなさに愕然とする

Reasoned Schemer (53) 10章 substitusionのstreamとは

何か見えた気もするんだよな substitusionのstreamってなんなのかってのがイメージできてない (unify u v s)はuとvは同じですっていうことにしたsを返すこと、 っていうあたりまではわかった気になっている この間のギャップが埋められるだろうか

Reasoned Schemer (52) 10章 conj2

(define (conj2 g1 g2) (lambda (s) (append-map-inf g2 (g1 s)))) disj2と似てるような似てないような disj2はappend-infを呼んでるけどconj2はappend-map-infを呼ぶ disj2はg1もg2もsに適用されるけどconj2はg2だけ g1とg2が非対称なんだ

Reasoned Schemer (51) 10章 take-inf

(define (take-inf n s-inf) (cond ((and n (zero? n)) '()) ((null? s-inf) '()) ((pair? s-inf) (cons (car s-inf) (take-inf (and n (sub1 n)) (cdr s-inf)))) (else (take-inf n (s-inf)))))

Reasoned Schemer (50) 10章 alwayso

(define (alwayso) (lambda (s) (lambda () ((disj2 succeed (alwayso)) s)))) しっかり読んだらalwaysoの動きがイメージできるようになるだろうか まずalwaysoの形を確認 alwaysoは引数のない関数で substitutionを引数にとって、substitusionのstreamを返…

Reasoned Schemer (49) 10章 nevero 続き

次はこれ > (let ((s-inf ((disj2 (== 'olive x) (nevero)) empty-s))) s-inf) (((#(x) . olive)) . #<procedure:...r/minikanren.scm:52:29>) (== 'olive x)の値と(nevero)の値がappendされているようではある ところでこの式って((disj2 (== 'olive x) (nevero)) empty-s)と何が違うの letの意味</procedure:...r/minikanren.scm:52:29>…

侍巾帷房紈扇 練習

あれこれやらず今日は楷書だけ 左払いがコントロールできなくてボテッとしたりひょろっとしたりする筆の向きが影響してるような気がするけどどうするのがいいのかはよくわからないいろいろ考えすぎておかしなことになっている気もする 特に房がうまくバラン…

Macbook AirをUbuntuからmacOSに戻す

mac

・・・Ubuntu入れてみようか(ごくり Ubuntu (18.04) をMacbook Airに入れてみる - kb84tkhrのブログ というわけで先日いろいろ苦労しながらMacbook AirにUbuntuを入れましたが最近Windows PCの利用割合が増えてきたのと ムスメが学校でパソコン使って調べも…

Reasoned Schemer (49) 10章 nevero

(define (nevero) (lambda (s) (lambda () ((nevero) s)))) これはminikanren言語じゃないよね 動かしても関数が返ってくるだけなのでわかりづらい

Reasoned Schemer (48) 10章 disj2

(define (disj2 g1 g2) (lambda (s) (append-inf (g1 s) (g2 s)))) goalはsubstitutionを取ってsubstitusionのstreamを返すもの というのはあってる(当然 でこれってどういう意味なの っていうかその前にsubstitusionのstreamってなんなのかってのがわかっ…

Reasoned Schemer (47) 10章 append-inf

condeのモトになっているdisj2とそのヘルパー関数append-inf append-infから見よう

Reasoned Schemer (46) 10章 stream、==

streamとは空リストかcdrがstreamであるペアかまたはsuspension suspensionとは(lambda () body)という形をしていて評価するとstreamを返すもの 遅延ストリームって言われるやつだな そんなのが突然の出現 そして意外にさらっと説明・例示が終わる

Reasoned Schemer (45) 10章 unify

unify Prologといえばユニフィケーションって出てくるくらいだからきっと何か大事なもの

今月のお題 侍巾帷房紈扇 小野小町

侍巾帷房紈扇 楷書はうっかり筆を拭いてしまって消滅今回はなんとなく形がとりやすい印象

Reasoned Schemer (45) 10章 ext-s

(ext-s x v s)はsubstitution sにassociation `(,x . ,v) を 追加したものを返す ただし循環参照ができるようなassociationは追加できず#fを返す

戦国人物伝 今川義元

ムスメ用に借りてきた本 戦国人物伝 今川義元 (コミック版日本の歴史) 作者: すぎたとおる,玉置一平,加来耕三 出版社/メーカー: ポプラ社 発売日: 2017/04/28 メディア: 単行本 この商品を含むブログを見る

Reasoned Schemer (44) 10章 walkまで

10章は処理系を書く話っぽいので ここからひさしぶりに写経モードで そういえば、ここで書く処理系はminiKanrenと呼ばれるものらしい ファイル名つけようと思った時にふと名前が気になった 変数を定義

Reasoned Schemer (43) 9章 enumerate+o

(defrel (enumerate+o r n) (fresh (i j k) (bumpo n i) (bumpo n j) (+o i j k) (gen&test+o i j k) (== `(,i ,j ,k) r))) bumpo、gen&test+oはenumerate+oのヘルパー関数だったみたい (run* s (enumerate+o s '(1 1)))とやると0から3までの数をふたつと そ…

Reasoned Schemer (42) 9章 once, bumpo, gen&test+o

(defrel (onceo g) (condu (g #s) (#s #u))) これはただgを実行だけだけど成功するのは1回だけね、ってことだな (#s #u)は書かないといけないんだろうか

Reasoned Schemer (41) 9章 condu

(run* q (conda ((alwayso) #s) (#s #u)))はno value condaはquestionが成功なら次の行以降は実行しないんだけど これだと(alwayso)が成功し続けてその行の実行が終わらないので そこでconduの登場 こっちはcondaよりもさらに早く打ち切る questionが1回成功…

異糧妾御績紡・喜撰法師

異糧妾御績紡 あんまり完成度は上がらなかったあっちもこっちもバランスがおかしい何をどうしていいかよくわからなくなってる感がある

Reasoned Schemer (41) 9章 conda

9. Thin Ice もう章題を解釈するのはあきらめている この終盤で新しい構文登場

Reasoned Schemer (40) 8章 未体験ゾーン3

戻って本体 (logo n b q r) これはcondeなので1行ずつ見ていく 再帰はしてないな

Reasoned Schemer (39) 8章 未体験ゾーン2

(base-three-or-moreo n b q r) 名前からしてb(baseだろう)が3以上の時のn = b^q + rの関係に違いない baseが2のときはexp2o base-three-or-moreoにはcondeは出てこないので 全部いっぺんに見ないといけない いっぱい式があるけどどれが大事な式なのか