【发布时间】:2023-03-29 10:01:02
【问题描述】:
假设我有一个名为“Coord”的数据类型,其定义如下:
type Coord a = [(Int, Int)]
我想创建一个“坐标”类型的变量以在下面的函数中使用。该函数接收一个 Coord 类型的变量,并将列表中每个项目的 x 坐标乘以 2。然后将这些新坐标中的每一个存储在一个 NEW Coord 变量中;我不确定如何创建/声明/使用这个我打算返回的新变量。
foo :: (Eq a) => Coord a -> Coord a
【问题讨论】:
-
你是如何创建你的第一个坐标变量的?
-
不应该是
type Coord a = [(a, a)]吗?或newtype Coord a = Coord [(a, a)]. -
@DarrelGulseth: 但是我不明白为什么(a)你仍然使用
a类型参数,因为它没有在type子句的“正文”中使用,并且(b) 为什么要添加Eq约束。 -
@DarrelGulseth “好吧,如果我要在我的坐标中接受任何类型,那么是的,但我只想要整数”然后你不需要
a。应该是type Coord = [(Int, Int)] -
@DarrelGulseth 我看到了
type Coord a = [(Int, Int)]。那里有一个a对你没有任何用处,除非你接受任何类型。
标签: function variables haskell functional-programming