Skip to content

Instantly share code, notes, and snippets.

{-# LANGUAGE FlexibleContexts , ScopedTypeVariables , TypeFamilies #-}
import Data.Proxy
class Problem p where
type State p :: *
data Action p :: *
actions :: State p -> [Action p]
result :: State p -> Action p -> State p