Xod*_*rap 30 syntax ocaml types type-inference
在Haskell中,明确声明函数的类型签名被认为是一种好习惯,即使它(通常)可以推断出来.看起来这在OCaml中甚至不可能,例如
val add : int -> int -> int ;;
Run Code Online (Sandbox Code Playgroud)
给了我一个错误.(虽然我可以制作type
只提供签名的模块.)
Don*_*art 46
OCaml有两种指定类型的方法,它们可以内联完成:
let intEq (x : int) (y : int) : bool = ...
Run Code Online (Sandbox Code Playgroud)
或者它们可以放在接口文件中,如下所示:
val intEq : int -> int -> bool
Run Code Online (Sandbox Code Playgroud)
我相信后者是首选,因为它更清晰地将规范(类型)与实现(代码)分开.
参考文献:Haskellers的OCaml
小智 17
我一般来说,let
使用约束类型绑定值的语法是:
let val : constraint = e ...
Run Code Online (Sandbox Code Playgroud)
应用于函数,您可以按如下方式指定签名:
let add : int -> int -> int = fun x y -> ...
Run Code Online (Sandbox Code Playgroud)
这类似于将模块约束到签名所需的语法:
module Mod
: sig ... end
= struct ... end
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
19339 次 |
最近记录: |