2014-01-09 34 views
0

我正在学习从操作语义和类型系统进行测试,并且我遇到了一个我不确定如何处理的任务。给定函数的最一般类型

任务如下:确定函数的最一般类型ff(a,b,c,d) = g(c,d), where g = a(b)


我估计函数F(A,B,C,d)返回的函数克(C,d)的输出。因此,假设c,d是基本类型的一些变量,并且a是具有一个基本类型的一个参数b的函数。但我不知道是什么g = a(b)不使用参数时,是指当有此功能在g(c,d)形式的呼叫......或者什么,我刚才说的是正确的: -/

我不知道该怎么做这里。你能否给我一个提示或者重定向我一些关于这个主题的文章(理想情况下用这个例子)。到目前为止我发现的唯一的东西是关于类型系统和语义的一般文本。非常感谢!

+1

a是一个参数的函数 - 返回两个参数的函数(称为g) – user3125280

+0

@ user3125280你应该让它成为一个答案..这是一个答案,是一个很好的答案。 –

回答

3

你必须问自己“什么样的功能是?”我们知道a(b)的结果是a(b)功能。所以“a”是一个返回函数的函数。具体来说,它是一个函数,它返回一个带有两个参数c和d的函数。

如果上述情况令人困惑(我不确定您对函数式编程有多熟悉等),这可能有助于考虑一个具体的例子。想象一下你有两个功能,foo和bar。 foo将两个数字(c和d)相乘,并添加两个数字。

a可能是一个函数,它可以选择我们是否想使用foo或bar。 (a,“bar”,1,2)将是(a(“bar”))(1,2)= 1 + 2 = 3. 和f(a,“foo”,1 ,2)将是(a(“foo”))(1,2)= 1 * 2 = 2.

+0

谢谢..这实际上是有道理的,并帮助很多! – Smajl