-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathlazy.rkt
More file actions
36 lines (29 loc) · 792 Bytes
/
lazy.rkt
File metadata and controls
36 lines (29 loc) · 792 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#lang racket
;descripción: función para calcular n-esimo término de la sucesión de fibonacci
;dom: enteros positivos + {0}
;rec: enteros positivos + {0}
;tipo recursión: arbórea - binaria
(define fib
(lambda (n)
;caso base
(if (<= n 1) ;n entero positivo + {0}
n ;solución conocida
(+ (fib (- n 2)) (fib (- n 1))) ;descomposición recursiva
)
)
)
;(fib 38) toma tiempo en evaluarse
(fib 38)
;evaluación perezosa de (fib 38)
;promesa vinculada a p2
(define p2 (lazy (fib 38)))
;p2 es una promesa
p2
;se puede forzar la evaluación de la promesa
;tomará tiempo en evaluarse
(force p2)
;la promesa ha sido cumplica
p2
;dado que la promesa ya se cumplió
;la próxima vez que se fuerza, el resultado se entrega de forma inmediata
(force p2)