'{-' Comment.Multiline '# LANGUAGE DeriveDataTypeable, FlexibleContexts, GeneralizedNewtypeDeriving\n , MultiParamTypeClasses, OverloadedStrings, ScopedTypeVariables, TemplateHaskell\n , TypeFamilies, FlexibleInstances #' Comment.Multiline '-}' Comment.Multiline '\n' Text.Whitespace 'module' Keyword.Reserved ' ' Text.Whitespace 'Main' Name.Namespace ' ' Text.Whitespace 'where' Keyword.Reserved '\n' Text.Whitespace 'import' Keyword.Reserved ' ' Text.Whitespace 'Control.Applicative' Name.Namespace ' ' Text.Whitespace '(' Punctuation 'Applicative' Keyword.Type ',' Punctuation ' ' Text.Whitespace 'Alternative' Keyword.Type ',' Punctuation ' ' Text.Whitespace '(' Punctuation '<$>' Operator ')' Punctuation ')' Punctuation '\n' Text.Whitespace 'import' Keyword.Reserved ' ' Text.Whitespace 'Control.Exception.Lifted' Name.Namespace ' ' Text.Whitespace '(' Punctuation 'bracket' Name.Function ')' Punctuation '\n' Text.Whitespace 'import' Keyword.Reserved ' ' Text.Whitespace 'Control.Monad.Trans.Control' Name.Namespace ' ' Text.Whitespace '(' Punctuation 'MonadBaseControl' Keyword.Type ')' Punctuation '\n' Text.Whitespace 'import' Keyword.Reserved ' ' Text.Whitespace 'Control.Monad' Name.Namespace ' ' Text.Whitespace '(' Punctuation 'MonadPlus' Keyword.Type ',' Punctuation ' ' Text.Whitespace 'mplus' Name.Function ')' Punctuation '\n' Text.Whitespace 'import' Keyword.Reserved ' ' Text.Whitespace 'Control.Monad.Reader' Name.Namespace ' ' Text.Whitespace '(' Punctuation 'MonadReader' Keyword.Type ',' Punctuation ' ' Text.Whitespace 'ReaderT' Keyword.Type '(' Punctuation '..' Operator ')' Punctuation ',' Punctuation ' ' Text.Whitespace 'ask' Name.Function ')' Punctuation '\n' Text.Whitespace 'import' Keyword.Reserved ' ' Text.Whitespace 'Control.Monad.Trans' Name.Namespace ' ' Text.Whitespace '(' Punctuation 'MonadIO' Keyword.Type '(' Punctuation '..' Operator ')' Punctuation ')' Punctuation '\n' Text.Whitespace 'import' Keyword.Reserved ' ' Text.Whitespace 'Data.Acid' Name.Namespace ' ' Text.Whitespace '(' Punctuation ' ' Text.Whitespace 'AcidState' Keyword.Type '(' Punctuation '..' Operator ')' Punctuation ',' Punctuation ' ' Text.Whitespace 'EventState' Keyword.Type '(' Punctuation '..' Operator ')' Punctuation ',' Punctuation ' ' Text.Whitespace 'EventResult' Keyword.Type '(' Punctuation '..' Operator ')' Punctuation '\n ' Text.Whitespace ',' Punctuation ' ' Text.Whitespace 'Query' Keyword.Type '(' Punctuation '..' Operator ')' Punctuation ',' Punctuation ' ' Text.Whitespace 'QueryEvent' Keyword.Type '(' Punctuation '..' Operator ')' Punctuation ',' Punctuation ' ' Text.Whitespace 'Update' Keyword.Type '(' Punctuation '..' Operator ')' Punctuation ',' Punctuation ' ' Text.Whitespace 'UpdateEvent' Keyword.Type '(' Punctuation '..' Operator ')' Punctuation '\n ' Text.Whitespace ',' Punctuation ' ' Text.Whitespace 'IsAcidic' Keyword.Type '(' Punctuation '..' Operator ')' Punctuation ',' Punctuation ' ' Text.Whitespace 'makeAcidic' Name.Function ',' Punctuation ' ' Text.Whitespace 'openLocalState' Name.Function '\n ' Text.Whitespace ')' Punctuation '\n' Text.Whitespace 'import' Keyword.Reserved ' ' Text.Whitespace 'Data.Acid.Local' Name.Namespace ' ' Text.Whitespace '(' Punctuation ' ' Text.Whitespace 'createCheckpointAndClose' Name.Function '\n ' Text.Whitespace ',' Punctuation ' ' Text.Whitespace 'openLocalStateFrom' Name.Function '\n ' Text.Whitespace ')' Punctuation '\n' Text.Whitespace 'import' Keyword.Reserved ' ' Text.Whitespace 'Data.Acid.Advanced' Name.Namespace ' ' Text.Whitespace '(' Punctuation "query'" Name.Function ',' Punctuation ' ' Text.Whitespace "update'" Name.Function ')' Punctuation '\n' Text.Whitespace 'import' Keyword.Reserved ' ' Text.Whitespace 'Data.Maybe' Name.Namespace ' ' Text.Whitespace '(' Punctuation 'fromMaybe' Name.Function ')' Punctuation '\n' Text.Whitespace 'import' Keyword.Reserved ' ' Text.Whitespace 'Data.SafeCopy' Name.Namespace ' ' Text.Whitespace '(' Punctuation 'SafeCopy' Keyword.Type ',' Punctuation ' ' Text.Whitespace 'base' Name.Function ',' Punctuation ' ' Text.Whitespace 'deriveSafeCopy' Name.Function ')' Punctuation '\n' Text.Whitespace 'import' Keyword.Reserved ' ' Text.Whitespace 'Data.Data' Name.Namespace ' ' Text.Whitespace '(' Punctuation 'Data' Keyword.Type ',' Punctuation ' ' Text.Whitespace 'Typeable' Keyword.Type ')' Punctuation '\n' Text.Whitespace 'import' Keyword.Reserved ' ' Text.Whitespace 'Data.Lens' Name.Namespace ' ' Text.Whitespace '(' Punctuation '(' Punctuation '%=' Operator ')' Punctuation ',' Punctuation ' ' Text.Whitespace '(' Punctuation '!=' Operator ')' Punctuation ')' Punctuation '\n' Text.Whitespace 'import' Keyword.Reserved ' ' Text.Whitespace 'Data.Lens.Template' Name.Namespace ' ' Text.Whitespace '(' Punctuation 'makeLens' Name.Function ')' Punctuation '\n' Text.Whitespace 'import' Keyword.Reserved ' ' Text.Whitespace 'Data.Text.Lazy' Name.Namespace ' ' Text.Whitespace '(' Punctuation 'Text' Keyword.Type ')' Punctuation '\n' Text.Whitespace 'import' Keyword.Reserved ' ' Text.Whitespace 'Happstack.Server' Name.Namespace ' ' Text.Whitespace '(' Punctuation ' ' Text.Whitespace 'Happstack' Keyword.Type ',' Punctuation ' ' Text.Whitespace 'HasRqData' Keyword.Type ',' Punctuation ' ' Text.Whitespace 'Method' Keyword.Type '(' Punctuation 'GET' Keyword.Type ',' Punctuation ' ' Text.Whitespace 'POST' Keyword.Type ')' Punctuation ',' Punctuation ' ' Text.Whitespace 'Request' Keyword.Type '(' Punctuation 'rqMethod' Name.Function ')' Punctuation '\n ' Text.Whitespace ',' Punctuation ' ' Text.Whitespace 'Response' Keyword.Type '\n ' Text.Whitespace ',' Punctuation ' ' Text.Whitespace 'ServerPartT' Keyword.Type '(' Punctuation '..' Operator ')' Punctuation ',' Punctuation ' ' Text.Whitespace 'WebMonad' Keyword.Type ',' Punctuation ' ' Text.Whitespace 'FilterMonad' Keyword.Type ',' Punctuation ' ' Text.Whitespace 'ServerMonad' Keyword.Type '\n ' Text.Whitespace ',' Punctuation ' ' Text.Whitespace 'askRq' Name.Function ',' Punctuation ' ' Text.Whitespace 'decodeBody' Name.Function ',' Punctuation ' ' Text.Whitespace 'dir' Name.Function ',' Punctuation ' ' Text.Whitespace 'defaultBodyPolicy' Name.Function ',' Punctuation ' ' Text.Whitespace 'lookText' Name.Function '\n ' Text.Whitespace ',' Punctuation ' ' Text.Whitespace 'mapServerPartT' Name.Function ',' Punctuation ' ' Text.Whitespace 'nullConf' Name.Function ',' Punctuation ' ' Text.Whitespace 'nullDir' Name.Function ',' Punctuation ' ' Text.Whitespace 'ok' Name.Function ',' Punctuation ' ' Text.Whitespace 'simpleHTTP' Name.Function '\n ' Text.Whitespace ',' Punctuation ' ' Text.Whitespace 'toResponse' Name.Function '\n ' Text.Whitespace ')' Punctuation '\n' Text.Whitespace 'import' Keyword.Reserved ' ' Text.Whitespace 'Prelude' Name.Namespace ' ' Text.Whitespace 'hiding' Keyword ' ' Text.Whitespace '(' Punctuation 'head' Name.Function ',' Punctuation ' ' Text.Whitespace 'id' Name.Function ')' Punctuation '\n' Text.Whitespace 'import' Keyword.Reserved ' ' Text.Whitespace 'System.FilePath' Name.Namespace ' ' Text.Whitespace '(' Punctuation '(' Punctuation '' Operator ')' Punctuation ')' Punctuation '\n' Text.Whitespace 'import' Keyword.Reserved ' ' Text.Whitespace 'Text.Blaze' Name.Namespace ' ' Text.Whitespace '(' Punctuation '(' Punctuation '!' Operator ')' Punctuation ')' Punctuation '\n' Text.Whitespace 'import' Keyword.Reserved ' ' Text.Whitespace 'Text.Blaze.Html4.Strict' Name.Namespace ' ' Text.Whitespace '(' Punctuation 'body' Name.Function ',' Punctuation ' ' Text.Whitespace 'head' Name.Function ',' Punctuation ' ' Text.Whitespace 'html' Name.Function ',' Punctuation ' ' Text.Whitespace 'input' Name.Function ',' Punctuation ' ' Text.Whitespace 'form' Name.Function ',' Punctuation ' ' Text.Whitespace 'label' Name.Function ',' Punctuation ' ' Text.Whitespace 'p' Name.Function ',' Punctuation ' ' Text.Whitespace 'title' Name.Function ',' Punctuation ' ' Text.Whitespace 'toHtml' Name.Function ')' Punctuation '\n' Text.Whitespace 'import' Keyword.Reserved ' ' Text.Whitespace 'Text.Blaze.Html4.Strict.Attributes' Name.Namespace ' ' Text.Whitespace '(' Punctuation 'action' Name.Function ',' Punctuation ' ' Text.Whitespace 'enctype' Name.Function ',' Punctuation ' ' Text.Whitespace 'for' Name.Function ',' Punctuation ' ' Text.Whitespace 'id' Name.Function ',' Punctuation ' ' Text.Whitespace 'method' Name.Function ',' Punctuation ' ' Text.Whitespace 'name' Name.Function ',' Punctuation ' ' Text.Whitespace 'type_' Name.Function ',' Punctuation ' ' Text.Whitespace 'value' Name.Function ')' Punctuation '\n' Text.Whitespace 'class' Keyword.Reserved ' ' Text.Whitespace 'HasAcidState' Keyword.Type ' ' Text.Whitespace 'm' Name ' ' Text.Whitespace 'st' Name ' ' Text.Whitespace 'where' Keyword.Reserved '\n ' Text.Whitespace 'getAcidState' Name ' ' Text.Whitespace '::' Operator.Word ' ' Text.Whitespace 'm' Name ' ' Text.Whitespace '(' Punctuation 'AcidState' Keyword.Type ' ' Text.Whitespace 'st' Name ')' Punctuation '\n' Text.Whitespace 'query' Name.Function ' ' Text.Whitespace '::' Operator.Word ' ' Text.Whitespace 'forall' Name ' ' Text.Whitespace 'event' Name ' ' Text.Whitespace 'm' Name '.' Operator ' \n ' Text.Whitespace '(' Punctuation ' ' Text.Whitespace 'Functor' Keyword.Type ' ' Text.Whitespace 'm' Name '\n ' Text.Whitespace ',' Punctuation ' ' Text.Whitespace 'MonadIO' Keyword.Type ' ' Text.Whitespace 'm' Name '\n ' Text.Whitespace ',' Punctuation ' ' Text.Whitespace 'QueryEvent' Keyword.Type ' ' Text.Whitespace 'event' Name '\n ' Text.Whitespace ',' Punctuation ' ' Text.Whitespace 'HasAcidState' Keyword.Type ' ' Text.Whitespace 'm' Name ' ' Text.Whitespace '(' Punctuation 'EventState' Keyword.Type ' ' Text.Whitespace 'event' Name ')' Punctuation '\n ' Text.Whitespace ')' Punctuation ' ' Text.Whitespace '=>' Operator.Word ' \n ' Text.Whitespace 'event' Name '\n ' Text.Whitespace '->' Operator.Word ' ' Text.Whitespace 'm' Name ' ' Text.Whitespace '(' Punctuation 'EventResult' Keyword.Type ' ' Text.Whitespace 'event' Name ')' Punctuation '\n' Text.Whitespace 'query' Name.Function ' ' Text.Whitespace 'event' Name ' ' Text.Whitespace '=' Operator.Word '\n ' Text.Whitespace 'do' Keyword.Reserved ' ' Text.Whitespace 'as' Name ' ' Text.Whitespace '<-' Operator.Word ' ' Text.Whitespace 'getAcidState' Name '\n ' Text.Whitespace "query'" Name ' ' Text.Whitespace '(' Punctuation 'as' Name ' ' Text.Whitespace '::' Operator.Word ' ' Text.Whitespace 'AcidState' Keyword.Type ' ' Text.Whitespace '(' Punctuation 'EventState' Keyword.Type ' ' Text.Whitespace 'event' Name ')' Punctuation ')' Punctuation ' ' Text.Whitespace 'event' Name '\n' Text.Whitespace 'update' Name.Function ' ' Text.Whitespace '::' Operator.Word ' ' Text.Whitespace 'forall' Name ' ' Text.Whitespace 'event' Name ' ' Text.Whitespace 'm' Name '.' Operator ' \n ' Text.Whitespace '(' Punctuation ' ' Text.Whitespace 'Functor' Keyword.Type ' ' Text.Whitespace 'm' Name '\n ' Text.Whitespace ',' Punctuation ' ' Text.Whitespace 'MonadIO' Keyword.Type ' ' Text.Whitespace 'm' Name '\n ' Text.Whitespace ',' Punctuation ' ' Text.Whitespace 'UpdateEvent' Keyword.Type ' ' Text.Whitespace 'event' Name '\n ' Text.Whitespace ',' Punctuation ' ' Text.Whitespace 'HasAcidState' Keyword.Type ' ' Text.Whitespace 'm' Name ' ' Text.Whitespace '(' Punctuation 'EventState' Keyword.Type ' ' Text.Whitespace 'event' Name ')' Punctuation '\n ' Text.Whitespace ')' Punctuation ' ' Text.Whitespace '=>' Operator.Word ' \n ' Text.Whitespace 'event' Name ' \n ' Text.Whitespace '->' Operator.Word ' ' Text.Whitespace 'm' Name ' ' Text.Whitespace '(' Punctuation 'EventResult' Keyword.Type ' ' Text.Whitespace 'event' Name ')' Punctuation '\n' Text.Whitespace 'update' Name.Function ' ' Text.Whitespace 'event' Name ' ' Text.Whitespace '=' Operator.Word '\n ' Text.Whitespace 'do' Keyword.Reserved ' ' Text.Whitespace 'as' Name ' ' Text.Whitespace '<-' Operator.Word ' ' Text.Whitespace 'getAcidState' Name '\n ' Text.Whitespace "update'" Name ' ' Text.Whitespace '(' Punctuation 'as' Name ' ' Text.Whitespace '::' Operator.Word ' ' Text.Whitespace 'AcidState' Keyword.Type ' ' Text.Whitespace '(' Punctuation 'EventState' Keyword.Type ' ' Text.Whitespace 'event' Name ')' Punctuation ')' Punctuation ' ' Text.Whitespace 'event' Name '\n' Text.Whitespace '-- | bracket the opening and close of the `AcidState` handle. ' Comment.Single '\n\n' Text.Whitespace '-- automatically creates a checkpoint on close' Comment.Single '\n' Text.Whitespace 'withLocalState' Name.Function ' ' Text.Whitespace '::' Operator.Word ' ' Text.Whitespace '(' Punctuation 'MonadBaseControl' Keyword.Type ' ' Text.Whitespace 'IO' Keyword.Type ' ' Text.Whitespace 'm' Name ',' Punctuation ' ' Text.Whitespace 'MonadIO' Keyword.Type ' ' Text.Whitespace 'm' Name ',' Punctuation ' ' Text.Whitespace 'IsAcidic' Keyword.Type ' ' Text.Whitespace 'st' Name ',' Punctuation ' ' Text.Whitespace 'Typeable' Keyword.Type ' ' Text.Whitespace 'st' Name ')' Punctuation ' ' Text.Whitespace '=>' Operator.Word ' \n ' Text.Whitespace 'Maybe' Keyword.Type ' ' Text.Whitespace 'FilePath' Keyword.Type ' ' Text.Whitespace '-- ^ path to state directory' Comment.Single '\n ' Text.Whitespace '->' Operator.Word ' ' Text.Whitespace 'st' Name ' ' Text.Whitespace '-- ^ initial state value' Comment.Single '\n ' Text.Whitespace '->' Operator.Word ' ' Text.Whitespace '(' Punctuation 'AcidState' Keyword.Type ' ' Text.Whitespace 'st' Name ' ' Text.Whitespace '->' Operator.Word ' ' Text.Whitespace 'm' Name ' ' Text.Whitespace 'a' Name ')' Punctuation ' ' Text.Whitespace '-- ^ function which uses the `AcidState` handle' Comment.Single '\n ' Text.Whitespace '->' Operator.Word ' ' Text.Whitespace 'm' Name ' ' Text.Whitespace 'a' Name '\n' Text.Whitespace 'withLocalState' Name.Function ' ' Text.Whitespace 'mPath' Name ' ' Text.Whitespace 'initialState' Name ' ' Text.Whitespace '=' Operator.Word '\n ' Text.Whitespace 'bracket' Name ' ' Text.Whitespace '(' Punctuation 'liftIO' Name ' ' Text.Whitespace '$' Operator ' ' Text.Whitespace '(' Punctuation 'maybe' Name ' ' Text.Whitespace 'openLocalState' Name ' ' Text.Whitespace 'openLocalStateFrom' Name ' ' Text.Whitespace 'mPath' Name ')' Punctuation ' ' Text.Whitespace 'initialState' Name ')' Punctuation '\n ' Text.Whitespace '(' Punctuation 'liftIO' Name ' ' Text.Whitespace '.' Operator ' ' Text.Whitespace 'createCheckpointAndClose' Name ')' Punctuation '\n' Text.Whitespace '-- State that stores a hit count' Comment.Single '\n\n' Text.Whitespace 'data' Keyword.Reserved ' ' Text.Whitespace 'CountState' Keyword.Type ' ' Text.Whitespace '=' Operator.Word ' ' Text.Whitespace 'CountState' Keyword.Type ' ' Text.Whitespace '{' Punctuation ' ' Text.Whitespace '_count' Name ' ' Text.Whitespace '::' Operator.Word ' ' Text.Whitespace 'Integer' Keyword.Type ' ' Text.Whitespace '}' Punctuation '\n ' Text.Whitespace 'deriving' Keyword.Reserved ' ' Text.Whitespace '(' Punctuation 'Eq' Keyword.Type ',' Punctuation ' ' Text.Whitespace 'Ord' Keyword.Type ',' Punctuation ' ' Text.Whitespace 'Data' Keyword.Type ',' Punctuation ' ' Text.Whitespace 'Typeable' Keyword.Type ',' Punctuation ' ' Text.Whitespace 'Show' Keyword.Type ')' Punctuation '\n\n' Text.Whitespace '$' Operator '(' Punctuation 'deriveSafeCopy' Name ' ' Text.Whitespace '0' Literal.Number.Integer ' ' Text.Whitespace "'base" Name ' ' Text.Whitespace "''CountState" Keyword.Type ')' Punctuation '\n' Text.Whitespace '$' Operator '(' Punctuation 'makeLens' Name ' ' Text.Whitespace "''CountState" Keyword.Type ')' Punctuation '\n\n' Text.Whitespace 'initialCountState' Name.Function ' ' Text.Whitespace '::' Operator.Word ' ' Text.Whitespace 'CountState' Keyword.Type '\n' Text.Whitespace 'initialCountState' Name.Function ' ' Text.Whitespace '=' Operator.Word ' ' Text.Whitespace 'CountState' Keyword.Type ' ' Text.Whitespace '{' Punctuation ' ' Text.Whitespace '_count' Name ' ' Text.Whitespace '=' Operator.Word ' ' Text.Whitespace '0' Literal.Number.Integer ' ' Text.Whitespace '}' Punctuation '\n\n' Text.Whitespace 'incCount' Name.Function ' ' Text.Whitespace '::' Operator.Word ' ' Text.Whitespace 'Update' Keyword.Type ' ' Text.Whitespace 'CountState' Keyword.Type ' ' Text.Whitespace 'Integer' Keyword.Type '\n' Text.Whitespace 'incCount' Name.Function ' ' Text.Whitespace '=' Operator.Word ' ' Text.Whitespace 'count' Name ' ' Text.Whitespace '%=' Operator ' ' Text.Whitespace 'succ' Name '\n\n' Text.Whitespace '$' Operator '(' Punctuation 'makeAcidic' Name ' ' Text.Whitespace "''CountState" Keyword.Type ' ' Text.Whitespace '[' Punctuation "'incCount" Name ']' Punctuation ')' Punctuation '\n' Text.Whitespace '-- State that stores a greeting' Comment.Single '\n' Text.Whitespace 'data' Keyword.Reserved ' ' Text.Whitespace 'GreetingState' Keyword.Type ' ' Text.Whitespace '=' Operator.Word ' ' Text.Whitespace 'GreetingState' Keyword.Type ' ' Text.Whitespace '{' Punctuation ' ' Text.Whitespace '_greeting' Name ' ' Text.Whitespace '::' Operator.Word ' ' Text.Whitespace 'Text' Keyword.Type ' ' Text.Whitespace '}' Punctuation '\n ' Text.Whitespace 'deriving' Keyword.Reserved ' ' Text.Whitespace '(' Punctuation 'Eq' Keyword.Type ',' Punctuation ' ' Text.Whitespace 'Ord' Keyword.Type ',' Punctuation ' ' Text.Whitespace 'Data' Keyword.Type ',' Punctuation ' ' Text.Whitespace 'Typeable' Keyword.Type ',' Punctuation ' ' Text.Whitespace 'Show' Keyword.Type ')' Punctuation '\n\n' Text.Whitespace '$' Operator '(' Punctuation 'deriveSafeCopy' Name ' ' Text.Whitespace '0' Literal.Number.Integer ' ' Text.Whitespace "'base" Name ' ' Text.Whitespace "''GreetingState" Keyword.Type ')' Punctuation '\n' Text.Whitespace '$' Operator '(' Punctuation 'makeLens' Name ' ' Text.Whitespace "''GreetingState" Keyword.Type ')' Punctuation '\n\n' Text.Whitespace 'initialGreetingState' Name.Function ' ' Text.Whitespace '::' Operator.Word ' ' Text.Whitespace 'GreetingState' Keyword.Type '\n' Text.Whitespace 'initialGreetingState' Name.Function ' ' Text.Whitespace '=' Operator.Word ' ' Text.Whitespace 'GreetingState' Keyword.Type ' ' Text.Whitespace '{' Punctuation ' ' Text.Whitespace '_greeting' Name ' ' Text.Whitespace '=' Operator.Word ' ' Text.Whitespace '"' Literal.String 'Hello' Literal.String '"' Literal.String ' ' Text.Whitespace '}' Punctuation '\n\n' Text.Whitespace 'getGreeting' Name.Function ' ' Text.Whitespace '::' Operator.Word ' ' Text.Whitespace 'Query' Keyword.Type ' ' Text.Whitespace 'GreetingState' Keyword.Type ' ' Text.Whitespace 'Text' Keyword.Type '\n' Text.Whitespace 'getGreeting' Name.Function ' ' Text.Whitespace '=' Operator.Word ' ' Text.Whitespace '_greeting' Name ' ' Text.Whitespace '<$>' Operator ' ' Text.Whitespace 'ask' Name '\n\n' Text.Whitespace 'setGreeting' Name.Function ' ' Text.Whitespace '::' Operator.Word ' ' Text.Whitespace 'Text' Keyword.Type ' ' Text.Whitespace '->' Operator.Word ' ' Text.Whitespace 'Update' Keyword.Type ' ' Text.Whitespace 'GreetingState' Keyword.Type ' ' Text.Whitespace 'Text' Keyword.Type '\n' Text.Whitespace 'setGreeting' Name.Function ' ' Text.Whitespace 'txt' Name ' ' Text.Whitespace '=' Operator.Word ' ' Text.Whitespace 'greeting' Name ' ' Text.Whitespace '!=' Operator ' ' Text.Whitespace 'txt' Name '\n\n' Text.Whitespace '$' Operator '(' Punctuation 'makeAcidic' Name ' ' Text.Whitespace "''GreetingState" Keyword.Type ' ' Text.Whitespace '[' Punctuation "'getGreeting" Name ',' Punctuation ' ' Text.Whitespace "'setGreeting" Name ']' Punctuation ')' Punctuation '\n' Text.Whitespace 'data' Keyword.Reserved ' ' Text.Whitespace 'Acid' Keyword.Type ' ' Text.Whitespace '=' Operator.Word ' ' Text.Whitespace 'Acid' Keyword.Type ' ' Text.Whitespace '{' Punctuation ' ' Text.Whitespace 'acidCountState' Name ' ' Text.Whitespace '::' Operator.Word ' ' Text.Whitespace 'AcidState' Keyword.Type ' ' Text.Whitespace 'CountState' Keyword.Type '\n ' Text.Whitespace ',' Punctuation ' ' Text.Whitespace 'acidGreetingState' Name ' ' Text.Whitespace '::' Operator.Word ' ' Text.Whitespace 'AcidState' Keyword.Type ' ' Text.Whitespace 'GreetingState' Keyword.Type '\n ' Text.Whitespace '}' Punctuation '\n\n' Text.Whitespace 'withAcid' Name.Function ' ' Text.Whitespace '::' Operator.Word ' ' Text.Whitespace 'Maybe' Keyword.Type ' ' Text.Whitespace 'FilePath' Keyword.Type ' ' Text.Whitespace '->' Operator.Word ' ' Text.Whitespace '(' Punctuation 'Acid' Keyword.Type ' ' Text.Whitespace '->' Operator.Word ' ' Text.Whitespace 'IO' Keyword.Type ' ' Text.Whitespace 'a' Name ')' Punctuation ' ' Text.Whitespace '->' Operator.Word ' ' Text.Whitespace 'IO' Keyword.Type ' ' Text.Whitespace 'a' Name '\n' Text.Whitespace 'withAcid' Name.Function ' ' Text.Whitespace 'mBasePath' Name ' ' Text.Whitespace 'action' Name ' ' Text.Whitespace '=' Operator.Word '\n ' Text.Whitespace 'let' Keyword.Reserved ' ' Text.Whitespace 'basePath' Name ' ' Text.Whitespace '=' Operator.Word ' ' Text.Whitespace 'fromMaybe' Name ' ' Text.Whitespace '"' Literal.String '_state' Literal.String '"' Literal.String ' ' Text.Whitespace 'mBasePath' Name '\n ' Text.Whitespace 'in' Keyword.Reserved ' ' Text.Whitespace 'withLocalState' Name ' ' Text.Whitespace '(' Punctuation 'Just' Keyword.Type ' ' Text.Whitespace '$' Operator ' ' Text.Whitespace 'basePath' Name ' ' Text.Whitespace '' Operator ' ' Text.Whitespace '"' Literal.String 'count' Literal.String '"' Literal.String ')' Punctuation ' ' Text.Whitespace 'initialCountState' Name ' ' Text.Whitespace '$' Operator ' ' Text.Whitespace '\\' Name.Function 'c' Name ' ' Text.Whitespace '->' Operator.Word '\n ' Text.Whitespace 'withLocalState' Name ' ' Text.Whitespace '(' Punctuation 'Just' Keyword.Type ' ' Text.Whitespace '$' Operator ' ' Text.Whitespace 'basePath' Name ' ' Text.Whitespace '' Operator ' ' Text.Whitespace '"' Literal.String 'greeting' Literal.String '"' Literal.String ')' Punctuation ' ' Text.Whitespace 'initialGreetingState' Name ' ' Text.Whitespace '$' Operator ' ' Text.Whitespace '\\' Name.Function 'g' Name ' ' Text.Whitespace '->' Operator.Word '\n ' Text.Whitespace 'action' Name ' ' Text.Whitespace '(' Punctuation 'Acid' Keyword.Type ' ' Text.Whitespace 'c' Name ' ' Text.Whitespace 'g' Name ')' Punctuation '\n' Text.Whitespace 'newtype' Keyword.Reserved ' ' Text.Whitespace 'App' Keyword.Type ' ' Text.Whitespace 'a' Name ' ' Text.Whitespace '=' Operator.Word ' ' Text.Whitespace 'App' Keyword.Type ' ' Text.Whitespace '{' Punctuation ' ' Text.Whitespace 'unApp' Name ' ' Text.Whitespace '::' Operator.Word ' ' Text.Whitespace 'ServerPartT' Keyword.Type ' ' Text.Whitespace '(' Punctuation 'ReaderT' Keyword.Type ' ' Text.Whitespace 'Acid' Keyword.Type ' ' Text.Whitespace 'IO' Keyword.Type ')' Punctuation ' ' Text.Whitespace 'a' Name ' ' Text.Whitespace '}' Punctuation '\n ' Text.Whitespace 'deriving' Keyword.Reserved ' ' Text.Whitespace '(' Punctuation ' ' Text.Whitespace 'Functor' Keyword.Type ',' Punctuation ' ' Text.Whitespace 'Alternative' Keyword.Type ',' Punctuation ' ' Text.Whitespace 'Applicative' Keyword.Type ',' Punctuation ' ' Text.Whitespace 'Monad' Keyword.Type ',' Punctuation ' ' Text.Whitespace 'MonadPlus' Keyword.Type ',' Punctuation ' ' Text.Whitespace 'MonadIO' Keyword.Type '\n ' Text.Whitespace ',' Punctuation ' ' Text.Whitespace 'HasRqData' Keyword.Type ',' Punctuation ' ' Text.Whitespace 'ServerMonad' Keyword.Type ' ' Text.Whitespace ',' Punctuation 'WebMonad' Keyword.Type ' ' Text.Whitespace 'Response' Keyword.Type ',' Punctuation ' ' Text.Whitespace 'FilterMonad' Keyword.Type ' ' Text.Whitespace 'Response' Keyword.Type '\n ' Text.Whitespace ',' Punctuation ' ' Text.Whitespace 'Happstack' Keyword.Type ',' Punctuation ' ' Text.Whitespace 'MonadReader' Keyword.Type ' ' Text.Whitespace 'Acid' Keyword.Type ')' Punctuation '\n\n' Text.Whitespace 'runApp' Name.Function ' ' Text.Whitespace '::' Operator.Word ' ' Text.Whitespace 'Acid' Keyword.Type ' ' Text.Whitespace '->' Operator.Word ' ' Text.Whitespace 'App' Keyword.Type ' ' Text.Whitespace 'a' Name ' ' Text.Whitespace '->' Operator.Word ' ' Text.Whitespace 'ServerPartT' Keyword.Type ' ' Text.Whitespace 'IO' Keyword.Type ' ' Text.Whitespace 'a' Name '\n' Text.Whitespace 'runApp' Name.Function ' ' Text.Whitespace 'acid' Name ' ' Text.Whitespace '(' Punctuation 'App' Keyword.Type ' ' Text.Whitespace 'sp' Name ')' Punctuation ' ' Text.Whitespace '=' Operator.Word ' ' Text.Whitespace 'mapServerPartT' Name ' ' Text.Whitespace '(' Punctuation 'flip' Name ' ' Text.Whitespace 'runReaderT' Name ' ' Text.Whitespace 'acid' Name ')' Punctuation ' ' Text.Whitespace 'sp' Name '\n' Text.Whitespace 'instance' Keyword.Reserved ' ' Text.Whitespace 'HasAcidState' Keyword.Type ' ' Text.Whitespace 'App' Keyword.Type ' ' Text.Whitespace 'CountState' Keyword.Type ' ' Text.Whitespace 'where' Keyword.Reserved '\n ' Text.Whitespace 'getAcidState' Name ' ' Text.Whitespace '=' Operator.Word ' ' Text.Whitespace 'acidCountState' Name ' ' Text.Whitespace '<$>' Operator ' ' Text.Whitespace 'ask' Name ' \n\n' Text.Whitespace 'instance' Keyword.Reserved ' ' Text.Whitespace 'HasAcidState' Keyword.Type ' ' Text.Whitespace 'App' Keyword.Type ' ' Text.Whitespace 'GreetingState' Keyword.Type ' ' Text.Whitespace 'where' Keyword.Reserved '\n ' Text.Whitespace 'getAcidState' Name ' ' Text.Whitespace '=' Operator.Word ' ' Text.Whitespace 'acidGreetingState' Name ' ' Text.Whitespace '<$>' Operator ' ' Text.Whitespace 'ask' Name '\n' Text.Whitespace 'page' Name.Function ' ' Text.Whitespace '::' Operator.Word ' ' Text.Whitespace 'App' Keyword.Type ' ' Text.Whitespace 'Response' Keyword.Type '\n' Text.Whitespace 'page' Name.Function ' ' Text.Whitespace '=' Operator.Word '\n ' Text.Whitespace 'do' Keyword.Reserved ' ' Text.Whitespace 'nullDir' Name '\n ' Text.Whitespace 'g' Name ' ' Text.Whitespace '<-' Operator.Word ' ' Text.Whitespace 'greet' Name '\n ' Text.Whitespace 'c' Name ' ' Text.Whitespace '<-' Operator.Word ' ' Text.Whitespace 'update' Name ' ' Text.Whitespace 'IncCount' Keyword.Type ' ' Text.Whitespace '-- ^ a CountState event' Comment.Single '\n ' Text.Whitespace 'ok' Name ' ' Text.Whitespace '$' Operator ' ' Text.Whitespace 'toResponse' Name ' ' Text.Whitespace '$' Operator '\n ' Text.Whitespace 'html' Name ' ' Text.Whitespace '$' Operator ' ' Text.Whitespace 'do' Keyword.Reserved '\n ' Text.Whitespace 'head' Name ' ' Text.Whitespace '$' Operator ' ' Text.Whitespace 'do' Keyword.Reserved '\n ' Text.Whitespace 'title' Name ' ' Text.Whitespace '"' Literal.String 'acid-state demo' Literal.String '"' Literal.String '\n ' Text.Whitespace 'body' Name ' ' Text.Whitespace '$' Operator ' ' Text.Whitespace 'do' Keyword.Reserved '\n ' Text.Whitespace 'form' Name ' ' Text.Whitespace '!' Operator ' ' Text.Whitespace 'action' Name ' ' Text.Whitespace '"' Literal.String '/' Literal.String '"' Literal.String ' ' Text.Whitespace '!' Operator ' ' Text.Whitespace 'method' Name ' ' Text.Whitespace '"' Literal.String 'POST' Literal.String '"' Literal.String ' ' Text.Whitespace '!' Operator ' ' Text.Whitespace 'enctype' Name ' ' Text.Whitespace '"' Literal.String 'multipart/form-data' Literal.String '"' Literal.String ' ' Text.Whitespace '$' Operator ' ' Text.Whitespace 'do' Keyword.Reserved '\n ' Text.Whitespace 'label' Name ' ' Text.Whitespace '"' Literal.String 'new message: ' Literal.String '"' Literal.String ' ' Text.Whitespace '!' Operator ' ' Text.Whitespace 'for' Name ' ' Text.Whitespace '"' Literal.String 'msg' Literal.String '"' Literal.String '\n ' Text.Whitespace 'input' Name ' ' Text.Whitespace '!' Operator ' ' Text.Whitespace 'type_' Name ' ' Text.Whitespace '"' Literal.String 'text' Literal.String '"' Literal.String ' ' Text.Whitespace '!' Operator ' ' Text.Whitespace 'id' Name ' ' Text.Whitespace '"' Literal.String 'msg' Literal.String '"' Literal.String ' ' Text.Whitespace '!' Operator ' ' Text.Whitespace 'name' Name ' ' Text.Whitespace '"' Literal.String 'greeting' Literal.String '"' Literal.String '\n ' Text.Whitespace 'input' Name ' ' Text.Whitespace '!' Operator ' ' Text.Whitespace 'type_' Name ' ' Text.Whitespace '"' Literal.String 'submit' Literal.String '"' Literal.String ' ' Text.Whitespace '!' Operator ' ' Text.Whitespace 'value' Name ' ' Text.Whitespace '"' Literal.String 'update message' Literal.String '"' Literal.String '\n ' Text.Whitespace 'p' Name ' ' Text.Whitespace '$' Operator ' ' Text.Whitespace 'toHtml' Name ' ' Text.Whitespace 'g' Name '\n ' Text.Whitespace 'p' Name ' ' Text.Whitespace '$' Operator ' ' Text.Whitespace 'do' Keyword.Reserved ' ' Text.Whitespace '"' Literal.String 'This page has been loaded ' Literal.String '"' Literal.String ' \n ' Text.Whitespace 'toHtml' Name ' ' Text.Whitespace 'c' Name '\n ' Text.Whitespace '"' Literal.String ' time(s).' Literal.String '"' Literal.String '\n ' Text.Whitespace 'where' Keyword.Reserved '\n ' Text.Whitespace 'greet' Name ' ' Text.Whitespace '=' Operator.Word '\n ' Text.Whitespace 'do' Keyword.Reserved ' ' Text.Whitespace 'm' Name ' ' Text.Whitespace '<-' Operator.Word ' ' Text.Whitespace 'rqMethod' Name ' ' Text.Whitespace '<$>' Operator ' ' Text.Whitespace 'askRq' Name '\n ' Text.Whitespace 'case' Keyword.Reserved ' ' Text.Whitespace 'm' Name ' ' Text.Whitespace 'of' Keyword.Reserved '\n ' Text.Whitespace 'POST' Keyword.Type ' ' Text.Whitespace '->' Operator.Word ' \n ' Text.Whitespace 'do' Keyword.Reserved ' ' Text.Whitespace 'decodeBody' Name ' ' Text.Whitespace '(' Punctuation 'defaultBodyPolicy' Name ' ' Text.Whitespace '"' Literal.String '/tmp/' Literal.String '"' Literal.String ' ' Text.Whitespace '0' Literal.Number.Integer ' ' Text.Whitespace '1000' Literal.Number.Integer ' ' Text.Whitespace '1000' Literal.Number.Integer ')' Punctuation '\n ' Text.Whitespace 'newGreeting' Name ' ' Text.Whitespace '<-' Operator.Word ' ' Text.Whitespace 'lookText' Name ' ' Text.Whitespace '"' Literal.String 'greeting' Literal.String '"' Literal.String '\n ' Text.Whitespace 'update' Name ' ' Text.Whitespace '(' Punctuation 'SetGreeting' Keyword.Type ' ' Text.Whitespace 'newGreeting' Name ')' Punctuation ' ' Text.Whitespace '-- ^ a GreetingState event' Comment.Single '\n ' Text.Whitespace 'return' Name ' ' Text.Whitespace 'newGreeting' Name '\n ' Text.Whitespace 'GET' Keyword.Type ' ' Text.Whitespace '->' Operator.Word ' \n ' Text.Whitespace 'do' Keyword.Reserved ' ' Text.Whitespace 'query' Name ' ' Text.Whitespace 'GetGreeting' Keyword.Type ' ' Text.Whitespace '-- ^ a GreetingState event' Comment.Single '\n' Text.Whitespace 'main' Name.Function ' ' Text.Whitespace '::' Operator.Word ' ' Text.Whitespace 'IO' Keyword.Type ' ' Text.Whitespace '()' Name.Builtin '\n' Text.Whitespace 'main' Name.Function ' ' Text.Whitespace '=' Operator.Word '\n ' Text.Whitespace 'withAcid' Name ' ' Text.Whitespace 'Nothing' Keyword.Type ' ' Text.Whitespace '$' Operator ' ' Text.Whitespace '\\' Name.Function 'acid' Name ' ' Text.Whitespace '->' Operator.Word '\n ' Text.Whitespace 'simpleHTTP' Name ' ' Text.Whitespace 'nullConf' Name ' ' Text.Whitespace '$' Operator ' ' Text.Whitespace 'runApp' Name ' ' Text.Whitespace 'acid' Name ' ' Text.Whitespace 'page' Name '\n' Text.Whitespace 'newtype' Keyword.Reserved ' ' Text.Whitespace 'FooState' Keyword.Type ' ' Text.Whitespace '=' Operator.Word ' ' Text.Whitespace 'FooState' Keyword.Type ' ' Text.Whitespace '{' Punctuation ' ' Text.Whitespace 'foo' Name ' ' Text.Whitespace '::' Operator.Word ' ' Text.Whitespace 'Text' Keyword.Type ' ' Text.Whitespace '}' Punctuation '\n ' Text.Whitespace 'deriving' Keyword.Reserved ' ' Text.Whitespace '(' Punctuation 'Eq' Keyword.Type ',' Punctuation ' ' Text.Whitespace 'Ord' Keyword.Type ',' Punctuation ' ' Text.Whitespace 'Data' Keyword.Type ',' Punctuation ' ' Text.Whitespace 'Typeable' Keyword.Type ',' Punctuation ' ' Text.Whitespace 'SafeCopy' Keyword.Type ')' Punctuation '\n\n' Text.Whitespace 'initialFooState' Name.Function ' ' Text.Whitespace '::' Operator.Word ' ' Text.Whitespace 'FooState' Keyword.Type '\n' Text.Whitespace 'initialFooState' Name.Function ' ' Text.Whitespace '=' Operator.Word ' ' Text.Whitespace 'FooState' Keyword.Type ' ' Text.Whitespace '{' Punctuation ' ' Text.Whitespace 'foo' Name ' ' Text.Whitespace '=' Operator.Word ' ' Text.Whitespace '"' Literal.String 'foo' Literal.String '"' Literal.String ' ' Text.Whitespace '}' Punctuation '\n\n' Text.Whitespace 'askFoo' Name.Function ' ' Text.Whitespace '::' Operator.Word ' ' Text.Whitespace 'Query' Keyword.Type ' ' Text.Whitespace 'FooState' Keyword.Type ' ' Text.Whitespace 'Text' Keyword.Type '\n' Text.Whitespace 'askFoo' Name.Function ' ' Text.Whitespace '=' Operator.Word ' ' Text.Whitespace 'foo' Name ' ' Text.Whitespace '<$>' Operator ' ' Text.Whitespace 'ask' Name '\n\n' Text.Whitespace '$' Operator '(' Punctuation 'makeAcidic' Name ' ' Text.Whitespace "''FooState" Keyword.Type ' ' Text.Whitespace '[' Punctuation "'askFoo" Name ']' Punctuation ')' Punctuation '\n' Text.Whitespace 'fooPlugin' Name.Function ' ' Text.Whitespace '::' Operator.Word ' ' Text.Whitespace '(' Punctuation 'Happstack' Keyword.Type ' ' Text.Whitespace 'm' Name ',' Punctuation ' ' Text.Whitespace 'HasAcidState' Keyword.Type ' ' Text.Whitespace 'm' Name ' ' Text.Whitespace 'FooState' Keyword.Type ')' Punctuation ' ' Text.Whitespace '=>' Operator.Word ' ' Text.Whitespace 'm' Name ' ' Text.Whitespace 'Response' Keyword.Type '\n' Text.Whitespace 'fooPlugin' Name.Function ' ' Text.Whitespace '=' Operator.Word '\n ' Text.Whitespace 'dir' Name ' ' Text.Whitespace '"' Literal.String 'foo' Literal.String '"' Literal.String ' ' Text.Whitespace '$' Operator ' ' Text.Whitespace 'do' Keyword.Reserved '\n ' Text.Whitespace 'txt' Name ' ' Text.Whitespace '<-' Operator.Word ' ' Text.Whitespace 'query' Name ' ' Text.Whitespace 'AskFoo' Keyword.Type '\n ' Text.Whitespace 'ok' Name ' ' Text.Whitespace '$' Operator ' ' Text.Whitespace 'toResponse' Name ' ' Text.Whitespace 'txt' Name '\n' Text.Whitespace 'data' Keyword.Reserved ' ' Text.Whitespace "Acid'" Keyword.Type ' ' Text.Whitespace '=' Operator.Word ' ' Text.Whitespace "Acid'" Keyword.Type ' ' Text.Whitespace '{' Punctuation ' ' Text.Whitespace "acidCountState'" Name ' ' Text.Whitespace '::' Operator.Word ' ' Text.Whitespace 'AcidState' Keyword.Type ' ' Text.Whitespace 'CountState' Keyword.Type '\n ' Text.Whitespace ',' Punctuation ' ' Text.Whitespace "acidGreetingState'" Name ' ' Text.Whitespace '::' Operator.Word ' ' Text.Whitespace 'AcidState' Keyword.Type ' ' Text.Whitespace 'GreetingState' Keyword.Type '\n ' Text.Whitespace ',' Punctuation ' ' Text.Whitespace "acidFooState'" Name ' ' Text.Whitespace '::' Operator.Word ' ' Text.Whitespace 'AcidState' Keyword.Type ' ' Text.Whitespace 'FooState' Keyword.Type '\n ' Text.Whitespace '}' Punctuation '\n' Text.Whitespace "withAcid'" Name.Function ' ' Text.Whitespace '::' Operator.Word ' ' Text.Whitespace 'Maybe' Keyword.Type ' ' Text.Whitespace 'FilePath' Keyword.Type ' ' Text.Whitespace '->' Operator.Word ' ' Text.Whitespace '(' Punctuation "Acid'" Keyword.Type ' ' Text.Whitespace '->' Operator.Word ' ' Text.Whitespace 'IO' Keyword.Type ' ' Text.Whitespace 'a' Name ')' Punctuation ' ' Text.Whitespace '->' Operator.Word ' ' Text.Whitespace 'IO' Keyword.Type ' ' Text.Whitespace 'a' Name '\n' Text.Whitespace "withAcid'" Name.Function ' ' Text.Whitespace 'mBasePath' Name ' ' Text.Whitespace 'action' Name ' ' Text.Whitespace '=' Operator.Word '\n ' Text.Whitespace 'let' Keyword.Reserved ' ' Text.Whitespace 'basePath' Name ' ' Text.Whitespace '=' Operator.Word ' ' Text.Whitespace 'fromMaybe' Name ' ' Text.Whitespace '"' Literal.String '_state' Literal.String '"' Literal.String ' ' Text.Whitespace 'mBasePath' Name '\n ' Text.Whitespace 'in' Keyword.Reserved ' ' Text.Whitespace 'withLocalState' Name ' ' Text.Whitespace '(' Punctuation 'Just' Keyword.Type ' ' Text.Whitespace '$' Operator ' ' Text.Whitespace 'basePath' Name ' ' Text.Whitespace '' Operator ' ' Text.Whitespace '"' Literal.String 'count' Literal.String '"' Literal.String ')' Punctuation ' ' Text.Whitespace 'initialCountState' Name ' ' Text.Whitespace '$' Operator ' ' Text.Whitespace '\\' Name.Function 'c' Name ' ' Text.Whitespace '->' Operator.Word '\n ' Text.Whitespace 'withLocalState' Name ' ' Text.Whitespace '(' Punctuation 'Just' Keyword.Type ' ' Text.Whitespace '$' Operator ' ' Text.Whitespace 'basePath' Name ' ' Text.Whitespace '' Operator ' ' Text.Whitespace '"' Literal.String 'greeting' Literal.String '"' Literal.String ')' Punctuation ' ' Text.Whitespace 'initialGreetingState' Name ' ' Text.Whitespace '$' Operator ' ' Text.Whitespace '\\' Name.Function 'g' Name ' ' Text.Whitespace '->' Operator.Word '\n ' Text.Whitespace 'withLocalState' Name ' ' Text.Whitespace '(' Punctuation 'Just' Keyword.Type ' ' Text.Whitespace '$' Operator ' ' Text.Whitespace 'basePath' Name ' ' Text.Whitespace '' Operator ' ' Text.Whitespace '"' Literal.String 'foo' Literal.String '"' Literal.String ')' Punctuation ' ' Text.Whitespace 'initialFooState' Name ' ' Text.Whitespace '$' Operator ' ' Text.Whitespace '\\' Name.Function 'f' Name ' ' Text.Whitespace '->' Operator.Word '\n ' Text.Whitespace 'action' Name ' ' Text.Whitespace '(' Punctuation "Acid'" Keyword.Type ' ' Text.Whitespace 'c' Name ' ' Text.Whitespace 'g' Name ' ' Text.Whitespace 'f' Name ')' Punctuation '\n' Text.Whitespace 'newtype' Keyword.Reserved ' ' Text.Whitespace "App'" Keyword.Type ' ' Text.Whitespace 'a' Name ' ' Text.Whitespace '=' Operator.Word ' ' Text.Whitespace "App'" Keyword.Type ' ' Text.Whitespace '{' Punctuation ' ' Text.Whitespace "unApp'" Name ' ' Text.Whitespace '::' Operator.Word ' ' Text.Whitespace 'ServerPartT' Keyword.Type ' ' Text.Whitespace '(' Punctuation 'ReaderT' Keyword.Type ' ' Text.Whitespace "Acid'" Keyword.Type ' ' Text.Whitespace 'IO' Keyword.Type ')' Punctuation ' ' Text.Whitespace 'a' Name ' ' Text.Whitespace '}' Punctuation '\n ' Text.Whitespace 'deriving' Keyword.Reserved ' ' Text.Whitespace '(' Punctuation ' ' Text.Whitespace 'Functor' Keyword.Type ',' Punctuation ' ' Text.Whitespace 'Alternative' Keyword.Type ',' Punctuation ' ' Text.Whitespace 'Applicative' Keyword.Type ',' Punctuation ' ' Text.Whitespace 'Monad' Keyword.Type ',' Punctuation ' ' Text.Whitespace 'MonadPlus' Keyword.Type ',' Punctuation ' ' Text.Whitespace 'MonadIO' Keyword.Type '\n ' Text.Whitespace ',' Punctuation ' ' Text.Whitespace 'HasRqData' Keyword.Type ',' Punctuation ' ' Text.Whitespace 'ServerMonad' Keyword.Type ' ' Text.Whitespace ',' Punctuation 'WebMonad' Keyword.Type ' ' Text.Whitespace 'Response' Keyword.Type ',' Punctuation ' ' Text.Whitespace 'FilterMonad' Keyword.Type ' ' Text.Whitespace 'Response' Keyword.Type '\n ' Text.Whitespace ',' Punctuation ' ' Text.Whitespace 'Happstack' Keyword.Type ',' Punctuation ' ' Text.Whitespace 'MonadReader' Keyword.Type ' ' Text.Whitespace "Acid'" Keyword.Type ')' Punctuation '\n\n' Text.Whitespace 'instance' Keyword.Reserved ' ' Text.Whitespace 'HasAcidState' Keyword.Type ' ' Text.Whitespace "App'" Keyword.Type ' ' Text.Whitespace 'FooState' Keyword.Type ' ' Text.Whitespace 'where' Keyword.Reserved '\n ' Text.Whitespace 'getAcidState' Name ' ' Text.Whitespace '=' Operator.Word ' ' Text.Whitespace "acidFooState'" Name ' ' Text.Whitespace '<$>' Operator ' ' Text.Whitespace 'ask' Name '\n' Text.Whitespace 'fooAppPlugin' Name.Function ' ' Text.Whitespace '::' Operator.Word ' ' Text.Whitespace "App'" Keyword.Type ' ' Text.Whitespace 'Response' Keyword.Type '\n' Text.Whitespace 'fooAppPlugin' Name.Function ' ' Text.Whitespace '=' Operator.Word ' ' Text.Whitespace 'fooPlugin' Name '\n' Text.Whitespace 'fooReaderPlugin' Name.Function ' ' Text.Whitespace '::' Operator.Word ' ' Text.Whitespace 'ReaderT' Keyword.Type ' ' Text.Whitespace '(' Punctuation 'AcidState' Keyword.Type ' ' Text.Whitespace 'FooState' Keyword.Type ')' Punctuation ' ' Text.Whitespace '(' Punctuation 'ServerPartT' Keyword.Type ' ' Text.Whitespace 'IO' Keyword.Type ')' Punctuation ' ' Text.Whitespace 'Response' Keyword.Type '\n' Text.Whitespace 'fooReaderPlugin' Name.Function ' ' Text.Whitespace '=' Operator.Word ' ' Text.Whitespace 'fooPlugin' Name '\n' Text.Whitespace 'instance' Keyword.Reserved ' ' Text.Whitespace 'HasAcidState' Keyword.Type ' ' Text.Whitespace '(' Punctuation 'ReaderT' Keyword.Type ' ' Text.Whitespace '(' Punctuation 'AcidState' Keyword.Type ' ' Text.Whitespace 'FooState' Keyword.Type ')' Punctuation ' ' Text.Whitespace '(' Punctuation 'ServerPartT' Keyword.Type ' ' Text.Whitespace 'IO' Keyword.Type ')' Punctuation ')' Punctuation ' ' Text.Whitespace 'FooState' Keyword.Type ' ' Text.Whitespace 'where' Keyword.Reserved '\n ' Text.Whitespace 'getAcidState' Name ' ' Text.Whitespace '=' Operator.Word ' ' Text.Whitespace 'ask' Name '\n' Text.Whitespace 'withFooPlugin' Name.Function ' ' Text.Whitespace '::' Operator.Word ' ' Text.Whitespace '(' Punctuation 'MonadIO' Keyword.Type ' ' Text.Whitespace 'm' Name ',' Punctuation ' ' Text.Whitespace 'MonadBaseControl' Keyword.Type ' ' Text.Whitespace 'IO' Keyword.Type ' ' Text.Whitespace 'm' Name ')' Punctuation ' ' Text.Whitespace '=>' Operator.Word ' \n ' Text.Whitespace 'FilePath' Keyword.Type ' ' Text.Whitespace '-- ^ path to state directory' Comment.Single '\n ' Text.Whitespace '->' Operator.Word ' ' Text.Whitespace '(' Punctuation 'ServerPartT' Keyword.Type ' ' Text.Whitespace 'IO' Keyword.Type ' ' Text.Whitespace 'Response' Keyword.Type ' ' Text.Whitespace '->' Operator.Word ' ' Text.Whitespace 'm' Name ' ' Text.Whitespace 'a' Name ')' Punctuation ' ' Text.Whitespace '-- ^ function that uses fooPlugin' Comment.Single '\n ' Text.Whitespace '->' Operator.Word ' ' Text.Whitespace 'm' Name ' ' Text.Whitespace 'a' Name '\n' Text.Whitespace 'withFooPlugin' Name.Function ' ' Text.Whitespace 'basePath' Name ' ' Text.Whitespace 'f' Name ' ' Text.Whitespace '=' Operator.Word '\n ' Text.Whitespace 'do' Keyword.Reserved ' ' Text.Whitespace 'withLocalState' Name ' ' Text.Whitespace '(' Punctuation 'Just' Keyword.Type ' ' Text.Whitespace '$' Operator ' ' Text.Whitespace 'basePath' Name ' ' Text.Whitespace '' Operator ' ' Text.Whitespace '"' Literal.String 'foo' Literal.String '"' Literal.String ')' Punctuation ' ' Text.Whitespace 'initialFooState' Name ' ' Text.Whitespace '$' Operator ' ' Text.Whitespace '\\' Name.Function 'fooState' Name ' ' Text.Whitespace '->' Operator.Word ' \n ' Text.Whitespace 'f' Name ' ' Text.Whitespace '$' Operator ' ' Text.Whitespace 'runReaderT' Name ' ' Text.Whitespace 'fooReaderPlugin' Name ' ' Text.Whitespace 'fooState' Name '\n' Text.Whitespace "main'" Name.Function ' ' Text.Whitespace '::' Operator.Word ' ' Text.Whitespace 'IO' Keyword.Type ' ' Text.Whitespace '()' Name.Builtin '\n' Text.Whitespace "main'" Name.Function ' ' Text.Whitespace '=' Operator.Word ' \n ' Text.Whitespace 'withFooPlugin' Name ' ' Text.Whitespace '"' Literal.String '_state' Literal.String '"' Literal.String ' ' Text.Whitespace '$' Operator ' ' Text.Whitespace '\\' Name.Function "fooPlugin'" Name ' ' Text.Whitespace '->' Operator.Word '\n ' Text.Whitespace 'withAcid' Name ' ' Text.Whitespace 'Nothing' Keyword.Type ' ' Text.Whitespace '$' Operator ' ' Text.Whitespace '\\' Name.Function 'acid' Name ' ' Text.Whitespace '->' Operator.Word '\n ' Text.Whitespace 'simpleHTTP' Name ' ' Text.Whitespace 'nullConf' Name ' ' Text.Whitespace '$' Operator ' ' Text.Whitespace "fooPlugin'" Name ' ' Text.Whitespace '`' Punctuation 'mplus' Name '`' Punctuation ' ' Text.Whitespace 'runApp' Name ' ' Text.Whitespace 'acid' Name ' ' Text.Whitespace 'page' Name '\n' Text.Whitespace