SML函子可以接受非结构参数吗(Ullman 8.3.4)?

SML函子可以接受非结构参数吗(Ullman 8.3.4)?,sml,functor,Sml,Functor,我只是想检查一下我的理解,我正在复习ML编程元素的函子一章,其中一个问题是需要编写一个“只接受整数b作为输入”的函子。我可以编写一个函子,应用如下: structure HashFn100 = MakeHashFn(struct val i = 100 end); 但不是 structure HashFn100 = MakeHashFn(100); 正如问题陈述所暗示的那样。这句话是不是让我和我的当前函子混淆了?是不是有办法将函子应用于我缺少的非结构?不幸的是,本练习在解决方案手册中没有答案

我只是想检查一下我的理解,我正在复习ML编程元素的函子一章,其中一个问题是需要编写一个“只接受整数b作为输入”的函子。我可以编写一个函子,应用如下:

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

structure HashFn100 = MakeHashFn(100);
正如问题陈述所暗示的那样。这句话是不是让我和我的当前函子混淆了?是不是有办法将函子应用于我缺少的非结构?不幸的是,本练习在解决方案手册中没有答案。

您可以编写

structure HashFn100 = MakeHashFn(val i = 100)
这是你展示的第一个形式的语法糖。第二个是不合法的——从语法上讲,函子参数必须是模块(结构或标识符)或声明序列(作为结构的缩写)