Dit is de samenvatting van het derde hoofdstuk van het vak Interpretatie van Computerprogramma's I. In deze samenvatting werd zowel alle informatie uit de slides als bijkomende informatie uit eigen notities opgenomen. Aan het einde van de samenvatting werden ook de herhalingsvragen opgelost
EIND...
Hoofdstuk 3: Uitgestelde (lazy) evaluatie
1 Context: normal vs. applicative order
1.1 Applicative order voor evaluatie van operands
• eval evalueert voor een procedure-oproep de operator en alle operands anticipatief
• apply ontvangt de resulterende procedure en lijst van waarden
1.2 Normal order voor evaluatie van operands
• eval evalueert voor een procedure-oproep alleen de operator maar nog niet de operands
• apply ontvangt de resulterende procedure en een lijst van expressies
o de evaluatie van elk van deze expressies wordt uitgesteld
▪ tot haar waarde geprint moet worden op de read-eval-print loop
▪ tot haar waarde nodig is om te beslissen over de control flow (e.g.,
predicaat-deelexpressie van een if-expressie)
▪ tot haar waarde als concreet argument
moet dienen voor een primitieve die
“strikt” is in de corresponderende
parameter
• Voorbeeld: “+” is strikt in elk van zijn parameters maar cons-stream
niet in 2e parameter
2 Voorstelling van uitgestelde waarden: thunks
1
, (define (delay-it exp env)
(list 'thunk exp env))
Env wordt bijgehouden omdat, wanneer expressie uiteindelijk wel
geëvalueerd kan worden, we een env nodig hebben.
(define (thunk? obj)
(tagged-list? obj 'thunk))
(define (thunk-exp thunk)
(cadr thunk))
(define (thunk-env thunk)
(caddr thunk))
3 Uitgestelde waarden berekenen
(define (force-it obj)
Obj is een thunk of een waarde
(if (thunk? obj)
Als het nog een thunk is, actual-value berekenen
(actual-value (thunk-exp obj) (thunk-env obj))
Anders gewoon waarde teruggeven → recursie stopt
obj))
(define (actual-value exp env)
(force-it (eval exp env)))
Uit eval komt een waarde of een thunk → forceren
4 Aanpassing van de read-eval-print loop
(define input-prompt ";;; L-Eval input:")
(define output-prompt ";;; L-Eval value:")
2
Les avantages d'acheter des résumés chez Stuvia:
Qualité garantie par les avis des clients
Les clients de Stuvia ont évalués plus de 700 000 résumés. C'est comme ça que vous savez que vous achetez les meilleurs documents.
L’achat facile et rapide
Vous pouvez payer rapidement avec iDeal, carte de crédit ou Stuvia-crédit pour les résumés. Il n'y a pas d'adhésion nécessaire.
Focus sur l’essentiel
Vos camarades écrivent eux-mêmes les notes d’étude, c’est pourquoi les documents sont toujours fiables et à jour. Cela garantit que vous arrivez rapidement au coeur du matériel.
Foire aux questions
Qu'est-ce que j'obtiens en achetant ce document ?
Vous obtenez un PDF, disponible immédiatement après votre achat. Le document acheté est accessible à tout moment, n'importe où et indéfiniment via votre profil.
Garantie de remboursement : comment ça marche ?
Notre garantie de satisfaction garantit que vous trouverez toujours un document d'étude qui vous convient. Vous remplissez un formulaire et notre équipe du service client s'occupe du reste.
Auprès de qui est-ce que j'achète ce résumé ?
Stuvia est une place de marché. Alors, vous n'achetez donc pas ce document chez nous, mais auprès du vendeur lennyS. Stuvia facilite les paiements au vendeur.
Est-ce que j'aurai un abonnement?
Non, vous n'achetez ce résumé que pour €3,48. Vous n'êtes lié à rien après votre achat.