;1 ; In de originele opdracht had gestaan dat is-lijst een predikaat/test moest zijn, ; en voor niet-lijsten een foutmelding terug moest geven. Dit past niet samen. ; is-lijst is gewoon een functie, pas de functie uit opdracht 2 is ook een test. ; Mijn verontschuldigingen voor de fout en de ontstane verwarring. (define is-lijst (lambda (input) ; de functie verwacht 1 argument (if (not (list? input)) ; als de input geen lijst is, "De input had een lijst moeten zijn!" ; dan krijgen we een foutmelding ))) ; anders gebeurt er niets ;2 (define afscheid (lambda (input) ; de functie verwacht 1 argument (if (member input ; als de input in deze lijst met afscheidsuitdrukkingen staat, '( (dag) (doei) (tot ziens) (tot morgen) ) ) #t ; dan wordt #t teruggegeven #f ; anders wordt #f teruggegeven ))) ; alternatief: (define afscheid2 (lambda (input) ; de functie verwacht 1 argument (or (equal? input '(dag)) ; is de input gelijk aan '(dag) (equal? input '(doei)) ; of '(doei) (equal? input '(tot ziens)) ; of '(tot ziens) (equal? input '(tot morgen)) ; of '(tot morgen) ; het resultaat van de "or"-uitdrukking wordt teruggegeven ))) ;3 (define huiswerk-test (lambda (input) ; de functie verwacht 1 argument (if (member 'huiswerk input) ; als het woord huiswerk in de input voorkomt #t ; dan wordt #t teruggegeven #f ; anders wordt #f teruggegeven ))) (define huiswerk-antwoord (lambda () ; deze functie verwacht helemaal geen argument "Succes!" ; en geeft ook altijd hetzelfde terug )) ; dus eigenlijk doet dit hetzelfde als (define huiswerk-antwoord2 "Succes!") ; alleen moet je de functie met (huiswerk-antwoord) aanroepen ; terwijl je de waarde van de variabele gewoon met huiswerk-antwoord2 krijgt ;4 (define jij-bent-een-test (lambda (input) (if (< (length input) 3) ; dit hadden we nog niet en het hoefde ook niet echt #f (equal? (list (car input) ; is waar als de eerste drie woorden van de input (cadr input) (caddr input)) '(jij bent een) ; gelijk zijn aan '(jij bent een) )))) (define jij-bent-een-antwoord (lambda (input) (append '(ik ben helemaal geen) (cdddr input)))) ;5 (define zusters (lambda (ls) (if (and (equal? 4 (length ls)) ; de input moet vier woorden bevatten en (equal? (list (car ls) (cadr ls)) '(ik heb)) ; de eerste 2 moeten '(ik heb) zijn (number? (caddr ls)) ; het 3e moet een getal zijn (member (cadddr ls) '(zusters broers)) ; het 4e moet 'zusters of 'broers zijn ) (list 'maar 'ik 'heb ; antwoord begint met '(maar ik heb) (+ 1 (caddr ls)) ; getal eentje ophogen (cadddr ls) ; 'zusters of 'broers overnemen '!) ; '! erachter ))) ; beter is boven eigenlijk: (= 4 (length ls))