在结构内签名

时间:2009-09-29 22:15:21

标签: structure signature sml smlnj

我想将签名/结构对放在结构中,如下所示:

structure Outer :> OUTER =
struct
    signature INNER =
    sig
        ...
    end

    structure Inner :> INNER =
    struct
    ...
    end
end

但即便是最简单的例子也会产生错误:

../test.sml:1.18-2.6 Error: syntax error: replacing  STRUCT with  EQUALOP
../test.sml:5.6 Error: syntax error found at END

结构内部似乎不允许签名。实现此功能的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

虽然结构嵌套在SML中,但签名却没有。目前尚不清楚您想要实现的功能:

  • 隐藏命名签名是不可能的。

  • INNER签名依赖于结构Outer中声明的类型是通过 fibration where type子句)实现的。 Harper和Pierce在Benjamin Pierce关于编程语言高级类型的书中的教程中有一篇关于纤维化的篇幅。

答案 1 :(得分:2)

您也可以内联内部签名,如

aws-exports.js