如果你把f2 = map
,你IMMED iately去的第一步,你想出來的:
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]
這就是你所追求的。
如果你看一下f1
,它看起來幾乎像一個map
,除了參數是flip
PED:
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
我說你應該用'F1 GN = gn'然後寫F2,使得'F2(+)[1..4] 5 =啓動= [5,10,15,20]' – Ingo
是的,'f2 =地圖'聽起來像個好主意。 – Bergi