繁体   English   中英

加载动态Haskell模块

[英]Loading dynamic haskell module

我正在寻找一种从字符串加载Haskell函数以运行的方法。 我事先知道类型,但是不知道函数的内容。

理想情况下,解决方案将是快速的,并且不需要在IO中运行。

我一直在查看提示(Language.Haskell.Interpreter),但是它不适合使用帐单(显示eval调用,模块必须在文件中)。

任何帮助,将不胜感激。

hintplugins是主要选项。 hint使您可以将函数解释为字节码, plugins使用已编译的目标代码。

请注意,由于这些“ eval”函数必须在运行之前进行类型检查,因此它们很少是纯值,因为评估可能会因类型错误而失败。

抽象的答案是,您只需要使(->)成为Read的实例(并且可能在显示显示 )。

我不知道你到底应该怎么做。 解释代码绝非易事。

如果您要处理简单的函数,则建议创建一个代数数据类型来表示它们。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM