Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
;; Aplikatiivne püsipunktikombinaator (define Y1 (lambda (f) ((lambda (x) (f (lambda (y) ((x x) y)))) (lambda (x) (f (lambda (y) ((x x) y))))))) ;; Faktoriaal kasutades püsipunktikombinaatorit (define fact (let ((f (lambda (g) (lambda (n) (if (zero? n) 1 (* n (g (- n 1)))))))) (Y1 f))) ;; Striimid (define make-stream (lambda (value thunk) (cons value thunk))) (define the-null-stream (make-stream "end-of-stream" (lambda () the-null-stream))) (define stream-car car) ;; "Tavaline" striimi saba (define stream-cdr (lambda (stream) ((cdr stream)))) ;; Memoiseeriv striimi saba ;(define stream-cdr ; (lambda (stream) ; (if (pair? (cdr stream)) ; (cdr stream) ; (let ((s ((cdr stream)))) ; (set-cdr! stream s) ; s)))) (define stream-null? (lambda (stream) (eq? stream the-null-stream))) ;; Naturaalarvude striim (define nats-from (lambda (n) (make-stream n (lambda () (nats-from (+ 1 n)))))) (define nats (nats-from 0)) ;; Striimide "näitamine" (define show-stream (lambda (str n) (if (zero? n) (list '...) (cons (stream-car str) (show-stream (stream-cdr str) (- n 1)))))) ;; Striimide elementhaaval liitmine (define add-streams (lambda (str1 str2) (make-stream (+ (stream-car str1) (stream-car str2)) (lambda () (add-streams (stream-cdr str1) (stream-cdr str2)))))) ;; Fibonacci jada - kui soovid arvutada rohkem kui 25 elementi, ;; siis soovitav kasutada memoiseerivat striimi-saba protseduuri (define fibonacci (letrec ((fibo1 (make-stream 0 (lambda () fibo2))) (fibo2 (make-stream 1 (lambda () fibo3))) (fibo3 (add-streams fibo1 fibo2))) fibo1))