vivian.mcphail:
Dear All, I have a parser which has entries for each word, such as:
ate = s \ np / np : ^x y.did(eat y x);
so each word has a type (s \ np / np) and a semantics (the lambda term ^x y.did(eat y x)).
Currently I parse the semantics into lambda terms and use my own lambda-interpreter to do evaluation.
"I ate a python programmer" would be evaluated as:
did(eat I (a python programmer))
What I would like to be able to do is actually use haskell functions in the semantic slot for each word. This requires parsing a fragment of a file into haskell and then making it available as code within my program.
Is this possible?
for example:
kicked = s \ np / np : \x y -> case x of
(the bucket) = did(die y)
_ = did(k ick y x);
Thanks in advance.
You may be able to use the eval functions provided by hs-plugins http://www.cse.unsw.edu.au/~dons/hs-plugins/ A number of mini-edsl-interpreters for Haskell have been written this way. Where: eval :: Typeable a => String -> [Import] -> IO (Maybe a) An example of an interpreter for Haskell, using this mechanism, is at: http://www.cse.unsw.edu.au/~dons/hs-plugins/hs-plugins-Z-H-14.html#node_chap... -- Don