Ich stolperte über this question und ich erkannte, dass ich eine Menge Sachen aus meiner nicht prozeduralen Programmierklasse vergessen habe.unwichtige Frage über Erlang und funktionale Programmierung
Als ich versuchte, den Code zu verstehen, schien es mir, dass es schrecklich langatmig ist, also versuchte ich, es zu verkürzen. Macht dies das Gleiche wie der ursprüngliche Code?
merge([X|Xs], Ys) -> [X | merge(Ys, Xs)];
merge([], []) -> [].
... Ich habe noch nie zuvor gearbeitet mit erlang, so dass ich vielleicht einige Syntaxfehler :-)
Wenn ich eine Liste mit der leeren Liste zusammenführe, gibt dieser Code die ursprüngliche Liste zurück? Der Mustervergleich sieht für mich nicht vollständig aus. –
die ursprüngliche Aufgabe war für zwei Listen der gleichen Länge – cube
Cube ist richtig - und wenn Sie versuchten, den ursprünglichen Code auf zwei Listen ungleicher Länge zu laufen, würde es scheitern. Die Endungsklausel dort stimmt mit mergeR ([], [], Zs überein) Wenn Xs und Ys unterschiedliche Längen hatten, würde es sich als eine Liste ausgeben, die vor der anderen erschöpft ist. –