在列表中插入元素而不返回带元素的列表的最佳方法是什么?因为下面的这些运算符返回一个列表:
element :: lst
我希望单位返回,就像Hashtbl.add函数一样。感谢。
答案 0 :(得分:1)
由于列表不可更改,因此无法完成您想要做的事情。
它们是不可更改的,因为这是“完全没有”你在函数式编程中的工作方式。您将原始列表提供给函数并获取新列表。如果列表适合你继续工作的东西。
但是有希望:你可以使用参考。交互式会话中的代码:
# let mylist = ["one";"two";"tree"] ;;
val mylist : string list = ["one"; "two"; "tree"]
# mylist.[1];;
Error: This expression has type string list
but an expression was expected of type string
# mylist.(1);;
Error: This expression has type string list
but an expression was expected of type 'a array
# List.iter (function e -> print_endline e) mylist;;
one
two
tree
- : unit = ()
# let r = ref [];;
val r : '_a list ref = {contents = []}
# r := "zero" :: mylist;;
- : unit = ()
# List.iter (function e -> print_endline e) !r;;
zero
one
two
tree
- : unit = ()
# List.iter (function e -> print_endline e) ("minus" :: !r);;
minus
zero
one
two
tree
- : unit = ()
# List.iteri (fun cnt -> fun e -> Printf.printf "Element %d: %s" cnt e) !r;;
Element 0: zeroElement 1: oneElement 2: twoElement 3: tree- : unit = ()
#
代码漫步:
我是如此明确,因为在试图获得FP时,我完全错过了这些例子。
/ STR。