2

その間

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

正常に動作しています(リストの理解も)、できません

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

べき乗演算子は double を必要とし、.. 演算子は double を許可しないためです。

使用できるマッピングはありますか?

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 に答える