gpt4 book ai didi

haskell - 与 lambda 表达式组合 haskell

转载 作者:行者123 更新时间:2023-12-05 08:45:38 25 4
gpt4 key购买 nike

我尝试了一个将组合与 lambda 表达式结合使用的虚拟示例。下面的代码可以编译,但是当我尝试 (f.g) 3 2

时它没有运行
f x = x^2
g x = 5*x

f.g = \x -> f(g x)

它给出这样的错误:

Ambiguous occurrence `.'
It could refer to
either `Prelude..',
imported from `Prelude' at list3.hs:1:1
(and originally defined in `GHC.Base')
or `Main..', defined at list3.hs:42:3.

谁能告诉我问题出在哪里?

最佳答案

您定义了一个合成运算符,它沿着从 Prelude 导入的运算符存在。 定义没有错;当您尝试使用 它时会出现问题,因为编译器无法判断是否有类似的东西

main = print $ f . g $ 10

应该使用 Prelude 中的 .Main 模块中的 .

一个解决方案是简单地明确说明您想要两者中的哪一个。

f . g = \x -> f (g x)

main = print $ f Main.. g $ 10

或者首先不导入 Prelude 版本。

{-# LANGUAGE NoImplicitPrelude #-}

import Prelude hiding ((.))

-- Now this is the *only* definition.
f . g = \x -> f (g x)

main = print $ f . g $ 10

关于haskell - 与 lambda 表达式组合 haskell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72119381/

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