gpt4 book ai didi

haskell - 不确定如何使用组合器设计有用的库

转载 作者:行者123 更新时间:2023-12-04 08:28:58 26 4
gpt4 key购买 nike

我一直在阅读有关组合器的文章,并看到它们有多么有用(例如,在 Haskell 的 Parsec 中)。我的问题是我不太确定如何实际使用它们。

这是问题的概要:可以生成、过滤和修改分布。可以组合分布以创建新分布。

基本接口(interface)是(在伪 Haskell 类型术语中):

generator::      parameters -> distribution

selector:: parameters -> (distribution -> distribution)

modifier:: parameters -> (distribution -> distribution)

现在,我认为我看到了三个组合器:
combine::     generator -> generator -> generator

filter:: generator -> selector -> generator

modify:: generator -> modifier -> generator

这些实际上是组合器吗?组合器是否有意义/我还缺少其他明显的组合器吗?

感谢您的任何建议。

最佳答案

selectormodifier函数已经是非常好的组合器!连同 generatorcombine你可以做类似的事情(我将假设具体的统计分布并只是弥补!):

modifier (Scale 3.0) $ generator StandardGaussian `combine` selector (LargerThan 10) . modifier (Shift 7) $ generator (Binomial 30 0.2)

您可能需要对 combine 运算符的优先级进行一些处理才能使其顺利工作:)

通常,当我尝试为 A 类型的值设计组合库时, 我喜欢保留我的 A的“最后”,以便部分应用的组合器(您的 selectormodifier )可以与 . 链接在一起而不必 flip通过篮球。

这是一篇很好的博客文章,可以帮助您设计组合器,它影响了我的很多想法: Semantic Editor Combinators .

编辑:鉴于 combine 的类型签名,我可能误读了您的问题.也许我遗漏了一些东西,但分布不是你的组合器应该处理的更自然的对象吗?

关于haskell - 不确定如何使用组合器设计有用的库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7082008/

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