2

尽管

map (\x -> x * x) [0..9]

工作正常(也是列表理解),我做不到

map (** 2) [0..9]

因为 power 运算符需要双打,而 .. 运算符不允许它们。

有一些我可以使用的映射吗?

4

1 回答 1

2

原因是 Double 不是 Enum 的实例。

有2种可能:

  1. 使 Double 成为 Enum 的实例。
  2. 使用将 Int 值转换为您需要的任何数字类型的函数:

例如:

(map (** 2) . map fromInt) [0..9]

或者,如果您愿意:

map ((** 2) . fromInt) [0..9]
于 2013-09-04T12:45:35.483 回答