2009-02-21 5 views
6

Ich bin ein Neuling im Bereich der funktionalen Programmierung und habe gerade angefangen, Scheme zu lernen (obwohl es eine semi-funktionale Programmiersprache ist). Ich habe einige Tutorials auf Listen gemacht, die in Scheme gut unterstützt werden. Ich habe mich gefragt, ob Scheme Unterstützung für das Hantieren mit Arrays bietet.Array-Darstellung in Schema

Oder muss ich meinen eigenen Datentyp definieren? Listen sind induktiv definierte Datentypen. Wenn ich Arrays als neuen Datentyp definieren soll, kann es dann induktiv definiert werden?

Bitte helfen. Vielen Dank im Voraus.

cheers

Antwort

9

Sie suchen nach Vektor.

(define arr (vector 1 2 3)) 
(define arr #(1 2 3)) 
+0

Vielen Dank für die Einführung in den Begriff des Vektors im Schema. Ich habe einfach nachgesehen und es scheint, man kann in konstanter Zeit nachsehen (genau wie in Arrays). Außerdem scheint es ein Datentyp zu sein, der im Raum fixiert ist - ähnlich wie ein Array. cheers – Arnkrishn

+1

Denken Sie daran, dass Vektorkonstanten (in mindestens R5RS) zitiert werden müssen. Das letzte Beispiel sollte '(definiere arr '# (1 2 3))' sein. Hinweis: Einige Implementierungen machen das Angebot optional. – soegaard

1

Sie können Arrays mit Vektoren darstellen. Die Vektoren in Schema sind nicht in dem Sinne funktionsfähig, dass man sie mutieren kann (mit Vektorsatz!). Aber auch Listen können mit Set-Car mutiert werden! und setzen-cdr !.