gpt4 book ai didi

haskell - 在 Haskell 中具有 -> a -> a 的功能?

转载 作者:行者123 更新时间:2023-12-02 02:52:24 24 4
gpt4 key购买 nike

我正在阅读 Haskell 编程书和第 140 页的练习,作者指出:
A hypothetical function a->a->a has two possible implementations. Write both possible versions.
我假设 a -> a -> a将意味着一个带有两个参数的函数 (a and a) - (这对我来说没有意义,如果我将一个带有两个参数的函数声明为 a ,ghci 也会正确地提示)并返回 a
我想我错过了什么,是什么?

最佳答案

思考这个问题的方法,或许就是想象一下我们对你的论点有多少不了解 aa .

例如,我们不可能说以下的话:

someFunc :: a -> a -> a
someFunc x y = x == y

这不会进行类型检查,因为我们甚至不知道 a是类型类 Eq 的一个实例.换句话说,我们没有关于这些 a 的有用信息。除了它们是相同类型的东西(无论是什么)。

考虑恒等函数:
ident :: a -> a
ident x = ...

这个函数对它唯一的参数 x 一无所知.因此,只有一种可能的有效结果:
ident x = x

没有其他方法行得通,因为我们无法对我们的论点做出任何其他假设。

现在,在您的情况下,您有两个参数,它们绝对可以是宇宙中的任何东西。对于这两个参数可以符合的任何行为,我们无法做出任何可能的断言。因此,我们可以用两种不同的方式定义我们的函数:
someFunc1 :: a -> a -> a
someFunc1 x y = x

或者
someFunc2 :: a -> a -> a
someFunc2 x y = y

没有其他有效的方法来表示这个函数。

关于haskell - 在 Haskell 中具有 -> a -> a 的功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47257942/

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