2016-07-22 35 views
-7

Ich muss durch eine Liste von Listen in Ocaml durchlaufen. Wie kann ich durch eine Liste von Listen iterieren, die jedes Element jeder Liste mit Null vergleicht? Wenn ein Element größer als Null ist, wird false zurückgegeben und die Rekursion gestoppt.OCaml: Liste der Listen

die Funktion muss haben die Unterschrift: - "array" int list list> bool

Bitte zeige mir nicht, Wege mit oder das Schlüsselwort "in". Jede Hilfe wäre großartig!

+3

Sie sollten uns zeigen, was Sie bisher getan haben. Dies ist nicht der richtige Ort, um kostenlos Ihre Hausaufgaben zu beantworten. – camlspotter

+2

Verwenden Sie List.fold und List.forall – s952163

+1

* "Bitte zeigen Sie mir nicht Wege mit" Array. "Oder das Schlüsselwort" in ". Jede Hilfe wäre toll!" *: Ok. Bitte __do__ zeig uns, was du bisher gemacht hast. ;-) – Lhooq

Antwort

0
let all_lte_zero xss = List.for_all (fun xs -> List.for_all (fun x -> x <= 0) xs) xss;; 

Nach der ocaml Dokumentation, for_all p [a1; ...; an] prüft, ob alle Elemente der Liste das Prädikat p erfüllen.

Wenn also ein Element größer als 0 ist, wird das Prädikat fun x -> x <= 0 zu false ausgewertet, und beide Werte List.for_all werden zu false ausgewertet.