这个函数做什么,Haskell

时间:2013-11-20 20:43:33

标签: template-haskell

我需要一个将bin转换为dec

的算法

我在互联网上找到了以下代码,但我不知道,有些变量是什么意思:

bin2dec :: [Int] -> Int
bin2dec n = foldl (\a x->2*a+x) 0 n

我已经知道了foldl 但是什么意思(\ a x-> 2 * a + x)0 n 我不知道是什么\ a x - > 2 * a + x表示也是“0 n”

有人可以解释一下这个功能是如何运作的吗?

由于

1 个答案:

答案 0 :(得分:0)

foldl ::(a - > b - > a) - > a - > [b] - >一个 所以基本上a是0,然后是整个折叠的值。 n是您传递给bin2dec的列表,0是您开始折叠的对象。

\ a x - > 2 * a + x是lamda函数。它需要两个变量a和x,并返回箭头右侧给出的值。