gpt4 book ai didi

Haskell 类型声明

转载 作者:行者123 更新时间:2023-12-01 06:59:28 25 4
gpt4 key购买 nike

在 Haskell 中,为什么要编译:

splice :: String -> String -> String
splice a b = a ++ b
main = print (splice "hi" "ya")

但这不会:
splice :: (String a) => a -> a -> a
splice a b = a ++ b
main = print (splice "hi" "ya")

>> Type constructor `String' used as a class

我会认为这些是同一件事。有没有办法使用第二种样式,避免重复类型名称 3 次?

最佳答案

=>类型中的语法适用于 typeclasses .

当你说 f :: (Something a) => a ,你不是说 aSomething ,您是说它是“组中”的类型 Something类型。

例如,Num是一个类型类,包括 Int 等类型和 Float .
仍然没有类型 Num ,所以我不能说

f :: Num -> Num
f x = x + 5

然而,我可以说
f :: Int -> Int
f x = x + 5

或者
f :: (Num a) => a -> a
f x = x + 5

关于Haskell 类型声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10486921/

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