SML仿函数可以采用非结构参数(Ullman 8.3.4)吗?

时间:2017-11-25 20:35:25

标签: sml functor

我只是想在这里检查一下我的理解,我正在通过 ML编程元素的仿函数章节进行刷新,其中一个问题需要编写一个仿函数&#34 ;只取整数 b 作为输入。"我可以编写一个仿函数,其应用如下:

$cert

但不是

structure HashFn100 = MakeHashFn(struct val i = 100 end);

正如问题陈述似乎暗示的那样。这个措辞让我感到困惑,而我现在的仿函数是正确的,还是有办法将仿函数应用到我缺少的非结构中?不幸的是,这个练习在解决方案手册中没有答案。

1 个答案:

答案 0 :(得分:2)

你可以写

structure HashFn100 = MakeHashFn(val i = 100)

这是您展示的第一种形式的语法糖。第二个不合法 - 语法上,仿函数参数必须是模块(结构或标识符)或声明序列(作为结构的简写)。