簡體   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