У меня есть следующая функция:
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 - это просто контейнер с [Int]
, называемый curData, и Int
, называемый curIndex. Специфика не так важна, я просто хочу знать, есть ли способ вернуть эту функцию Chars
вместо IO Chars
.
Если нет, как передать это как аргумент функции, которая принимает Chars
? Я новичок в Haskell IO, но я не думаю, что хочу, чтобы все мои функции принимали Chars
в качестве аргументов вместо этого, чтобы принимать IO Chars
в качестве аргументов, а затем извлекать и переупаковывать их. Это кажется ненужным.
Спасибо!