Добре дошли в DrRacket, версия 7.1 [3m]. Език: R5RS [потребителски]; memory limit: 128 MB. > (define undefined (delay (+ a 3))) > (force undefined) [image] [image] a: undefined; cannot reference an identifier before its definition > (force undefined) [image] [image] a: undefined; cannot reference an identifier before its definition > (define a 5) > (force undefined) 8 > (force undefined) 8 > (define undefined2 (lambda () (+ b 3))) > (undefined2) [image] [image] b: undefined; cannot reference an identifier before its definition > (define b 10) > (undefined2) 13 > (fact 10000) 28462596809170545..... > (* 0 (fact 10000)) 0 > (* 0 (fact 15000)) 0 > (* 0 (fact 20000)) 0 > (define bigpromise (* 0 (fact 20000))) > (define bigpromise (delay (* 0 (fact 20000)))) > (define bigpromise (delay (* 0 (fact 20000)))) > (force bigpromise) 0 > (force bigpromise) 0 > (force bigpromise) 0 > (define bigpromise2 (lambda () (* 0 (fact 20000)))) > (bigpromise2) 0 > (bigpromise2) 0 > (force undefined) [image] [image] undefined: undefined; cannot reference an identifier before its definition > (define undefined (delay (+ a 2))) > (force undefined) [image] [image] a: undefined; cannot reference an identifier before its definition > (define a 3) > (force undefined) 5 > (define a 10) > (force undefined) 5 > (set! a 15) > (force undefined) 5 > (define s (cons-stream 1 (cons-stream (* 0 (fact 20000)) the-empty-stream))) > (tail s) (0 . #) > s (1 . #) > (tail s) (0 . #) > (define promise (mydelay (+ a 3))) > promise # > (myforce promise) [image] [image] a: undefined; cannot reference an identifier before its definition > (define a 45) > (myforce promise) 48 > (define s (cons-stream 1 (cons-stream (* 0 (fact 20000)) the-empty-stream))) > s (1 . #) > (tail s) (0 . #) > (tail s) (0 . #) > (define s (enum 1 10000000000000000000000000000000000000000)) > s (1 . #) > (tail s) (2 . #) > (tail (tail s)) (3 . #) > (take 10 (enum 1 1000000000000000000000)) (1 2 3 4 5 6 7 8 9 10) > (take 10 (enum 1 5)) [image] [image] mcar: contract violation expected: mpair? given: () > (take 10 (enum 1 5)) (1 2 3 4 5) > (search-stream even? (enum 1 10)) (2 . #) > (search-stream even? (enum 1 10)) (2 . #) > (search-stream negative? (enum 1 10)) #f > (take 10 (from 20)) (20 21 22 23 24 25 26 27 28 29) > (take 20 fibs) (0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181) > (define (1+ n) (+ n 1)) > (take 10 (map-stream 1+ nats)) (1 2 3 4 5 6 7 8 9 10) > (take 10 (map-stream 1+ fibs)) (1 2 2 3 4 6 9 14 22 35) > (take 10 evens) (0 2 4 6 8 10 12 14 16 18) > (take 10 (zip-stream + nats nats)) [image] [image] zip-stream: undefined; cannot reference an identifier before its definition > (take 10 (zip-streams + nats nats)) (0 2 4 6 8 10 12 14 16 18) > (take 10 (zip-streams * nats nats)) (0 1 4 9 16 25 36 49 64 81) > (take 10 (zip-streams - nats nats)) (0 0 0 0 0 0 0 0 0 0) > (take 10 (map-stream + nats nats)) (0 2 4 6 8 10 12 14 16 18) > (take 10 (map-stream + nats nats nats)) (0 3 6 9 12 15 18 21 24 27) > (take 10 (map-stream + nats nats nats fibs nats)) (0 5 9 14 19 25 32 41 53 70) > (take 10 (map-stream exp nats)) (1 2.718281828459045 7.38905609893065 20.085536923187668 54.598150033144236 148.4131591025766 403.4287934927351 1096.6331584284585 2980.9579870417283 8103.083927575384) > (tail 10 (map-stream +)) [image] [image] tail: arity mismatch; the expected number of arguments does not match the given number expected: 1 given: 2 arguments> (take 10 ones) (1 1 1 1 1 1 1 1 1 1) > (map-stream + ones nats) (1 . #) > (take 10 (map-stream + ones nats)) (1 2 3 4 5 6 7 8 9 10) > (take 10 nats) (0 1 2 3 4 5 6 7 8 9) > (take 10 fibs) (0 1 1 2 3 5 8 13 21 34) > (take 10 (filter-stream (notdivides 2) nats)) (1 3 5 7 9 11 13 15 17 19) > (take 10 (filter-stream (notdivides 3) nats)) (1 2 4 5 7 8 10 11 13 14) > (take 10 (filter-stream (notdivides 5) nats)) (1 2 3 4 6 7 8 9 11 12) > (take 10 (sieve (from 2))) (2 3 5 7 9 11 13 15 17 19) > (take 10 (sieve (from 2))) (2 3 5 7 11 13 17 19 23 29) > (take 100 (sieve (from 2))) > (take 20 (sieve (from 2))) (2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71) > primes (2 . #) > (take 20 primes) (2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71) > (take 20 (sieve2 (from 2))) (2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71)