OK, оператор "и" в OCaml равен &&
.Поскольку аргументы bool
, а не bool opt
, у вас не может быть выражения Some x && Some y
.
Более того, ваша функция whatt
(по гипотезе) уже возвращает bool opt
.Так что вам не нужно применять Some
к нему, чтобы получить bool opt
.Другими словами, Some (whatt x)
имеет тип bool opt opt
, который еще дальше от работы.
В-третьих, вам нужно решить, каким будет значение вашего результата, если whatt
вернет None.Допустим, вы хотите обработать Some false
и None
как фактически ложные.Тогда вы могли бы написать что-то вроде этого:
let bvalue = function Some b -> b | None -> false
bvalue (whatt x) && bvalue (whatt s) && bvalue (whatt l)
Возможно, это не совсем то, что вы ищете, но, возможно, это даст вам некоторые идеи.