使用Haskell将[Bool]写入二进制文件

Sco*_*son 2 haskell

在Haskell工作,我试图写一个大的布尔列表到二进制文件.

我可以写Word8(这是一个8位字)文件,但无法弄清楚如何从八个Bool的列表转换为Word8.

这是我到目前为止所拥有的:

toByte :: [Bool] -> Word8
toByte list = toByteh list 0 0

toByteh :: [Bool] -> Int -> Word8 -> Word8
toByteh list 8 _ = 0
toByteh list i result 
    | head list == True = toByteh (tail list) (i + 1) (result .|. (2^i :: Word8))
    | otherwise = toByte_h (tail list) (i + 1) result
Run Code Online (Sandbox Code Playgroud)

当我使用它时,我只得到一个0字节.任何人都可以看到这不起作用的地方?或者有更好的方法吗?

ham*_*mar 5

你计数i0,当你到达8,你回来0.我想你的意思是返回result:

toByteh list 8 result = result
Run Code Online (Sandbox Code Playgroud)