Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
37
Task/Ackermann-function/Ol/ackermann-function.ol
Normal file
37
Task/Ackermann-function/Ol/ackermann-function.ol
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
; simple version
|
||||
(define (A m n)
|
||||
(cond
|
||||
((= m 0) (+ n 1))
|
||||
((= n 0) (A (- m 1) 1))
|
||||
(else (A (- m 1) (A m (- n 1))))))
|
||||
|
||||
(print "simple version (A 3 6): " (A 3 6))
|
||||
|
||||
; smart (lazy) version
|
||||
(define (ints-from n)
|
||||
(cons* n (delay (ints-from (+ n 1)))))
|
||||
|
||||
(define (knuth-up-arrow a n b)
|
||||
(let loop ((n n) (b b))
|
||||
(cond ((= b 0) 1)
|
||||
((= n 1) (expt a b))
|
||||
(else (loop (- n 1) (loop n (- b 1)))))))
|
||||
|
||||
(define (A+ m n)
|
||||
(define (A-stream)
|
||||
(cons*
|
||||
(ints-from 1) ;; m = 0
|
||||
(ints-from 2) ;; m = 1
|
||||
;; m = 2
|
||||
(lmap (lambda (n)
|
||||
(+ (* 2 (+ n 1)) 1))
|
||||
(ints-from 0))
|
||||
;; m = 3
|
||||
(lmap (lambda (n)
|
||||
(- (knuth-up-arrow 2 (- m 2) (+ n 3)) 3))
|
||||
(ints-from 0))
|
||||
;; m = 4...
|
||||
(delay (ldrop (A-stream) 3))))
|
||||
(llref (llref (A-stream) m) n))
|
||||
|
||||
(print "extended version (A 3 6): " (A+ 3 6))
|
||||
Loading…
Add table
Add a link
Reference in a new issue