gpt4 book ai didi

Haskell - 定义交换函数 : How to consider actual arguments by combination, 不是排列

转载 作者:行者123 更新时间:2023-12-01 08:54:53 25 4
gpt4 key购买 nike

我想定义一个函数,它认为它是相同类型的参数而不考虑它们的顺序。例如:

weirdCommutative :: Int -> Int -> Int
weirdCommutative 0 1 = 999
weirdCommutative x y = x + y

我希望这个函数实际上是可交换的。一种选择是添加模式:

weirdCommutative 1 0 = 999

甚至更好:

weirdCommutative 1 0 = weirdCommutative 0 1

现在让我们看一下一般情况:可能有两个以上的参数和/或两个值需要无顺序地考虑 - 所以考虑所有可能的情况变得很棘手。

有谁知道在 Haskell 中定义交换函数的一种干净、自然的方法?

我想强调的是,我正在寻找的解决方案是通用的,除了可以使用 == 比较值(意味着类型在 Eq 类型类中,但不一定在 Ord 类型类中)。

最佳答案

其实有a package它提供了一个 monad 和一些用于定义和使用交换函数的脚手架。另见 blog post.

关于Haskell - 定义交换函数 : How to consider actual arguments by combination, 不是排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29210248/

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