を使用しControl.Monad.Rand
ており、構造があります
data MCSystem = MCSystem { params :: Params
, path :: Path }
そして、実装方法がわからない関数-
runSystem :: (RandomGen g) => MCSystem -> Rand g MCSystem
runSystem system = MCSystem mcparams newPath -- this line doesn't make any
-- sense and i know it
where
mcparams = params system
newPath = runPath $ path system
runPath :: (RandomGen g) => Path -> Rand g Path
-- basically performs a random mutation on the path
runPath
モナドを返すRand g Path
...それをプルして新しいRand g MCSystem
モナドを作成し、runSystem
それを適切に返すことができ、後でジェネレーターで呼び出すことができるようにするにはどうすればよいですか?
おそらくすべてを Reader モナドにリファクタリングできると思いますが、できれば避けたいと思っています。