嵌套签名的语法?

时间:2011-03-08 14:32:59

标签: signature ml

在我的ml程序中,我使用嵌套结构来构造我的代码。我正在定义这些结构的签名 - 但我真的不能让签名嵌套。

示例:

structure Example =
struct
  structure Code = 
  struct
    datatype mytype = Mycons of string
  end
end

为此,我想做这样的事情:

signature EXAMPLE = 
sig
  signature CODE = (* or stucture Code - doesn't matter *)
  sig
    datatype mytype
  end
end

现在这不起作用;我得到语法错误。我的问题:

  1. 这是个坏主意吗?如果是这样,为什么?
  2. 我该怎么办?如何将嵌套签名应用于嵌套结构?

1 个答案:

答案 0 :(得分:3)

具有嵌套结构时签名中的语法需要一些习惯。

当尝试指定签名时,如果签名中的结构是这样的

signature JSON =
sig    
  type t

  .. some signature stuff

  structure Converter : sig    
    type json
    type 'a t

    ... Converter specification stuff
    ... using type json as the parent signatures type t    
  end where type json = t    
end

有关此示例的简单示例,请参阅这些Hoffman [.sml] [.sig]文件,并查看树[.sig]文件以获取更复杂的示例。< / p>

请记住,您需要在结构中提及您的签名规范,否则首先签名将毫无意义。