kb84tkhrのブログ

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

Reasoned Schemer (107) logo 続き6

    (fresh (q1 bwq1)
      (+o q '(1) q1)
      (*o bw q1 bwq1)
      (<o nw1 bwq1))

bwq1 = bw * (q + 1)
bの長さのq + 1倍っていうのはbq + 1乗の長さってことだな
nw1をまだ計算してないのにとりあえず比較するというその順番にいまだなじまない

freshで囲んでいるのはq1bwq1を局所化しているってことかな

    (exp2o n '() nw1)
    (+o nw1 '(1) nw)

nwnの長さ
つまりnの長さはbq + 1乗の長さより小さい
長さで比較してるのは楽をしたいから?
どっかにもあったなそういうの
上限が付けばいいってことだろう

    (/o nw bw qlow1 s)
    (+o qlow '(1) qlow1)
    (<=lo qlow q)

nの長さをbの長さで割ってるのはnbの何乗かって話か
qの長さはそれ以上ですよと

    (fresh (bqlow qhigh s qdhigh qd)
      (repeated-mulo b qlow bqlow)
      (/o nw bw1 qhigh s)
      (+o qlow qdhigh qhigh)
      (+o qlow qd q)
      (<=o qd qdhigh)

b^qlow=bqlow・・・はここではまだ使われてないな
qlowと似たような感じでqhighを求めて、
えーとqqlowqhighの間にありますよってことか

そういうqのうち最大のもの、っていうのもなかなか書きづらい気がする

これやってたってことでいいのかな

      (fresh (bqd bq1 bq)
        (repeated-mulo b qd bqd)
        (*o bqlow bqd bq)
        (*o b bq bq1)
        (+o bq r n)
        (<o n bq1)))))

(repeated-mulo b qd bqd) (*o bqlow bqd bq) (+o bq r n)は答えを出すのに必要なやつで
(*o b bq bq1) (<o n bq1)は範囲を特定する

・・・

まだすっかりわかった気にはなれないけどちょっと先に進みたい気分
結局関係プログラミング脳にはなれそうにない

だいたいどんなことをやってるのかはわかった
unnestingされてるから行数増えてるけど/oほど難しいことしてるわけじゃなかった