[英]haskell load module in list
嘿,haskellers 和 haskellettes,是否可以在列表中加载模块功能。 在我的具体情况下,我有一个功能列表,所有这些功能都用 or
checkRules :: [Nucleotide] -> Bool
checkRules nucs = or $ map ($ nucs) [checkRule1, checkRule2]
我确实从单独的模块导入 checkRule1 和 checkRule2 - 我不知道将来是否需要更多。
我想要相同的功能看起来像
-- import all functions from Rules as rules where
-- :t rules ~~> [([Nucleotide] -> Bool)]
checkRules :: [Nucleotide] -> Bool
checkRules nucs = or $ map ($ nucs) rules
该程序根据给定的规则在可行和不可行的序列中对假核苷酸序列进行排序。 在此先感谢 ε/2
附录:所以我认为正确 - 我需要:
genList :: File -> TypeSignature -> [TypeSignature]
chckfun :: (a->b) -> TypeSignature -> Bool
在编译时。 但我无法生成模块中所有函数的列表——因为它们很可能没有相同的类型签名,因此并不都适合一个列表。 所以我不能用 chckfun 过滤给定的列表。
我想到的另一个问题是:不是每个写在源文件中的 function 都可能被导出?
这是一个 haskell 初学者应该在 5 个月的学习后尝试解决的问题吗?在所有这些“编译时思考”之后,我的大脑就像克莱因瓶一样。
在 Hackage 上有一个不错的 package 就是为了这个: language-haskell-extract 。 特别是,模板 Haskell function functionExtractor
采用正则表达式并将匹配的顶级绑定列表作为(name, value)
对返回。 只要它们都有匹配的类型,您就可以使用 go。
{-# LANGUAGE TemplateHaskell #-}
import Language.Haskell.Extract
myFoo = "Hello"
myBar = "World"
allMyStuff = $(functionExtractor "^my")
main = print allMyStuff
Output:
[("myFoo", "Hello"), ("myBar", "World")]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.