2016-07-22 5 views
-7

Мне нужно перебирать список списков в ocaml. Как я могу перебирать список списков, сравнивая каждый элемент каждого списка с нолем? Если элемент больше нуля, он возвращает false и останавливает рекурсию.OCaml: Список списков

функция должны иметь подпись: - «массив» ИНТ список список> Bool

Пожалуйста, не показывать мне способы, используя или ключевое слово "in". Любая помощь будет замечательной!

+3

Вы должны показать нам, что вы сделали до сих пор. Это не то место, где можно получить бесплатный ответ на домашние задания. – camlspotter

+2

Используйте List.fold и List.forall – s952163

+1

* «Пожалуйста, не показывайте мне способы использования« массива »или ключевое слово« in ». Любая помощь будет замечательной!» *: Хорошо. Пожалуйста, покажите нам, что вы сделали до сих пор. ;-) – Lhooq

ответ

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

Согласно OCAML документации, for_all p [a1; ...; an] проверяет все элементы списка удовлетворяют предикат р.

Поэтому, если какой-либо элемент больше 0, предикат fun x -> x <= 0 будет оцениваться как false, поэтому оба значения List.for_all s будут оцениваться как ложные.

Смежные вопросы