2009/04/08

[Scheme]Numbers Gamesのことを考えていてreversed手続きを思い出した

よって少し書いてみたが何がしたいのだろうか。

reversed

 

しばらくお馴染みの手続き・・・

 

1を加算する手続き

(define add1
  (lambda (n)
    (+ n 1)))

 

1を減算する手続き

(define sub1
  (lambda (n)
    (- n 1)))

 

nにmを加算する手続き

(define plus
  (lambda (n m)
    (if (zero? m)
        n
        (add1 (plus n (sub1 m))))))

 

nからmを減算する手続き

(define minus
  (lambda (n m)
    (if (zero? m)
        n
        (sub1 (minus n (sub1 m))))))

 

んで考えたのはこれ。

元々は、同じようなところを抜き出したかった。

結果的に抜き出せたような抜き出せてないような。なんか本当にやりたいのはこういうことじゃない・・・。

(define numloop
  (lambda (p f d)
    (lambda (n m)
      (if (zero? m)
          n
          (p (f n (d m)))))))

 

 

((numloop sub1 minus sub1) 5 4)
;; => 1

 

(define plus
  (lambda (n m)
    ((numloop add1 plus sub1) n m)))

 

(define minus
  (lambda (n m)
    ((numloop sub1 minus sub1) n m)))

 

(plus 5 6)
;; => 11

 

(minus 5 4)
;; => 1

 

道程はまだまだそーとー長いなー。

0 件のコメント:

コメントを投稿