J'essaie d'apprendre Haskell. J'essaye d'écrire un programme qui contient un "état global": Vars
. Je veux changer une composante de l'état (par exemple var1
) chaque fois que j'appelle une fonction. Le changement peut être une simple fonction sur les composants (par exemple +4). En outre, il imprime le composant modifié. Voici ce que j'ai fait jusqu'ici (mais je suis coincé). Edit: après avoir exécuté le code, je veux voir la version récente de l'état global.Haskell: Transformateurs Monad et état global
import Control.Monad.State
import Control.Monad.IO.Class (liftIO)
data Vars = Vars {
var1 :: Int,
var2 :: Float
} deriving (Show)
sample :: StateT Vars IO a
sample = do
a <- change
liftIO $ print a
-- I want to call change again and apply more change to the state
change :: StateT Vars IO a
change = do
dd <- get
-- I don't know what to do next!
main = do
runStateT sample (Vars 20 3)
evalStateT sample (Vars 20 3)
Pourriez-vous spécifier la sortie désirée du programme? Qu'est-ce que vous voulez observer après l'exécution de la fonction «main»? – Shersh
@Shersh Merci pour l'indice. Je viens de le faire. – 4xx