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

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!