kb84tkhrのブログ

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

AWSのお勉強始めました

今のところメインの目的は資格取得なので
使ってみました、じゃなくてほんとにお勉強

今はスマホタブレットでも勉強できて便利ですね
回線はケチり気味なプランなので動画とかだとパケットを使うのが気になりますが
まあなんとか足りるかな
速度制限がかかるとちょっと動画は厳しい

ついでに英語の勉強しちゃおうってことで英語の教材でやってます
一石二鳥していかないとあれこれは無理なので

Reasoned Schemer (012) rembero続き

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

(a b _0 d _1 e)に至ってはなぜ_0が消えないのか
「その他」なケースではyは消えるはずな気がするんだけど
なにか根本的に理解できてないところがある

でも先へ進む
もしかしたら説明が出てくるかもしれないし

次は(run* (y z) (rembero y(,y d ,z e) (,y d e)))を見ていきます
(y z)が見えたほうが理解の足しになるかも

ひとつめの値は(d d)

remberoはリスト`(,y d ,z e)からyを削除して、リスト`(d ,z e)を作ります。

やっぱり具体的な値にする前に削除してるのか・・・

ふたつめの値は(d d)

remberoはリスト`(,y d ,z e)からdを削除して、リスト`(,y ,z e)を作ります。

ひとつめの値と同じだけど見つけ方が違うとまた出てくるんだな

みっつめの値は(_0 _0)
これも右側が消えてることになる

remberoはリスト`(,y d ,z e)からzを削除して、リスト`(,y d e)を作ります。

最後は(e e)

remberoはリスト`(,y d ,z e)からeを削除して、リスト`(,y d ,z)を作ります。

どうやって値を探してるんだろう
カンのいいひとだともう探索のアルゴリズムが見えてきてるんだろうなあ

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) x)))

の値は`((cake & ice cream d t . _0))だけ

続きを読む

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)))

ほぼそのままですね

続きを読む