2016-09-19 19 views
0

Ich habe gerade Ocaml abgeholt und bin in rekursive Iteration und all das hineingegangen. Ich habe versucht, durch ein Tupel zu iterieren, wurde aber ratlos. Nehmen wir an, ich möchte ein Tupel durchlaufen und jedes Element auf die Hälfte teilen. Wie gehe ich vor? Vor allem, wenn die Größe des Tupels nicht bekannt ist, sondern einfach als Variable angegeben wird? Nun, wenn ich weiß, dass es sich um einen 2-Element Tupel war, kann ich tunOcaml- Iterating durch ein Tupel

let rec divide n = match with (a,b) -> ... 

Also das ist, wo ich bin stecken. Wie finde ich heraus, wozu das Argument passt? Ich weiß, dass Tupel nach der Erstellung repariert werden, so dass ich sie nicht an Ort und Stelle ändern kann. Wie würde ich also ein neues Tupel erstellen, das Elemente aus dem ursprünglichen Tupel/2 enthält? Jede Hilfe wird geschätzt.

+4

Ich bin nicht 100% sicher über Ocaml, aber in der eng verwandten Sprache ML ist es einfach unmöglich, Code zu schreiben, der über Tupel von beliebiger Artigkeit polymorph ist. Siehe hierzu: http://stackoverflow.com/q/14416900/4996248 –

Antwort

3

John Coleman hat Recht, es gibt keine Möglichkeit, OCaml-Code zu schreiben, der über Tupel unterschiedlicher Größe polymorph ist. Sie können Code schreiben, der für eine bestimmte Tupelgröße funktioniert. Sie können auch Code schreiben, der für eine beliebige Anzahl von Werten eines bestimmten Typs funktioniert - Sie würden dafür eher eine Liste als ein Tupel verwenden.

Höchstwahrscheinlich können Sie Ihren Code mit Listen arbeiten.