【问题标题】:Why one parameter Ocaml function works with two arguments为什么一个参数 Ocaml 函数使用两个参数
【发布时间】:2016-05-31 12:16:06
【问题描述】:

我不明白为什么即使我们用一个参数声明以下函数也可以使用 2 个参数:

let rec removeFromList e = function
   h :: t -> if h=e then h 
             else h :: removeFromList e t
   | _ -> [];;

removeFromList 1 [1;2;3];;

【问题讨论】:

  • (1) 函数removeFromList 不会编译,除非它包含在包含removeFromList 的其他定义的某个上下文中。我相信其目的是像这样定义它let rec removeFromList ...(2) 编译器应该抱怨函数体中缺少 [] 大小写。
  • 谢谢,我写错了;编辑所以现在应该没问题
  • OCaml 中的 All 函数总是只接受一个参数。语法removeFromList e t(解析为(removeFromList e) t,因为函数应用程序是左关联的)只是将removeFromList 应用于e,然后将其结果(恰好是一个函数)应用于t

标签: function parameters arguments ocaml


【解决方案1】:

您使用两个参数声明它。语法:

let f = function ...

可以看作是

的快捷方式
let f x = match x with

所以,你的定义实际上是:

let rec removeFromList e lst = match lst with
  h :: t -> if h=e then h else h :: removeFromList e 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 2012-02-08
    • 2019-01-16
    相关资源
    最近更新 更多