2016-05-03 3 views
0

Da in Scala Listen bauen tatsächlich wie (hier für List(1,2,3)) diese:Warum nicht umgekehrt Listen anders herum bauen und sie Elemente anhängen lassen?

[ 1 , [ 2, [ 3 , Nill ] ] ]   // (pseudo-code) 

es effizienter ist, neue Elemente, so zu tun, und deshalb :: Recht assoziativ (alle in https://stackoverflow.com/a/1162980/4533188 erklärt) ist - besser zu sein, lesbar (hier 1 :: 2 :: 3). Das beantwortet meine Frage, warum es gut ist, überhaupt eine richtige Verbindung zu haben. Aber warum haben die Designer von Lists diese einfach nicht wie

intern konstruiert und verwenden konventionelle linke Zuordnung?

Hier in einer Grafik, was mein Pseudo-Code bedeuten soll (da es nicht die „Links“ nicht zeigen, der verketteten Liste):

enter image description here

+1

Da die Liste in der Reihenfolge von vorne nach hinten durchlaufen werden müsste, müsste entweder O (n²) sein oder eine Zwischenreverse der Liste erstellt werden. – sjrd

+1

Ihr Beispiel ist ungültig (typweis). Meintest du "[[[Nill, 3], 2], 1]"? – Bergi

+0

Nein, ich denke ich meinte, was ich geschrieben habe. In der Tat ist es eine Abkürzung, da es eine baumartige Struktur sein sollte. – Make42

Antwort

Verwandte Themen