当前位置: 首页 > 编程笔记 >

OCaml 用let绑定定义函数

锺离穆冉
2023-03-14
本文向大家介绍OCaml 用let绑定定义函数,包括了OCaml 用let绑定定义函数的使用技巧和注意事项,需要的朋友参考一下

示例

可以使用let以下方式给值命名:

# let a = 1;;
val a : int = 1

您可以使用类似的语法来定义函数。只需为参数提供其他参数即可。

# let add arg1 arg2 = arg1 + arg2;;
val add : int -> int -> int = <fun>

我们可以这样称呼它:

# add 1 2;;
- : int = 3

我们可以像这样直接传递值,也可以传递绑定到名称的值:

# add a 2;;
- : int = 3

定义某些内容后,解释器给出的行是带有类型签名的对象的值。当我们给它提供一个简单值绑定到时a,它返回:

val a : int = 1

表示a是int,其值为1。

我们函数的类型签名稍微复杂一些:

val add : int -> int -> int = <fun>

的类型签名add看起来像一堆整数和箭头。这是因为接受两个参数的函数实际上是仅接受一个参数但返回另一个接受下一个参数的函数。您可以这样阅读:

val add : int -> (int -> int) = <fun>

当我们要动态创建各种功能时,这很有用。例如,一个将所有内容加5的函数:

# let add_five = add 5;;
val add_five : int -> int = <fun>
# add_five 5;;
- : int = 10
# add_five 10;;
- : int = 15
           

 类似资料:
  • 我使用react-bootstrap-datetimerangepicker库和bind()从日历中获取选定的日期,但是这个库的“on apply”函数传递了两个参数(event、picker),在“预定义”中,我没有得到假定出现在第二个参数中的startDate和endDate。没有束缚它就不起作用 https://github.com/luqin/react-bootstrap-datetim

  • 自定义绑定(Custom Binding)允许我们通过代码实现自定义绑定规则,从而完成更高级的业务需求。 示例代码 //.js片段 justep.Bind.bindingHandlers.yourBindingName = { init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {

  • 当将对象方法作为回调进行传递,例如传递给 setTimeout,这儿会存在一个常见的问题:“丢失 this”。 在本章中,我们会学习如何去解决这个问题。 丢失 “this” 我们已经看到了丢失 this 的例子。一旦方法被传递到与对象分开的某个地方 —— this 就丢失。 下面是使用 setTimeout 时 this 是如何丢失的: let user = { firstName: "Joh

  • 我正在尝试为PGInterval和Duration编写一个自定义数据类型绑定,以将jOOQ与TimescaleDB一起使用。遗憾的是,jOOQ在为数据库例程生成函数时没有使用它。 这是我的绑定类: 这是我在pom中的配置: 例如,我希望jOOQ生成例程 像 但是我得到了

  • 我正在尝试为Azure Functions创建自己的自定义绑定。这项工作基于有关此功能的2篇wiki文章:https://github.com/Azure/azure-webjobs-sdk/wiki/Creating-custom-input-and-output-bindings和https://github.com/Azure/WebJobsExtensionSamples 对于示例项目,我

  • 简介 在前面的章节中,我已经讲解了: 如何安装MIT-Scheme; Scheme解释器是如何对S-表达式求值; 基本的表操作; 在本章中,我会讲解如何自定义函数。由于Sheme是函数式编程语言,你需要通过编写小型函数来构造程序。因此,明白如何构造并组合这些函数对掌握Scheme尤为关键。在前端定义函数非常不便,因此我们通常需要在文本编辑器中编辑好代码,并在解释器中加载它们。 如何定义简单函数并加