So erhalten Sie einen normalen Wert aus der E / A-Aktion in Haskell

Ich habe folgende Funktion:

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

und ich würde gerne einen bekommenChars wert aus ihm heraus,nicht eine IO-Aktion. ich habeNein Idee, wie das geht, oder ob es überhaupt möglich ist.

Chars ist im Grunde nur ein Container mit einem[Int] genannt curData und einInt genannt curIndex. Die Details sind nicht so wichtig, ich möchte nur wissen, ob es eine Möglichkeit gibt, mit dieser Funktion a zurückzugebenChars anstelle vonIO Chars.

Wenn nicht, wie gebe ich das als Argument an eine Funktion weiter, die eineChars? Ich bin ein bisschen neu in Haskell IO, aber ich glaube nicht, dass ich alle meine Funktionen haben will, die es brauchtChars als Argumente dafür nehmen zu müssenIO Chars als Argumente, und extrahieren Sie sie und packen Sie sie neu. Es scheint unnötig.

Vielen Dank!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage