我正在尝试使用图像库在Haskell中进行一些图像处理。使用库打开图像需要ByteString
类型。我想在ghci中测试库,但是当我加载文件时它的类型为IO ByteString
并且无法使用。
如何解析ghci中ByteString
类型的IO ByteString
数据?
答案 0 :(得分:5)
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
。