OCaml的语法是否像Haskell的++?

mca*_*dre 2 ocaml haskell list append

我知道OCaml有List.append,但它有像Haskell这样的运算符++吗?

Mat*_*ard 9

对于列表:

# (@);;
- : 'a list -> 'a list -> 'a list = <fun>
# [1;2;3] @ [4;5;6];;
- : int list = [1; 2; 3; 4; 5; 6]
Run Code Online (Sandbox Code Playgroud)

对于字符串:

# (^);;
- : string -> string -> string = <fun>
# "abc" ^ "def";;
- : string = "abcdef"
Run Code Online (Sandbox Code Playgroud)

  • 这些决定有许多微妙之处.Haskell在表现上付出了代价.Lennart Augustsson刚刚发表评论说这个决定是Haskell的一个错误(在他的CUFP 2011演讲中). (11认同)
  • 如果只有Haskell为Monoids使用名称`++`而不是`mappend`.然后它也可以在`Data.Text`上工作,它是`Monoid`的一个实例,并且比char列表更有效;) (4认同)