b'\n_START_ARTICLE_\nScheme\n_START_SECTION_\nDe Scheme standaard\n_START_PARAGRAPH_\nRegelmatig wordt de taal ge\xc3\xbcpdatet. Er worden dan wijzigingen aan de standaard aangebracht. De huidige standaard dateert van 2013 en heet R7RS, wat staat voor Revised\xe2\x81\xb7 Report on the Algorithmic Language Scheme, naar het document met de offici\xc3\xable beschrijving van de taal._NEWLINE_Bovendien bevat de taal een reeks van zeer nuttige bibliotheken. Dit zijn de zogenaamde SRFI\'s, wat staat voor Scheme Request For Implementation._NEWLINE_Scheme streeft normaal minimalisme na. Dat was ook het geval tot en met R5RS. R6RS bracht echter grote wijzigingen toe aan de taal. Daarom besliste het Scheme Steering Committee, dat instaat voor de standaardisatie van de taal, om te taal te splitsen. De ene tak zal er een uitgebreide, moderne programmeertaal zijn, terwijl de andere tak het minimalisme behoudt. De minimalistische specificatie van R7RS werd reeds geratificeerd in 2013.\n_START_SECTION_\nKenmerken\n_START_PARAGRAPH_\nIn deze sectie zullen we enkele kenmerken van Scheme opsommen. Deze lijst is niet exhaustief.\n_START_SECTION_\nFunctieaanroep en evaluatie van argumenten\n_START_PARAGRAPH_\nIn Scheme worden alle argumenten van een functieaanroep ge\xc3\xabvalueerd v\xc3\xb3\xc3\xb3r de eigenlijke aanroep. De volgorde waarin de argumenten ge\xc3\xabvalueerd worden is niet bepaald. Men kan dus niet aannemen dat deze evaluatie van links naar rechts of in eender welke andere volgorde gebeurt. Hier moet men dus rekening mee houden wanneer men argumenten meegeeft die een neveneffect veroorzaken._NEWLINE_Scheme kent een klein aantal special forms waarbij de argumenten op een andere manier uitgewerkt worden. Een goed voorbeeld hiervan is de if special form. Deze heeft volgende syntaxis:_NEWLINE_(if <predicaat> <consequent> <alternatief>)_NEWLINE_Wat we natuurlijk niet willen is dat alle argumenten van een aanroep op voorhand ge\xc3\xabvalueerd worden, afhankelijk van de waarde van het predicaat mag ofwel het consequent ofwel het alternatief uitgevoerd worden. Dit gedrag kan men enkel verkrijgen bij special forms. Verder kunnen macro\'s gebruikt worden om zelf procedures/special forms met eigen evaluatieregels te schrijven. Zonder gebruik van special forms is het onmogelijk om volgend stuk code te schrijven:_NEWLINE_(define (deling teller noemer)_NEWLINE_  (if (= noemer 0)_NEWLINE_      (display "Kan deling niet uitvoeren, noemer is nul!")_NEWLINE_      (/ teller noemer))) ; Indien de if de normale regels zou volgen, zou ook dit alternatief uitgewerkt worden als de noemer nul is!; Aanroep van de procedure geeft het verwachte resultaat.(deling 14 2)> 7; Er treedt geen error op wanneer de noemer nul is.(deling 100 0)> Kan deling niet uitvoeren, noemer is nul!'