Mat*_*ick 8 haskell functional-programming combinators higher-order-functions
我一直在阅读关于组合器的信息,看看它们有多大用处(例如,在Haskell的Parsec中).我的问题是,我不太确定如何实际使用它们.
以下是问题的概述:可以生成,过滤和修改分布.可以组合分布以创建新的分布.
基本接口是(伪Haskell类型术语):
generator:: parameters -> distribution
selector:: parameters -> (distribution -> distribution)
modifier:: parameters -> (distribution -> distribution)
Run Code Online (Sandbox Code Playgroud)
现在,我认为我看到了三个组合器:
combine:: generator -> generator -> generator
filter:: generator -> selector -> generator
modify:: generator -> modifier -> generator
Run Code Online (Sandbox Code Playgroud)
这些实际上是组合器吗?组合器是否有意义/是否还有其他明显的组合器我缺少?
谢谢你的建议.
这些selector和modifier功能已经是完美的组合!除了generator和combine你可以做这样的东西(我要承担的具体性的统计分布,只是使事情了!):
modifier (Scale 3.0) $ generator StandardGaussian `combine` selector (LargerThan 10) . modifier (Shift 7) $ generator (Binomial 30 0.2)
Run Code Online (Sandbox Code Playgroud)
您可能需要使用组合运算符的优先级来使它顺利运行:)
一般来说,当我尝试为类型的值设计组合器库时A,我喜欢将我A的"结尾" 保留在最后,以便部分应用的组合器(你的selector和modifier)可以链接在一起,.而不是必须flip通过篮球.
这是一篇很好的博客文章,它可以帮助你设计组合器,它影响了我的很多想法:语义编辑器组合器.
编辑:考虑到类型签名,我可能误解了你的问题combine.也许我错过了一些东西,但是这些分布不是你的组合器应该工作的更自然的东西吗?
| 归档时间: |
|
| 查看次数: |
297 次 |
| 最近记录: |