我正在研究操作语义和类型系统的测试,我遇到了一个我不确定如何处理的任务。
任务如下:确定函数 f 的最常规类型。 f(a,b,c,d) = g(c,d), where g = a(b)
。
我猜函数 f(a,b,c,d)会返回函数 g(c,d)的输出。因此,假设 c,d 是基本类型的一些变量, a 是具有一个基本类型的一个参数 b 的函数。但是当我以g = a(b)
的形式调用此函数时,我不知道g(c,d)
在没有参数的情况下使用是什么意思......或者如果我刚才所说的是正确的话: - /
我不知道该怎么做。你能否给我一个提示或重定向我关于这个主题的一些文章(理想情况下有这样一个例子)。到目前为止,我唯一发现的是关于类型系统和语义的一般文本。非常感谢!
答案 0 :(得分:3)
你必须问自己“什么样的功能是什么?”
由于a(b)后来被用作g(c,d)(与(a(b))(c,d)相同),我们知道a(b)的结果是函数。所以“a”是一个返回函数的函数。具体来说,它是一个函数,它返回一个带有两个参数c和d的函数。
如果上述内容令人困惑(我不确定您对函数式编程有多熟悉等),可能需要考虑一个具体的例子。想象一下,你有两个功能,foo和bar。 foo乘以两个数字(c和d),bar加两个数字。
a可以是选择我们是否要使用foo或bar的函数。
所以f(a,“bar”,1,2)将是(a(“bar”))(1,2)= 1 + 2 = 3。 和f(a,“foo”,1,2)将是(a(“foo”))(1,2)= 1 * 2 = 2.