如何在Haskell中从二进制文件打印字节?

如何在Haskell中从二进制文件打印字节?,haskell,binary,Haskell,Binary,我的print语句不断抛出错误,我真的不明白发生了什么 import Data.ByteString.Lazy as BS import Data.Word import Data.Bits readByte :: String -> IO [Word8] readByte fp = do contents <- BS.readFile fp return $ Prelude.take 5 $ unpack contents main :: IO () main

我的print语句不断抛出错误,我真的不明白发生了什么

import Data.ByteString.Lazy as BS
import Data.Word
import Data.Bits

readByte :: String -> IO [Word8]
readByte fp = do
    contents <- BS.readFile fp
    return $ Prelude.take 5 $ unpack contents

main :: IO ()
main = do
    input <- readByte "DATA.BIN"
    print "Byte 0: " ++ [input!!0]

Haskell正在将
print“Byte 0:”++[input!!0]
解析为
(print“Byte 0:”)++[input!!0]
,这可能不是您想要的。你可能想要

main :: IO ()
main = do
    input <- readByte "DATA.BIN"
    putStrLn $ "Byte 0: " ++ show (input!!0)
main::IO()
main=do

inputHaskell正在将
print“Byte 0:”++[input!!0]
解析为
(print“Byte 0:”)++[input!!0]
,这可能不是您想要的。你可能想要

main :: IO ()
main = do
    input <- readByte "DATA.BIN"
    putStrLn $ "Byte 0: " ++ show (input!!0)
main::IO()
main=do

输入关于术语的注释<代码>打印
不是“抛出错误”,这意味着您正在执行程序。发生的是编译器发出了一个关于print语句的类型检查错误。关于术语的说明<代码>打印
不是“抛出错误”,这意味着您正在执行程序。发生的情况是编译器发出了一个关于print语句的类型检查错误。如果我存储输入!!首先将0转换为变量,然后在putStrLn中使用它,我得到“无法将类型
Word8'与
IO a0'匹配”错误。执行此数据库类型@Vlam Ah。所以你需要
让databasetype=input!!0
,用于分配<代码>如果我存储输入!!首先将0转换为变量,然后在putStrLn中使用它,我得到“无法将类型
Word8'与
IO a0'匹配”错误。执行此数据库类型@Vlam Ah。所以你需要
让databasetype=input!!0
,用于分配<代码>