Ich versuche, eine Funktion, die 2 Listen gegeben ('a list
und 'b list
) gibt eine ('a*'b) list
, die es das kartesische Produkt beider Listen ist. Ich habe das versucht, aber es bekommt 'a list list
statt 'a list
, gleich für 'b
. Also, ich frage, ob jemand mir sagen könnte, wo ich falsch liege und warum OCaml 'a list list
statt 'a list
fragt.Cartesian Produkttyp Fehler
let lprod l1 l2 =
let rec aux lista la lb =
match la,lb with
[],_ -> lista
|ha::ta,[] -> aux lista ta l2
|ha::ta,hb::tb -> aux (ha,hb) la tb
in aux ([],[]) l1 l2;;
Ja ich diesen Akkumulator will, aber wie kann ich eine Liste von Tupeln stattdessen ein Tupel von Anrufliste in dem aux? –
@JulioVillanueva Siehe die aktualisierte Antwort für eine funktionierende Implementierung – glennsl
Dies funktioniert fast perfekt. Es gibt das Gegenteil von dem, was ich will, also habe ich: | [], _ -> rev acc, um zu bekommen, was ich brauche, danke –