开发者

Loading dynamic haskell module

I'm looking for a way to load a Haskell function from a string to run. I know the type before hand, but don't know the contents of the 开发者_如何学JAVAfunction.

Ideally, a solution would be quick and not need to run in IO.

I've been looking at hint (Language.Haskell.Interpreter), but it doesn't fit bill (eval calls show, modules must be in files).

Any help would be appreciated.


hint and plugins are the main options. hint lets you interpret functions as bytecode, plugins uses compiled object code.

Note that since these 'eval' functions must be type-checked prior to running them, they're rarely pure values, as evaluation may fail with a type error.


The abstract answer is that you just have to make (->) an instance of Read (and possibly Show while you're at it)

How on earth you are supposed to do that, I don't know. It's no small task to interpret code.

If you are dealing with simple functions, the I would suggest creating an algebraic data type to represent them.

data Fun = Add | Subtract | Multiply deriving (Eq, Show, Read)

runFun Add      = (+)
runFun Subtract = (-)
runFun Multiply = (*)

*Main> runFun (read "Add") 2 3
5
*Main> runFun (read "Multiply") 2 3
6
*Main> runFun (read "Subtract") 2 3
-1
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜