gpt4 book ai didi

Haskell:重载签名并针对不同的输入类型返回不同的结果

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

我需要这个功能:

blubb :: ??? -> Int
blubb (n :: Int) = n
blubb (n :: Char) = 42

它应该是这样工作的:函数获取一个Int并返回它。如果函数获取 Char,它将返回一个常量值,其他情况无关紧要。

由于 Haskell 中的类型系统,这可能是不可能的,但我需要让它工作......

最佳答案

这就是类型类的用途:

class Blubb t where
blubb :: t -> Int


instance Blubb Int where
blubb n = n

instance Blubb Char where
blubb _ = 42

这会重载 blubb 以同时处理 IntChar 。编译器将根据参数的类型选择正确的参数。

但是,请注意,您没有在实际需要 Either 的地方使用类型类。您可能实际上想要这个:

blubb :: Either Int Char -> int
blubb (Left n) = n
blubb (Right _) = 42

关于Haskell:重载签名并针对不同的输入类型返回不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14304765/

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