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