gpt4 book ai didi

haskell - 我可以拥有完全多态的函数吗?

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

是否可以有一个完全类型二义性的函数?该函数是否具有如下类型签名:

Poly :: a -> a

其中 a 是类型变量,类似于类型构造函数声明或类型类要求所使用的语法?

data TypeConstructor a = One | Two a
Func :: Num a => a -> a

是否可以创建一个无处不在的 id 函数,它总是返回自己的值,而不必知道正在使用什么值构造函数?

id :: a -> a

最佳答案

就像其他人所说的那样,如果 Haskell 函数不使用基础类型的任何具体功能,则默认情况下它们会自动实现多态。如果您打开 ghci 并输入:

>>> let f x = x

...然后询问它f的类型,它会自动推断f是完全多态的:

>>> :type f
f :: t -> t

如果您使用文件,同样的事情。您可以定义:

f x = x

...编译器将推断 f 的类型为 a -> a。您还可以显式注释 f:

f :: a -> a
f x = x

关于haskell - 我可以拥有完全多态的函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17119346/

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