Я только начинаю с haskell, и у меня возникают проблемы с базовым сервером REST «echo».Как использовать постоянную государственную монаду со Спок?
Спок выглядел как приятное стартовое место для сервера REST, и, хотя я получил основы государственной монады, но у меня возникли проблемы с пониманием того, как поставить runState
вокруг кода прокрутки.
Вот код, который у меня до сих пор.
{-# 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"
Ключом к этой головоломке является первый аргумент 'spockT', который вам нужно будет предоставить для' m ~ State String'. Тем не менее, вы столкнетесь с той же проблемой, что объясняется [в этом ответе] (http://stackoverflow.com/a/27496393/477476): 'State String' не будет автоматически сохраняться между вызовами обработчика. – Cactus