如何替换OCaml中c
等于的列表的所有元素?t
我试过List.filter
没有成功:
List.fold_right (fun c -> t) (List.filter c myLst) []
该List
模块是否包含此任务的功能?
如何替换OCaml中c
等于的列表的所有元素?t
我试过List.filter
没有成功:
List.fold_right (fun c -> t) (List.filter c myLst) []
该List
模块是否包含此任务的功能?
您可以使用map
(参见列表模块):
open Printf;;
let l = ['a'; 'b'; 'c'; 'd'; 'c']
let l2 = List.map (fun x -> if (x = 'c') then 't' else x) l;;
List.iter (printf "%c ") l2;;
哪个打印
a b t d t
如果您想使用 List.fold_right,可以使用以下方法:
let replace lst = List.fold_right (fun elmt accum ->
let e = if elmt = 'c' then 't' else elmt in
e::accum
) lst [];;
val replace : char list -> char list = <fun>
# replace ['a'; 'b'; 'c'];;
- : char list = ['a'; 'b'; 't']
注意:不要在 OCaml 中使用 == 而不是 =,它们有不同的含义。== 测试物理平等,但 = 测试语义平等。因此,当您使用 == 时,即使两个值在语义上相等,它也可能返回 false。