gpt4 book ai didi

haskell - 验证 lambda 表达式的类型

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

我需要验证 lambda 表达式的类型: lambdaexp

我的方法给了我: result

我试图在 Haskell 中(在 Hugs 上)定义它,如下所示:

h= \f x -> f (f x)

当我调用 :type comamnd 时,它会给我:

(a -> a) -> a -> a

mi 函数在 Haskell 中定义正确吗?或者我的方法给出了错误的结果?

最佳答案

请注意,f 会以 xf x 作为其参数来调用,这立即意味着 x< 的类型f x 的类型必须相同[1]。继续这个论点,我们看到,由于 xf 的输入,而 f xf 的输出,f 的输入和输出必须相同[2]。

最后,我们检查 lambda 项

\f x -> f (f x)

它有两个输入,f(函数)和 x,并且它返回 f 的返回类型[3] 。将所有这些信息放在一起,我们得到了

(a -> b) -> c -> d

where:

b ~ c by [1]
a ~ b by [2]
d ~ b by [3]

因此 Haskell 推断出的类型是正确的

h :: (a -> a) -> a -> a
h f x = f (f x)

关于haskell - 验证 lambda 表达式的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22495616/

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