Nie jestem do końca pewien, czy moja nomenklatura jest tutaj poprawna, ale zastanawiałem się, czy w Haskell była funkcja zipa, która była chciwa. Oznacza to, że jeśli miałemCzy Haskell ma chciwy zamek (jeden z zachowaniem wszystkich elementów)?
a = [1, 2, 3]
b = [4, 5]
zip' a b
#=> [(Just 1, Just 4),(Just 2, Just 5),(Just 3, Nothing)]
... gdzie zip'
jest funkcja zip chciwy, to zwraca listę krotek długości dłuższej listy, a gdzie jest już lista zawiera element, ale krócej lista nie ma pozycji Nothing
umieszczonej w odpowiedniej pozycji krotki. Nie pytam, jak to napisać, ale zamiast tego zastanawiałem się, czy to istnieje jako wbudowane.
Oto moja implementacja (co prawdopodobnie nie jest wielki)
zip' :: [a] -> [b] -> [(Maybe a, Maybe b)]
zip' (a:xs) [] = (Just a, Nothing) : zip' xs []
zip' [] (b:ys) = (Nothing, Just b) : zip' [] ys
zip' [] _ = []
zip' (a:xs) (b:ys) = (Just a, Just b) : zip' xs ys
wyszukiwanie przez podpis. –
@KarolyHorvath Przepraszam. Nie rozumiem, co masz na myśli. –
https://www.haskell.org/hoogle/ –