gpt4 book ai didi

haskell - ghc 7.4.2,动态调用模块

转载 作者:行者123 更新时间:2023-12-03 01:30:56 26 4
gpt4 key购买 nike

我正在尝试动态加载和执行模块,

下面是我的代码

TestModule.hs

module TestModule
where

evaluate = "Hello !!!"

调用.hs

module Invoke
where

import GHC
import DynFlags
import GHC.Paths (libdir)
import Unsafe.Coerce (unsafeCoerce)
import Data.Dynamic

execFnGhc :: String -> String -> Ghc a
execFnGhc modname fn = do
mod <- findModule (mkModuleName modname) Nothing
--setContext [IIModule mod]
GHC.setContext [ GHC.IIDecl $ (GHC.simpleImportDecl . GHC.mkModuleName $ modname) {GHC.ideclQualified = True} ]
value <- compileExpr (modname ++ "." ++ fn)
let value' = (unsafeCoerce value) :: a
return value'

Main2.hs

import GHC.Paths (libdir)
import GHC
import Invoke
-- import TestModule

main :: IO ()
main = runGhc (Just libdir) $ do
str <- execFnGhc "TestModule" "evaluate"
return str

当我尝试运行该程序时,它显示以下错误

[root@vps mypproj]# ./Main2 
Main2: <command line>: module is not loaded: `TestModule' (./TestModule.hs)

不确定我缺少什么,有人可以帮我解决此错误吗

最佳答案

我的想法是问题与您的路径有关,并且程序在无法加载“TestModule”时会默默地出错,然后提示该模块未加载。您是否尝试过将 execFnGhc 与已加载的模块一起使用,并且是否尝试过自然加载 GHC 中的模块(例如 Text.Parsec),然后在其中执行某些操作?

我会测试自己,但我在任何地方都没有看到 GHC.Paths 库:/。

关于haskell - ghc 7.4.2,动态调用模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15824756/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com