Scheme

Från Wikipedia
Hoppa till: navigering, sök
Scheme stöder lambdakalkyl och har därför tecknet lambda som ett av sina "varumärken"

Scheme är en dialekt av programmeringspråket Lisp, uppfunnet av Guy Lewis Steele Jr. och Gerald Jay SussmanMIT och dök upp någon gång på 1970-talet. Det är en av de två största dialekterna tillsammans med CommonLisp. Filosofin bakom språket är minimalistisk, det finns väldigt begränsade programbibliotek utan användaren får själv skapa de flesta funktioner från grunden. Scheme används i undervisningssyfte på flera universitet i Sverige och runt om i världen. [1] Många kurser använder sig av Sussmans bok Structure and Interpretation of Computer Programs.

Scheme använder sig enligt språkdefinitionen av svansrekursion [2]. Det blir på så sätt lätt att göra en iterativ process av en rekursiv funktion.

Programexempel[redigera | redigera wikitext]

Det klassiska programmet "Hello, world!"

(display "Hello, world!")
(newline)

Rekursiv funktion som räknar ut fakulteten av ett tal n:

(define (fakultet n)
  (if (= n 0)
    1
    (* n (fakultet (- n 1)))))

Denna funktion kommer att bli en rekursiv process, för att ett extra tal måste hållas i minnet varje gång funktionen anropas.

Om man istället betraktar den här varianten för faktultetsberäkning:

(define (fakultet n)
  (define (fakultet-iter n sum)
    (if (= n 0)
       sum
       (fakultet-iter (- n 1) (* n sum))))
   (fakultet-iter n 1))

Här har vi en inre hjälpfunktion som håller reda på mellanvärdena vid fakultetsberäkningen och samlar upp dem. Hjälpfunktionen är rekursiv, men på grund av Schemes svansrekursion kommer denna process bli iterativ, och därmed inte kräva lika mycket av datorns minne.

Källor[redigera | redigera wikitext]

  1. ^ MIT-Press, lista över skolor som använder Scheme i undervisningen http://mitpress.mit.edu/sicp/adopt-list.html
  2. ^ Michael Sperber et. al. (red.) Revised6 Report on the Algorithmic Language Scheme http://www.r6rs.org/final/html/r6rs/r6rs.html

Litteratur[redigera | redigera wikitext]

  • Dybvig R K The Scheme Programming Language, 2003

Externa länkar[redigera | redigera wikitext]