使用Haskell';s";“评估”;计算整个模块而不是单个值的步骤

使用Haskell';s";“评估”;计算整个模块而不是单个值的步骤,haskell,dynamic,eval,ghc,Haskell,Dynamic,Eval,Ghc,我一直在玩弄由提供的“eval”函数。它对于评估单个函数非常有效 我想知道,是否有一种方法可以输入整个模块,并计算该模块中的值(但允许该值引用模块中的其他内容) 例如,现在我正在做一些类似的事情 x :: Int where y = 2 z = 3 x = y+z module Foo where import Bar x :: Int x = y+z y = 2 :: Int z = 3 :: Int 我想做点像 x :: Int where

我一直在玩弄由提供的“eval”函数。它对于评估单个函数非常有效

我想知道,是否有一种方法可以输入整个模块,并计算该模块中的值(但允许该值引用模块中的其他内容)

例如,现在我正在做一些类似的事情

x :: Int
  where 
    y = 2
    z = 3
    x = y+z
module Foo where
import Bar

x :: Int
x = y+z

y = 2 :: Int
z = 3 :: Int
我想做点像

x :: Int
  where 
    y = 2
    z = 3
    x = y+z
module Foo where
import Bar

x :: Int
x = y+z

y = 2 :: Int
z = 3 :: Int
然后我在字符串上使用“eval”并以某种方式返回
x


我可以使用plugins.load函数,但我真的希望能够从字符串计算directoy,而不必从对象或临时文件加载

它怎么知道你需要的是x而不是y或z?就像你使用Plugins.Load时一样,你可以给它一个你要找的名字的参数。我认为直接从字符串来做这件事是没有好方法的。我试过了,但结果真是一团糟,我甚至不知道如何加载模块(只有解析/简化/类型检查)。GHC希望处理文件,仅此而已。