haskell中可以引用模塊嗎?我有幾個模塊,每個模塊都暴露相同的接口(兩個同名和簽名的函數)。是否有可能列出這些模塊,以便爲每個模塊調用函數。Haskell對模塊的引用
0
A
回答
3
如何爲界面定義數據類型?每個模塊提供數據類型的單個實例,然後您可以遍歷所有實例。
-- ModuleInterface.hs
-- Replace types of the functions with actual types
data ModuleInterface = ModuleInterface (Int -> Bool -> Int) (String -> Int)
-- ModuleA.hs
moduleInterface :: ModuleInterface
moduleInterface = ModuleInterface f1 f2
-- Declare f1 and f2
-- ModuleB.hs
moduleInterface :: ModuleInterface
moduleInterface = ModuleInterface f1 f2
-- Declare f1 and f2
-- Main.hs
-- Simple example showing how to "call" all of the functions. If you are doing
-- IO, then you would have to use something like mapM.
transform :: [ModuleInterface] -> Int -> Bool -> String -> [(Int, Int)]
transform interfaces i b s = map f interfaces
where f (ModuleInterface g h) = (g i b, h s)
0
我不確定你想要什麼,但名稱衝突通常只需使用合格的導入來解決。在下面的一個例子觀察S.
和M.
明確地說哪個模塊的功能或類型在不在。
import qualified Data.Set as S
import qualified Data.Map as M
mySet :: S.Set Int
mySet = S.fromList [1,2,3]
myMap :: M.Map String Int
myMap = M.fromList [("a", 1), ("b", 2), ("c", 3)]
main = do
print mySet
print myMap
print $ S.member 2 mySet
print $ M.lookup "c" myMap
但它從你的問題,你找一些元編程解決方案,那就是你有值似乎那就是模塊,比如說setModule, mapModule :: Module
,並且使用getter就像getFunctions :: Module -> [Functions]
。我確信這不存在,因爲它不適合靜態類型語言。然而,如果你嚴重誤用Template Haskell或宏,你可能會掀起一些東西。
相關問題
- 1. 導入Haskell模塊
- 2. 擴展Haskell模塊
- 3. Haskell導入模塊
- 4. Haskell引用自己的模塊中的值
- 5. 如何獲得對模塊的引用?
- 6. 的Node.js:模塊系統,對象引用
- 7. Haskell找不到模塊`Network.HTTP.Conduit'
- 8. Haskell模塊命名約定
- 9. Haskell模塊導入本身
- 10. 模塊引用類
- 11. Haskell模式「找不到模塊」
- 12. PHPStorm和模塊的引用
- 13. AngularJS:未捕獲錯誤:[$ injector:nomod]模塊_不可用! |對模塊的多重引用
- 14. Haskell導出當前模塊與額外的導入模塊
- 15. 有引用模板haskell函數嗎?
- 16. 模塊的名稱和路徑在Haskell
- 17. 卡住Haskell的模塊輸出
- 18. 如何在不引用c對象的情況下導入使用FFI的haskell模塊?
- 19. Literate Haskell:引用和索引
- 20. 從haskell模塊提取導入模塊列表
- 21. 打字稿模塊引用
- 22. RequireJS模塊相互引用
- 23. NodeJS引用導出模塊
- 24. 一對多的關係,查看使用引用模塊
- 25. 如何引用父級Javascript揭示模塊模式對象
- 26. haskell:跨沙箱共享模塊?
- 27. Haskell linux安裝模塊不帶cabal
- 28. 如何在haskell中安裝模塊
- 29. haskell GHCi不能導入模塊
- 30. 找不到模塊「System.Console.Readline」在Haskell
是的,TH是主意。謝謝。 – KAction 2012-07-21 10:34:45