gpt4 book ai didi

Haskell 类型和签名

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

我正在准备 Haskell 考试。我不明白如何确定函数的类型。其功能是:

func [] f = 16
func (h : t) f = (f h) + (func t f)

我的猜测是第一行具有以下类型:empty list -> a -> a 其中a 必须是数字类型。在 Haskell 表示法中 Num a => [] -> a -> a ,第二行具有以下类型: [a]-> a -> ? 它返回什么?也许 (a, a) 因为 (f h) 是一个元组。 (func t f) 怎么样,是 a 还是?如何将两条线混合在一起?

最佳答案

func [] f = 16

这一行定义了一个函数func,接受列表和f,并返回16。该类型可以写为 Num a => [b] -> c -> a

func (h : t) f = (f h) + (func t f)

此行将 f 类型限制为 Num a => b -> a,因为:

  1. f 应接受列表中的元素
  2. f ... 应该返回一个值,该值可以添加到 func ... 的结果中

所以,func的类型是:

Num a => [b] -> (b -> a) -> a

关于Haskell 类型和签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32933776/

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