咖喱在哈斯克尔

时间:2014-02-08 13:48:50

标签: haskell

如您所知,foldl函数定义为:

  foldl :: (a -> b -> a ) -> a -> [b] -> a

我想将该函数重写为未经过验证的函数

我试过这个:

   foldl :: ( (a-> b-> a) , a , [b] ) -> a

这是对的吗?也许这不重要,但我会写一个考试,我很确定这将是要完成的任务之一。

感谢您的期待!

1 个答案:

答案 0 :(得分:3)

嗯,这肯定是foldl的一种未经证实的形式。但是,你可以做更多的水平 - 我可以“完全不受欢迎的形式”

foldl'' :: ( ((a,b) -> a), a, [b] ) -> a

不仅函数本身,而且函数参数也不复存在。 OTOH,只是在函数上调用uncurry只会产生

foldl''' :: ( (a->b->a), a ) -> [b] -> a

因此也可能被称为“无证foldl”,但它在考试中肯定不是理想的解释。