1
1
mirror of https://github.com/github/semantic.git synced 2024-12-22 06:11:49 +03:00

Expand on the 📝 for eval to mention the open-recursive child term evaluator.

This commit is contained in:
Rob Rix 2017-12-21 11:32:34 -05:00
parent d2d37375b1
commit be7295223f

View File

@ -20,7 +20,7 @@ import Prelude hiding (fail)
-- | The 'Eval' class defines the necessary interface for a term to be evaluated. While a default definition of 'eval' is given, instances with computational content must implement 'eval' to perform their small-step operational semantics.
class Monad m => Eval term v m constr where
-- | Evaluate a term.
-- | Evaluate a term using an open-recursive evaluator for any child terms.
eval :: ((v -> m v) -> term -> m v) -> ((v -> m v) -> constr term -> m v)
default eval :: (MonadFail m, Show1 constr) => ((v -> m v) -> term -> m v) -> ((v -> m v) -> constr term -> m v)