2009-02-21 11 views
6

Jestem początkującym programistą programowania funkcjonalnego i dopiero rozpocząłem program nauczania (choć jest to półfunkcjonalny język programowania). Zrobiłem kilka tutoriali na listach, które są dobrze obsługiwane w Scheme. Zastanawiałem się, czy Scheme ma wsparcie dla błądzenia się z tablicami?Reprezentacja macierzy w schemacie

Czy muszę zdefiniować własny typ danych? Listy są indukcyjnie zdefiniowanymi typami danych. Jeśli mam zdefiniować tablice jako nowy typ danych, czy można je zdefiniować indukcyjnie?

Proszę o pomoc. Z góry dzięki.

Pozdrawiam

Odpowiedz

9

Poszukujesz wektora.

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

Dzięki za wprowadzenie mnie do pojęcia wektora w schemacie. Po prostu podniosłem to na duchu i wygląda na to, że można patrzeć w stałym czasie (tak jak w tablicach). Wydaje się, że jest to typ danych ustalony w przestrzeni - podobnie jak tablica. Pozdrawiam – Arnkrishn

+1

Pamiętaj, że stałe wektorowe (przynajmniej w R5RS) muszą być cytowane. Ostatnim przykładem powinno być '(define arr '# (1 2 3))'. Uwaga: niektóre implementacje powodują, że oferta jest opcjonalna. – soegaard

1

można reprezentować tablice przy użyciu wektorów. Wektory na Schemacie nie są funkcjonalne w tym sensie, że można je zmutować (używając wektora-zestawu!). Jednak można również zmutować listę za pomocą set-car! i set-cdr !.