私は次の機能を持っています:
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
そこから価値を引き出したいのです。私はこれをどのように行うのか、あるいはそれが可能であるかどうかさえわかりません。IO
Chars
タイプは基本的に単なるコンテナです。
data Chars = Chars {
curData :: [Int],
curIndex :: Int
-- etc.
}
Chars
詳細はそれほど重要ではありません。この関数がの代わりにを返す方法があるかどうかを知りたいだけですIO Chars
。
そうでない場合、これを引数として?を取る関数に渡すにはどうすればよいChars
ですか?私はHaskellI/ Oに少し慣れていませんがChars
、引数として取るすべての関数を代わりに引数として取りIO Chars
、それらを抽出して再パッケージ化する必要はないと思います。不要のようです。
ありがとう!