Как получить нормальное значение от действия ввода-вывода в 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 в качестве аргументов, а затем извлечь и упаковать их. Это кажется ненужным.

Спасибо!

Ответы на вопрос(2)

Ваш ответ на вопрос