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!