Scheme, dus

Scheme is een dialect van Lisp (ook wel: Lots of irritating silly parenthesis) en dat is dus een leuke taal. Tip: schrijf je source code in emacs, want die telt automatisch je haakjes, en reken maar dat je dat wilt!

Hoe werkt dat dan?

Nou kijkbuiskindertjes, jullie zijn wel erg nieuwsgierig vandaag! De opbouw van Scheme is ruwweg als volgt:

( commando argument1 argument2 arg... )

Stel je voor dat ik een variabele wil declareren met een bepaalde waarde, dan doe ik dat als volgt: (commentaar begint met een ;)

; pi (een getal)
(define pi 3.1415926535)
; een string
(define voorbeeld-string-variabele "dus...")

Vergelijken van waarden:

; dit is waar: retourneert de waarde #t
(eqv? 5 5)
; onwaar: retourneert #f
(eqv? pi 2)
; strings vergelijk je met equal?
(equal? voorbeeld-string-variabele "dus niet")

Je kunt nieuwe waarden toekennen met het commando set! Operatoren werken met een prefix-notatie, dus:

(set! acht (+ 3 5))

De if-then-else werkt als volgt:

(if (> a b)
; then-gedeelte
(write "a groter dan b")
; else-gedeelte
(write "a kleiner of gelijk aan b")
)
; let op het sluithaakje van de if

Negaties van boolean zul je ook nodig hebben. Dat doe je als volgt:

(if (not(equal? instelling "ijverig")) (set! instelling "lui"))

Een variabele kun je als volgt een boolean waarde geven:

;; initialisatie
(define boolean #t) ;; waar
(define boolean #f) ;; niet waar
;; Dit kun je later natuurlijk weer veranderen:
(set! boolean #f) ;; etc.

Een andere handige constructie is "cond". dit is vergelijkbaar met een switch in java of een case in pascal. Het gaat zo:

(cond
((equal? kiezer "rechtse-bal") (kies "vvd"))
((equal? kiezer "rooie-rakker") (kies "sp"))
((equal? kiezer "harry-potter-fan") (kies "cda"))
((equal? kiezer "hoog-bejaard") (kies "vsp"))
(else (random-vote)))

Functies definieer je als volgt (zie ook onze voorbeeldfiles):

; draait n stappen en loopt daarna n stappen
(define (turn-and-move n)
(robot-turn n)
(robot-move n))

Let erop dat je voor een functieaanroep ook haakjes gebruikt. Dus je doet dan:

; draait een rondje en loopt 4 stappen
(turn-and-move 4)

Hiermee heb je in principe genoeg kennis om een leuk programmaatje te schrijven in Scheme. Veel succes!

Met dank aan Reindert