题
这是一个家庭作业的问题:
解释变换的类型 在部分的例程的经历 参数化。
到目前为止,我懂讨好。但我不能就如何这样的功能是通过在内存中的编译器实现找到任何资源。我能在正确的方向指出,也许要搜索的关键字或资源的链接或可能这里的编译器如何生成除其他事物的类型和符号表多数民众赞成有关问题的说明。
感谢。
解决方案
柯里是参数n的函数转换成n一元函数:
实施例,如果有一个三元函数f :: T1(X T2)X T3 - >吨可以代表该功能作为
f1 :: t1 -> (t2 -> (t3 -> t))
在换句话说,f1为采用类型T1的参数,并返回型f2的功能的功能。
f2 :: t2 -> (t3 -> t)
f2为采用类型T2的一个参数,并返回型f3的功能的功能。
f3 :: t3 -> t
f3是其中采用类型T3的参数,并返回型t的函数。
实施例,如果f(A,B,C)= A + B * C,则:
f3(C) == c1+c2*C where c1 and c2 are constant.
f2(B) == f3(C) where c1 is constant and c2 is replaced with B.
f1(A) == f2(B) where c1 is replaced with A.
在功能的语言,函数是一等公民所以其通常具有它们作为返回类型。
其他提示
柯里是像定影的功能的参数。你真正需要修改的是函数的原型叫..如果你有例如retn_type function(param1, param2)
你讨好它的第一个参数将其设置为一个固定值,你获得新的功能retn_type(param2)
可以调用并且在不同的方式从原始之一。
其实你可以在很多方面还是黑客,但一切都以它的简单性的核心就是重新定义链接到第一个新版本的编译器得到它。因此,当调用retn_type(param2)
你执行第一功能假定参数1的相同的代码由curryfication指定。
不隶属于 StackOverflow