我有以下功能:
get :: Chars -> IO Chars
get cs = do
char <- getChar
let (dats, idx) = (curData cs, curIndex cs)
let (x,y:xs) = splitAt idx dats
let replacement = x ++ (ord char) : xs
return $ Chars replacement idx
我想从中获得价值Chars
,而不是IO
行动。我不知道如何做到这一点,或者是否有可能。
该Chars
类型基本上只是一个容器:
data Chars = Chars {
curData :: [Int],
curIndex :: Int
-- etc.
}
细节并不那么重要,我只想知道这个函数是否有办法返回 aChars
而不是 a IO Chars
。
如果没有,我如何将它作为参数传递给接受 a 的函数Chars
?我对 Haskell I/O 有点陌生,但我不认为我希望所有作为参数的函数Chars
都必须IO Chars
作为参数,然后提取并重新打包它们。似乎没有必要。
谢谢!