Jak mogę pomnożyć elementy dwóch list w Haskell, dwa po dwa? Zasadniczo, jeśli mam [1,2,3] i [2,3,4], chcę uzyskać [2,6,12].Mnożenie dwóch list element po elemencie w Haskell
8
A
Odpowiedz
34
zipWith (*) [1,2,3] [2,3,4]
użyteczny sposób znalezienia funkcji, takiej jak zipWith
jest Hoogle. Tam możesz wpisać typ funkcji, której szukasz, i spróbuje znaleźć pasujące funkcje w standardowych bibliotekach.
W tym przypadku szukasz funkcji, aby połączyć dwie listy Int
s na pojedynczej liście Int
s wykorzystujących funkcję sumatora (*)
, więc to byłoby zapytanie: (Int -> Int -> Int) -> [Int] -> [Int] -> [Int]. Hoogle znajdzie nawet poprawną funkcję, jeśli zmienisz kolejność argumentów.
Co ważniejsze, w tym przypadku (ponieważ rzeczywisty typ pliku zipWith to (a -> b -> c) -> [a] -> [b] -> [c]), Hoogle unifikuje zapytanie z dowolnym Ogólne parametry typu ... –
Dobrze, to też. –