syntax - OCaml 显式类型签名

标签 syntax types ocaml type-inference

在 Haskell 中,显式声明函数的类型签名被认为是一种很好的做法,即使它(通常)可以被推断出来。似乎这在 OCaml 中甚至是不可能的,例如

val add : int -> int -> int ;;

给我一个错误。 (虽然我可以制作 type 只提供签名的模块。)
  • 我是否正确,因为这在 OCaml 中是不可能的?
  • 如果是这样,为什么? OCaml 的类型系统似乎与 Haskell 并没有太大的不同。
  • 最佳答案

    OCaml 有两种指定类型的方法,它们可以内联完成:

    let intEq (x : int) (y : int) : bool = ...
    

    或者可以将它们放在接口(interface)文件中,就像您所做的那样:
    val intEq : int -> int -> bool
    

    我相信后者是首选,因为它更清晰地将规范(类型)与实现(代码)分开。

    引用文献:OCaml for Haskellers

    关于syntax - OCaml 显式类型签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6005176/

    相关文章:

    vb.net - 为什么返回字符串的 VB.Net 函数实际上只返回一个字符?

    objective-c - 需要帮助将 MPMediaItemPropertyPersistentID 转换为字符串并再次转换回来

    ocaml - 将 ocamlmktop 与 ocamlbuild 结合使用

    php - 检查 php-code w/o php-cli 的语法,可能吗?

    java - 从静态内部类静态导入 star 有什么作用?

    arrays - 在 Swift 中将对象类型更改为子类的实例

    dart - Dart中的运行时类型检查-检查列表

    OCaml 选项获取

    compilation - 编译多个 Ocaml 文件

    c# - 字符串插值 C# : Documentation of colon and semicolon functionality