Hallo Gunnar,
Ein paar Anmerkungen:
result.insert(currentNode.position, s);
Um die Reihenfolge zu wahren hab ich eine insert-Methode erfunden.
Die Kontext-Position ist tatsächlich eine der Informationen die beim Evalulieren des Sequenz Konstruktors laut XSLT 2.0 vorhanden sein dürfen.
Das ist meiner Meinung nach einer der Hauptvorteile an Funktionalen Programmiersprachen und mit ein Grund, weswegen die in sehr nerdigen Zirkeln plötzlich wieder hip werden
Zirkeln wie programming reddit, wo sich seit einem Jahr oder gefühlt ein Drittel der Postings mit Funktionalen Sprachen wie Haskell beschäftigen.
Stell Dir mal vor, Du wärst verrückt und hättest das gesamte spiderbare Internet in XHTML normalisiert und in einer einzigen XML-Datei gespeichert. Und nun wolltest Du ein neues XML-Dokument erstellen, dass die Adressen aller Webseiten enthält, die auf http://de.selfhtml.org/ verlinken.
Mit Entschuldigung an Joel Spolsky.
(1) In echtem JS 1.6:
var result = seq.map(construct)
Dass nur in Mozilla oder unter Zuhilfename eines Frameworkes funktioniert, sorry.
Tim