を選択するf2 = map
と、思いついた最初のステップにすぐにたどり着きます。
f2 (*) [1, 2, 3, 4] =
map (*) [1, 2, 3, 4] =
[(1 *), (2 *), (3 *), (4 *)]
この乗数関数のリストを考えると、次のものが必要です。
f1 [g1, g2, ..., gn] x =
[g1 x, g2 x, ..., gn x]
それ以来、それを適用しf2 (*) [1..4]
て取得できます
f1 [(1 *), (2 *), (3 *), (4 *)] 5 =
[1 * 5, 2 * 5, 3 * 5, 4 * 5] =
[5, 10, 15, 20]
それはあなたが求めているものです。
を見ると、引数がpedであることを除いて、f1
ほぼ のように見えます。map
flip
f1 = \gs x -> map h gs
今、私たちは何が何でh
あるかを理解する必要があります. h
のような関数を取り、(2 *)
その関数を に適用した結果を与えるものである必要があります5
。すなわちh = \g -> g 5
。
すべてをまとめると、
let f2 = map
f1 = \gs x -> map (\g -> g x) gs
in f1 (f2 (*) [1, 2, 3, 4]) 5