读取Haskell IO Monads中的文件
大家好,我是Haskell的初学者,我有一个dat文件,其中包含读取Haskell IO Monads中的文件,haskell,image-processing,io,monads,Haskell,Image Processing,Io,Monads,大家好,我是Haskell的初学者,我有一个dat文件,其中包含 [("img0.bmp", [0,0]) ,("img1.bmp", [0,1]) ,("img2.bmp", [1,0]) ,("img3.bmp", [1,1])] 字符串是文件夹中的图像文件,因此基本上我需要读取文件,包括许多作为输入的文件,我试图在最后[([Double],[Double])从bmp文件中提取矩阵,并将其转换为[Double]
[("img0.bmp", [0,0])
,("img1.bmp", [0,1])
,("img2.bmp", [1,0])
,("img3.bmp", [1,1])]
字符串是文件夹中的图像文件,因此基本上我需要读取文件,包括许多作为输入的文件,我试图在最后[([Double],[Double])从bmp文件中提取矩阵,并将其转换为[Double]
我试过这样的东西
learnbmp = do
vs <- getArgs
df <- run (readFile (vs!!0))
let ds = Prelude.read df :: [(String,[Double])]
let ns = Prelude.unzip ds
--let a = Prelude.map (\(v) -> toUnboxed (readImageFromBMPa v))(fst ns)
let a = fst ns
let b = snd ns
--let n' = Prelude.map (\(v) -> ((readMatrixfromImage v) ) ) a
let n' = Prelude.map (\(v) -> ((readMatrixfromImage v) ) ) a
let final = Prelude.zip n' b
return final
readMatrixfromImage :: FilePath -> IO (Vector Word8)
readMatrixfromImage image = do
x <- readImageFromBMPa image -- 'x' est alors de type t
let (Right r) = x
let a = toUnboxed r
return a
函数readMatrixfromImage的定义如下
learnbmp = do
vs <- getArgs
df <- run (readFile (vs!!0))
let ds = Prelude.read df :: [(String,[Double])]
let ns = Prelude.unzip ds
--let a = Prelude.map (\(v) -> toUnboxed (readImageFromBMPa v))(fst ns)
let a = fst ns
let b = snd ns
--let n' = Prelude.map (\(v) -> ((readMatrixfromImage v) ) ) a
let n' = Prelude.map (\(v) -> ((readMatrixfromImage v) ) ) a
let final = Prelude.zip n' b
return final
readMatrixfromImage :: FilePath -> IO (Vector Word8)
readMatrixfromImage image = do
x <- readImageFromBMPa image -- 'x' est alors de type t
let (Right r) = x
let a = toUnboxed r
return a
readMatrixfromImage::FilePath->IO(矢量字8)
readMatrixfromImage=do
x如果要在IO
monad中“包装”结果,可以使用:
learnbmp::IO[([Double],[Double])]
learnbmp=do
(v0:u)“我试图在结尾处有[([Double],[Double])]
”。learnbmp
返回[([Double,Double])]
没有多大意义,因为它涉及一个IO
,它应该有类型IO[([Double],[Double])
。所以在这种情况下没有办法让[([Double],[Double])]正确,而可以使用unsafePerformIO
,这真是一个(非常)坏主意,既然这基本上意味着IO创建的“副作用容器”已被销毁:退一步,为什么您的输入文件包含看起来像Haskell代码片段的内容,而不是JSON或其他与语言无关的格式?