01 Introduction Flashcards
rekursjon
prosedyrer som kaller på seg selv
prosedyrer som førsteordens objekter
prosedyrer er datatyper på lik linje med tall, symboler, strenger, lister, etc.
høyere-ordens prosedyrer
prosedyrer som kan
1) ta prosedyrer som argumenter og
2) returnere prosedyrer
objektorientering via prosedyrer
innkapsulering av data i prosedyrer for å skjule tilstandsvariabler
strømmer og utsatt evaluering
definering av uendelige sekvenser og realisering av de enkelt elementene i disse ved utsatt evaluering etter behov
funksjonell vs imperativ programmering
Funksjonell programmering:
- Ingen tilstandsendringer
- En prosedyres returverdi vil alltid være den samme hvis argumentene er de samme
- Beregninger utføres som funksjonelle transformasjoner av data (kontra sekvensielle endringer av tilstandsvariabler ved imperativ programmering)
viktige egenskaper ved funksjonell programmering
Funksjoner danner byggeklossene.
Prosedyrene er uavhengige av ekstern tilstand, og påvirker ikke ekstern tilstand.
Dette gir enklere, sikrere, mer testbar og paralleliserbar kode.
Prosedyrer er data. Og disse kan representeres ved lister. Program = data.
Scheme
minimalistisk dialekt av Lisp
REPL
Read-Eval-Print Loop
primitive uttrykk i Scheme evaluerer til ___
seg selv
Hva evaluerer til true i Scheme?
Alt bortsett fra #f
notasjon i Scheme
parantesbasert prefixnotasjon
(Scheme)
Det første elementet i en liste er ___. Resten av lista består av ____.
operatoren, operandene (argumentene)
introdusere en leksikal variabel
(define foo 42)
define er en “special form”
Schemes evalueringsregel
1) Evaluér enkeltuttrykkene i sammensetningen
a) Atomære uttrykk evalueres til seg selv
b) Leksikale variabler og prosedyrer evalueres til verdiene de refererer til
c) Sammensatte uttrykk: anvend 1) igjen
2) Anvend operatoren på verdiene til de andre uttrykkene
Unntak: special forms
Evalueringsregelen er altså rekursivt definert
LISP står for…
List Processing
generell form for lambda-uttrykk
(define navn
(lambda (argumenter)
kropp))
kortform for lambda-uttrykk
(define (navn argumenter)
kropp)