2
ビット配列を右から左へ[0,1,0,1] = 10は、foldrを使用してfoldrをforwardに変換します。
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の結果を逆転しています周りの仕事として)
'(+)'への引数。それはリストであり、そのリスト内の値の合計ではありません。 – chepner
@chepner私はそれが逆だと思います.2番目の定義では、 'xs'は数値なので、' length'に与えられません – chi
右;私は決してその関数への議論をまっすぐに保つことはできません。 – chepner