Running haskell from within Haskell
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(kick y x); Thanks in advance. Vivian
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
participants (2)
-
dons@cse.unsw.edu.au -
Vivian McPhail