0% found this document useful (0 votes)
30 views1 page

Fluxuri Cheatsheet

The document provides examples of using Racket's stream functions to define infinite streams such as the powers of 2, the Fibonacci sequence, and the reciprocal of the factorials, as well as functions like stream-map and stream-filter that operate on streams. It demonstrates how to define streams recursively using named let and how streams allow defining infinite sequences without needing an explicit generator. Common stream functions like stream-first, stream-rest, stream-empty?, stream-cons, and stream-zip-with are also illustrated.

Uploaded by

Vlad Popescu
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
30 views1 page

Fluxuri Cheatsheet

The document provides examples of using Racket's stream functions to define infinite streams such as the powers of 2, the Fibonacci sequence, and the reciprocal of the factorials, as well as functions like stream-map and stream-filter that operate on streams. It demonstrates how to define streams recursively using named let and how streams allow defining infinite sequences without needing an explicit generator. Common stream functions like stream-first, stream-rest, stream-empty?, stream-cons, and stream-zip-with are also illustrated.

Uploaded by

Vlad Popescu
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 1

Racket CheatSheet

Laborator5

Promisiuni Fluxuri definite explicit Fluxuri definite implicit


delay force Generator recursiv cu oricât, i parametri Fără generator explicit
(define p (delay (+ 1 2))) definit ı̂n mod uzual cu named let
1 Dă explicit primii 1-2 termeni, apoi init, iază
2 p #<promise:p> 1 ;; fluxul puterilor lui 2 o prelucrare folosind (de obicei)
3 2 (define powers-of-2
4 ;; force forteaza evaluarea
funct, ionale pe fluxuri
3 (let loop ((n 1))
5 (force p) 3 4 (stream-cons n (loop (* n 2))))) 1 ;; stream-zip-with este definita de voi
6 5 2 ;; in laborator, nu exista in Racket
7 ;; un force subsecvent ia rezultatul din cache 6 ;; fluxul Fibonacci 3
8 (force p) 3 7 (define fibonacci 4 ;; fluxul puterilor lui 2
8 (let loop ((n1 0) (n2 1)) 5 (define powers-of-2-a
9 (stream-cons n1 (loop n2 (+ n1 n2))))) 6 (stream-cons
Constructori fluxuri 10 7 1
11 ;; fluxul 1/(n!) 8 (stream-zip-with +
empty-stream stream-cons
12 ;; (cu care putem aproxima constanta lui Euler) 9 powers-of-2-a
1 empty-stream #<stream> 13 (define rev-factorials 10 powers-of-2-a)))
2 (stream-cons 1 empty-stream) #<stream> 14 (let loop ((term 1) (n 1)) 11

3 15 (stream-cons term (loop (/ term n) (add1 12 (define powers-of-2-b


4 (define ones (stream-cons 1 ones)) fluxul de 1 n))))) 13 (stream-cons
5 16 14 1
6 ;; fluxul numerelor naturale 17 ;; testare: stream-take este definita de noi 15 (stream-map (lambda (x) (* x 2))
7 (define naturals 18 ;; in laborator, nu exista in Racket 16 powers-of-2-b)))
8 (let loop ((n 0)) 19 17

9 (stream-cons n (loop (add1 n))))) 20 ;; rezultat '(1 2 4 8 16 32 64 128 256 512) 18 ;; fluxul Fibonacci
21 (stream-take powers-of-2 10) 19 (define fibonacci
22 20 (stream-cons
23 ;; rezultat '(0 1 1 2 3 5 8 13 21 34) 21 0
Operatori pe fluxuri
24 (stream-take fibonacci 10) 22 (stream-cons
stream-first stream-rest stream-empty? 25 23 1
26 ;; rezultat 2.7182815255731922 24 (stream-zip-with +
1 (stream-first naturals) 0 fibonacci
27 (apply + 0.0 (stream-take rev-factorials 10)) 25
2 (stream-rest (stream-cons 2 ones)) fluxul de 1 26 (stream-rest fibonacci)))))
3
27
4 (stream-empty? empty-stream) #t 28 ;; fluxul 1/(n!)
5 (stream-empty? ones) #f AS, A DA / AS, A NU
29 (define rev-factorials
Folosit, i interfat, a Racket pentru fluxuri! 30 (stream-cons
31 1
Funct, ionale pe fluxuri 1 DA: (stream-cons x S) NU: (cons x (lambda () S)) 32 (stream-zip-with /
2 NU: (cons x (delay S)) 33 rev-factorials
stream-map stream-filter 3 DA: (stream-rest S) NU: ((cdr S)) 34 (stream-rest naturals))))
4 NU: (force (cdr S))
1 ;; stream-map merge numai cu functii unare
2 (stream-map sqr naturals) fluxul 0, 1, 4..
3 Folositi cu incredere!
4 (stream-filter even? naturals) fluxul nr pare
http://docs.racket-lang.org/

You might also like