私は次の機能を持っています:
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、それらを抽出して再パッケージ化する必要はないと思います。不要のようです。
ありがとう!