Types Que和x39B的类型是什么';s投影算子?
在Suzuki、Kiselyov和Kameyama最近的论文中,他们给出了一种嵌入OCaml中的类型安全、可扩展查询语言的规范,该语言可以转换为SQL 这是他们用于查询的代数,摘自论文Types Que和x39B的类型是什么';s投影算子?,types,functional-programming,operators,ocaml,Types,Functional Programming,Operators,Ocaml,在Suzuki、Kiselyov和Kameyama最近的论文中,他们给出了一种嵌入OCaml中的类型安全、可扩展查询语言的规范,该语言可以转换为SQL 这是他们用于查询的代数,摘自论文 module type Symantics = sig type α repr (* representation type *) val int: int → int repr val bool: bool → bool repr val string: string → st
module type Symantics = sig
type α repr (* representation type *)
val int: int → int repr
val bool: bool → bool repr
val string: string → string repr
val lam: (α repr → β repr) → (α→β) repr
val app: (α → β) repr → α repr → β repr
val foreach: (unit→ α list repr) →
(α repr → β list repr) →
β list repr
val where: bool repr → (unit → α list repr) → α list repr
val yield: α repr → α list repr
val nil: unit → α list repr
val (@%): α list repr → α list repr → α list repr (* bag union *)
val (=%): α repr → α repr → bool repr
... (* abbreviated *)
type α obs (* observation *)
val observe: (unit → α repr) → α obs
end
投影操作符(%)
(本文后面将使用)在标记为缩写的部分被剪断。案文说:
我们使用符号@%
表示[行李联合],=%
表示相等性测试,而%表示
投影,为简洁起见,其键入被省略。更多信息,请参阅我们的代码
细节
我尽职尽责地看了看,但是%.
的声明看不见了
正确的%类型是什么。
?它是否已从代码的最终版本中删除?如果是的话,是什么取代了它?我想,它在
该文件没有corresponent.mli,OCaml自己推断模块的签名。您可以将生成的cmo文件加载到顶层,使用ocamlbrowser或merlin获取此符号的签名。我做了第一个,并在这里复制粘贴了签名,因此它没有出现在来源中(您将找不到它)。我认为这不是一个。它是一个实现,不是一个声明,它与@BenjaminHodgson相关联,您不需要在OCaml中声明值,因为语言总是可以推断类型。因此,有时人们不编写mli
文件,允许编译器自己推断它们。因此没有明确的声明。ivg
我在寻找签名
——客户端将使用的接口,而不是SQL的实现。正如ivg所说,如果省略mli文件,OCaml自己生成签名。
val ( %. ) : ('a -> 'b term) -> string -> 'a -> 'c term