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