In Haskell, kann ich die folgenden Lambda-Ausdruck nehmen:Wie man ein Lambda mit 2 Parametern auf eine Liste in Haskell anwendet?
\x y -> x * y
und wenden Sie es mögen:
(\x y -> x * y) 9 9
81
(\x y -> x * y) 8 8
64
Wenn ich so etwas zum Ausdruck bringen wollen, „Nehmen Sie die oben Lambda, und wo es sich über eine Liste, wobei jedes Element ein Wertepaar wie oben ist und eine Liste zurückgibt, wobei jeder Wert das Ergebnis der Anwendung dieses Lambda-Ausdrucks ist ", wie kann ich das tun?
In Pseudo-Code meine ich so etwas wie: Nehmen Sie (\x y -> x * y)
und wenden Sie es an etwas wie [(9, 9), (8, 8)]
.
Ich weiß, dass, wenn ich \x -> x + 1
habe, habe ich folgendes tun:
map (\x -> x + 1) [9, 9, 9]
[10,10,10]
Mit anderen Worten, ich versuche, herauszufinden, ob es möglich ist, (und wie) so etwas wie
zu tunmap (\x y -> x * y) [ a list of items, each being a pair of values, on which the lambda can work ]
Offenbar hat folgendes nicht:
map (\x y -> x * y) [(9, 9), (8, 8)]
es nicht 012.358 zurückkehrt. Gibt es eine Möglichkeit, das zu tun?
Oder mit anderen Worten 'map (uncurry (\ x y -> x * y)) [(9, 9), (8, 8)]' zu erhalten '[81, 64]'. Vielen Dank! :) –
Das funktioniert, aber Sie würden es normalerweise als 'Karte schreiben (\ (x, y) -> x * y) [(9, 9), (8, 8)]'. Da '(*) :: Int -> Int -> Int 'auch eine binäre Funktion ist, ist es auch möglich, es als' map (uncurry (*)) [(9, 9), (8, 8)] 'zu schreiben , aber ich bevorzuge die obige Version. – niteria