diff options
Diffstat (limited to 'src/context.hs')
| -rw-r--r-- | src/context.hs | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/context.hs b/src/context.hs new file mode 100644 index 0000000..c5abfe0 --- /dev/null +++ b/src/context.hs @@ -0,0 +1,22 @@ +module Context where + +import Data.List +import Control.Alternative + +type Label = String +data State a = State [a] +data Context a = Context [Decl] a + +instance Functor Context where + fmap f (Context state x) = Context (f x) state + +getLabel :: Declaration a => State a -> Label -> Maybe a +getLabel (State decls) l = find (label . (l ==)) decls + +class Declaration a where + label :: a -> Label + -- value for variable + -- partial expression where the only variable left is the argument + resolve :: a -> State -> b + + |
