Je commence juste avec haskell et j'ai des problèmes avec un serveur REST de base "echo". Spock ressemblait à un bon endroit de départ pour un serveur REST, et je pensais avoir les bases de la monade d'État, mais je n'arrive pas à comprendre comment mettre un runState
autour du code spock.Comment utiliser une monade d'état persistante avec Spock?
Voici le code que j'ai jusqu'à maintenant.
{-# LANGUAGE OverloadedStrings #-}
module Main where
import Data.Monoid
import Web.Spock.Safe
import qualified Control.Monad.State as S
storeData :: String -> S.State String String
storeData val = do S.put val
return val
getData :: S.State String String
getData = do val <- S.get
return val
main :: IO()
main =
runSpock 11350 $ spockT id $
do get "store" $
text "Would be a call to getData"
La clé de ce puzzle est le premier argument de 'spockT', que vous devrez fournir pour' m ~ State String'. Cependant, vous rencontrerez exactement le même problème que celui expliqué [dans cette réponse] (http://stackoverflow.com/a/27496393/477476): la chaîne 'State String' ne sera pas automagiquement conservée entre les appels de gestionnaire. – Cactus