【问题标题】:Trying to create a Function that checks whether 2 Functions are Equal Haskell [duplicate]尝试创建一个函数来检查 2 个函数是否相等 Haskell [重复]
【发布时间】:2021-12-04 17:08:18
【问题描述】:
checkEquality :: (Enum a, Eq b) => (a->b) -> (a->b) -> Bool

checkEquality f g = if f == g then True else False

我正在尝试创建一个函数来检查两个函数是否相等,但我似乎无法确定在键入函数时究竟要做什么。如果我能得到一些关于该做什么的指示,我将不胜感激。到目前为止我尝试过的都在那里

相等意味着函数产生相同的答案,例如 X^2 = x * x

【问题讨论】:

标签: haskell


【解决方案1】:

虽然到目前为止的答案是正确的,因为一般情况下不可能这样做,但在您的情况下几乎可以这样做。在我看来,你被赋予了这个任务,所以我只会给你一些提示/指针:

  • 一般情况下,对于a -> b 类型的两个任意函数,这是不可能的 - 所以这一定意味着您应该使用已经提供给您的其他东西
  • 在数学中,对于两个函数,通常认为它们“在所有点上”相等就足够了,即对于所有输入值 x, f(x) == g( x)
  • 在您的情况下,您确实可以检查结果是否相等 - 您有一个 Eq b,允许您比较 a -> b 类型的两个函数的结果
  • 您唯一需要弄清楚的是 - 您是否还有其他东西可以让您检查 a 类型的所有值?

答案是否定的,但这只是因为我认为如果没有对 a 应该是什么(它应该有什么其他实例)的额外限制,这是不可能的 - 你已经可以“通过”类型值a 使用 Enum,但你真的不知道“从哪里开始”。

【讨论】:

    猜你喜欢
    • 2013-12-03
    • 1970-01-01
    • 2013-12-02
    • 1970-01-01
    • 1970-01-01
    • 2021-03-28
    • 1970-01-01
    • 2015-08-24
    相关资源
    最近更新 更多