Skip to content

Latest commit

 

History

History

01

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

Time 1

Jeg ga noen formaninger/tips:

  • Les boka
  • Notér begreper som brukes i læretimen
  • Test ut koden som blir gjort i forelesning -- sørg for at du forstår det

Jeg viste også kjapt hvordan DrRacket fungerer.

Deretter gjorde vi noen samarbeidsoppgaver fra gruppelærer Håkon sitt opplegg:

  • 1
  • 2 (ikke d)
  • 3

Backup av oppgavene finnes også her (i dette repoet).

Fasit

1) Ett aspekt er at det er programmering uten sideeffekter. En sideeffekt er at det er noe som endres; en funksjon har en sideeffekt hvis den endrer tilstand utenfor seg selv. Ren funksjonell kode vil alltid returnere det samme gitt de samme argumentene.

2)

  • a) (+ 3 (- 9 5)) => (+ 3 4) => 7
  • b) Scheme bruker en parentesbasert prefiksnotasjon. Det vil si at man for hver parentes har man en operator og evt. noen operander. Sammensatte uttrykk evalueres slik at operatoren anvendes på operandene til vi bare har primitive datatyper igjen. De primitive er da tall, strenger (og karakterer) og booleans.
  • c)
(define foo 4)
(* (+ foo 3)
    (- (/ 25 5)
        2))
=> (* (+ 4 3) (- (/ 25 5) 2))
=> (* 7 (- (/ 25 5) 2))
=> (* 7 (- 5 2))
=> (* 7 3)
=> 21

3) Definere i Scheme

  • a)
(define double (lambda (x) (* x 2)))
(define (double x) (* x 2))
  • b)
(define avg (lambda x y) (/ (+ x y) 2))
(define (avg x y) (/ (+ x y) 2))

Helt til slutt tok vi denne Kahooten, før vi jobbet med oblig.