From 18c9cfd7c1fb4baf1789f178a8d56ddb8f0f1456 Mon Sep 17 00:00:00 2001 From: Charles Date: Sat, 14 Mar 2020 12:41:34 +0100 Subject: Draft expr compatibility --- src/context.hs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 src/context.hs (limited to 'src/context.hs') 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 + + -- cgit