gpt4 book ai didi

haskell - 隐式调用函数

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

我需要找到一种在 Haskell 中隐式调用函数的方法,就像在 Scala 中使用隐式函数一样。

我研究过使用 {-# LANGUAGE ImplicitParams #-}Implicit parameter and function 中所示但如果不明确定义它,我无法弄清楚如何实现类似的目标。

这是我的代码的一个非常精简的版本

a :: Int -> Int
a n = n + 1

b :: [Char] -> Int
b cs = length cs

我希望能够运行

Test> a "how long" -- outputs 8, as it implicitly calls a (b "how long")

以及

Test> a 5 -- outputs 6

最佳答案

您在这里描述的是 ad hoc polymorphism [wiki] 。在 Haskell 中,这是通过 type classes [wiki] 实现的.

例如,我们可以定义一个类:

class Foo c where
a :: c -> Int

现在我们可以定义 Foo 的两个实例:一个 Int 实例和一个 String 实例:

{-# LANGUAGE <b>FlexibleInstances</b> #-}

instance Foo [Char] where
a = length

instance Foo Int where
a = (+) 1

接下来我们可以调用a:

Prelude> a "how long"
8
Prelude> a (5 :: Int)
6

关于haskell - 隐式调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58673757/

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