mealstrom-0.0.0.1: src/Mealstrom/FSMStore.hs
{-# LANGUAGE MultiParamTypeClasses #-}
{-|
Module : Mealstrom.FSMStore
Description : Typeclass for FSMStores
Copyright : (c) Max Amanshauser, 2016
License : MIT
Maintainer : max@lambdalifting.org
-}
module Mealstrom.FSMStore where
import Mealstrom.FSM
data Proxy k s e a = Proxy
-- |Even the Read method needs type parameters 'e' and 'a' because it needs to deserialise the entry from storage.
-- Implementations are expected to not throw exceptions in fsmRead/fsmCreate.
-- Throwing in fsmUpdate is OK.
class FSMStore st k s e a where
fsmRead :: st -> k -> Proxy k s e a -> IO (Maybe s)
fsmCreate :: st -> Instance k s e a -> IO (Maybe String)
fsmUpdate :: st -> k -> MachineTransformer s e a -> IO MealyStatus