我正在寻找一种安全运行任意Haskell代码的方法(或拒绝运行不安全的代码)。
必须:
我喜欢的功能:
使用这种功能,可以实现一个能够运行任意Haskell代码的浏览器插件,这是我想到的。
编辑:我有两个答案,都很棒。谢谢!可悲的是,似乎没有现成的图书馆,只是一个类似的程序。这是一个有用的资源。无论如何,我想我会等待7.2.1被释放并尝试在我自己的程序中使用SafeHaskell。
答案 0 :(得分:31)
我们已经在lambdabot中做了大约8年,这支持:
记录了这一系列规则,请参阅:
lambdabot采用的安全方法启发了Safe Haskell语言扩展工作。
对于动态扩展已编译的Haskell应用程序的方法,在Haskell中,请参阅两篇论文:
答案 1 :(得分:26)
GHC 7.2.1可能会有一个名为SafeHaskell的新设施,它涵盖了你想要的一些内容。 SafeHaskell确保类型安全(因此unsafePerformIO
之类的内容被禁止),并建立信任机制,因此可以信任具有安全API但使用不安全功能实现的库。它专为运行不受信任的代码而设计。
对于其他实际方面(超时等),唐说的lambdabot将是一个很好看的地方。