Dieses Problem ist schwierig, weil Sie zwei Listen durchlaufen müssen. Wenn Sie es als eine Funktion schreiben, müssen Sie zwei Rekursionen verfolgen.
Ein Weg, um es zu nähern, ist mit einem einfacheren Problem zu beginnen. Angenommen, Sie haben eine Liste von Strings l
und eine Zeichenfolge s
. Können Sie eine Funktion schreiben, die eine neue Liste mit s
an die einzelnen Zeichenfolgen in l
erstellt?
Es gibt eine einfache Lösung für dieses einfachere Problem mit List.map
. Oder Sie können eine explizit rekursive Funktion schreiben.
Danach haben Sie nur eine verbleibende Rekursion, um herauszufinden, was einfacher sein kann.
aktualisieren
Jetzt haben Sie Ihre Funktion, die Sie einfach eine Funktion, die eine Zeichenfolge an alle Elemente der ersten Liste von Strings anhängt schreiben kann. Das Layout würde wie folgt aussehen:
let cross_concat list1 list2 =
let concat_string_to_list1 s = concat_string_to_list list1 s in
...
Mit dieser Definition Sie List.map
wieder verwenden können, die endgültigen Ergebnisse zu bekommen (müssen die resultierenden Listen von Zeichenketten in einer Liste verketten). Oder Sie können List.fold_right
verwenden, um das Ergebnis aufzubauen, während Sie gehen. Oder Sie können Ihre eigene rekursive Funktion schreiben.
Wenn Sie nicht zu viele rekursive Funktionen geschrieben haben, wäre dies etwas zum Durchdenken.
Bitte lesen Sie: https://meta.stackoverflow.com/questions/334822/how-do-i-ask-and-answer-homework-questions und versuchen Sie, die Art und Weise zu ändern, wie Sie Fragen stellen. Sie geben uns nicht die geringste Mühe, uns zu zeigen, dass Sie überhaupt über das Problem nachgedacht haben. – Lhooq
Sie möchten das kartesische Produkt von 2 Listen berechnen und dann jedes Paar Elemente auf etwas anderes abbilden. –