我有一个返回(char list)列表选项的函数,我正在尝试获取列表的大小:
let c = recherche m ledico in
match c with
| None -> Printf.printf "Non."
| Some [] -> Printf.printf "Oui."
| _ ->
let n = List.length c in
(...)
recherche
是向我返回(char list) list option
的函数,它可以返回None
,Some []
或Some [[...] ; ... ; [...]]
。我怎么找到这个长度?我看到this解决方案,但它不起作用:
Error: The function applied to this argument has type 'a list -> 'a list
This argument cannot be applied with label ~f
如何获得列表选项的大小?
答案 0 :(得分:3)
您只需要为列表命名即可。
| Some l -> let n = List.length l in ...
答案 1 :(得分:0)
要将函数应用于'a option
,您只需要一个适用于'a
类型值的函数,以及一个在输入为None
时返回的值。 Core库中有一个名为value_map
的函数可以执行此操作。基本实现非常简单:
let value_map x default f =
match x with
| None -> default
| Some sx -> f sx
在您的情况下,您需要选择默认值。您要应用的功能是List.length
。