以下等式是用Miranda语法编写的,但由于Miranda和Haskell之间的相似性,我期望Haskell程序员应该理解它!确定函数式编程中函数的类型
如果定义了以下功能:
rc v g i = g (v:i)
rn x = x
rh g = hd (g [])
f [] y = y
f (x:xs) y = f xs (rc x y)
g [] y = y
g (x:xs) y = g xs (x:y)
你如何制定出的功能类型?我想我明白如何解决f,g和rn问题,但我对部分应用程序部分感到困惑。
RN将是* - > *(或任何东西 - >什么,我认为这是一个 - 在Haskell>一个)
对于f和g,是函数类型都[*] - > * - > *?
我不确定如何处理寻找rc和rh的类型。在rc中,g被部分应用于变量i - 所以我猜测这限制了我的类型[*]。 rc和g在rc的定义中应用了什么顺序? g是否应用于i,然后将得到的函数用作rc的参数?还是rc需要3个独立的v,g和i参数?我真的很困惑..任何帮助将不胜感激!多谢你们。
对不起忘了补充一点,HD是列表的标准头功能,并定义为:
hd :: [*] -> *
hd (a:x) = a
hd [] = error "hd []"
这是功课吗? – 2012-03-30 13:07:53
不,我现在正在准备考试,这是一个米兰达考试的老考试问题。 – user1058210 2012-03-30 13:11:42
“hd”功能的类型是什么? – 2012-03-30 13:12:57