如何在Haskell中创建内存中句柄?

air*_*tyh 15 io file-io haskell

我想要一些看起来像文件句柄的东西,但实际上是由内存缓冲区支持用于I/O重定向.我怎样才能做到这一点?

Joh*_*kin 19

我刚刚编写了一个提供此功能的库,名为"knob"[ hackage ].您可以使用它来创建Handle引用/修改的s ByteString:

import Data.ByteString (pack)
import Data.Knob
import System.IO

main = do
    knob <- newKnob (pack [])
    h <- newFileHandle knob "test.txt" WriteMode
    hPutStrLn h "Hello world!"
    hClose h
    bytes <- Data.Knob.getContents knob
    putStrLn ("Wrote bytes: " ++ show bytes)
Run Code Online (Sandbox Code Playgroud)


smo*_*fra -3

不修改编译器是不可能的。这是因为 Handle 是抽象数据类型,而不是类型类。