2
。 [0,1,0,1] = 10可以使用:將比特轉換爲int,並且右邊爲左邊,例如
binToInt = foldr (\x xs -> x + 2 * xs) 0
我想從左到右讀取它,例如, [1,0,1,0] = 10
我想這會工作:
binToInt' = foldr (\x xs -> (x * ((^) 2 (length xs)) + xs) 0
但我得到的錯誤:
Couldn't match type `t0 a0' with `Int'
我究竟做錯了什麼?
(作爲一個替代我倒binToInt的結果)
不能使用'xs'作爲「(+)」的論點;它是一個列表,而不是該列表中的值的總和。 – chepner
@chepner我認爲這是相反的:在第二個定義中,'xs'是一個數字,所以它不能被送入'length'。 – chi
Right;我永遠不能將這個功能的論據保持一致。 – chepner