我正试图用一个图像库在Haskell中进行一些图像操作。使用库打开图像需要ByteString
类型。我想在ghci中测试库,但当我加载文件时,它的类型为IO ByteString
,无法使用。
如何从ghci中的IO ByteString
类型解包ByteString
数据?
fmap
教纯函数如何处理不纯净的输入:
fmap :: (a -> b) -> IO a -> IO b
(=<<)
教授不纯函数如何使用不纯输入:
(=<<) :: (a -> IO b) -> IO a -> IO b
当然,在ghci中,有一种方便的do
表示法可以作为(=<<)
使用的简写,因此如果您编写
> x <- Data.ByteString.readFile "/path/to/image.jpg"
那么您将在会话的剩余时间中绑定x :: ByteString
,即使是Data.ByteString.readFile "/path/to/image.jpg" :: IO ByteString
。