使用Haskell将Bool写入二进制文件可以通过以下步骤完成:
import System.IO
import Data.Binary
import Data.List (foldl')
boolsToBits :: [Bool] -> [Word8]
boolsToBits = foldl' f []
where
f acc x = let (q, r) = quotRem (length acc) 8
in case r of
0 -> acc ++ [if x then 1 else 0]
_ -> let i = length acc - 1
oldVal = acc !! i
newVal = if x then oldVal `setBit` (7 - r) else oldVal `clearBit` (7 - r)
in take i acc ++ [newVal]
writeBoolsToBinaryFile :: FilePath -> [Bool] -> IO ()
writeBoolsToBinaryFile filePath bs = withBinaryFile filePath WriteMode $ \h -> do
mapM_ (hPutChar h . toEnum . fromEnum) (boolsToBits bs)
ghc -O2 writeBinary.hs -o writeBinary
./writeBinary input.bin [True, False, True, True, False]
其中,input.bin是要写入的二进制文件名,True, False, True, True, False是要写入的Bool列表。
完整的答案包括了使用Haskell将Bool写入二进制文件的整个过程,包括环境配置、代码编写、编译和运行等步骤。同时,答案中也涉及到了二进制文件的生成和写入操作,以及如何将Bool列表转换为二进制数据进行写入。
领取专属 10元无门槛券
手把手带您无忧上云