2

我正在为学校做haskell作业。我想创建一个名为 MapTuple 的函数,它将一个函数映射为一个元组作为元组数组的参数。我通过以下方式声明它:

MapTuple :: [(a,b)] -> (a -> b) -> [b]

我想使用该功能的方式如下。

MapTuple :: [(Int, String)] -> (Int -> String) -> [String]

但是问题是我在编译时收到以下错误:

无效的类型签名:MapTuple :: ([(a, b)]) -> (a -> b) -> [b] 应该是格式 ::

我究竟做错了什么?

非常感谢您提前帮助我!

4

1 回答 1

7

Haskell 有一个命名约定,它实际上是语言的一部分

  • 函数以小写开头
  • 构造函数以大写开头

所以你需要MapTuple改为mapTuple

至于什么是构造函数,

 data Foo = ThisIsAConstructor

它基本上是一个返回Foo.

于 2013-09-18T20:03:59.227 回答