2016-09-06 27 views
7

Tytuł mówi wszystko. foldl1 i foldl' są uogólnione do Foldable, natomiast foldl1' nie jest. Czy to tylko niedawne niedopatrzenie? Czy jest to wybór projektu?Dlaczego foldl1 nie jest uogólniony na Składany?

Rodzaj foldl1' jest

foldl1' :: (a -> a -> a) -> [a] -> a 

spodziewałem się, że mają ten sam typ jak foldl1:

foldl1 :: Foldable t => (a -> a -> a) -> t a -> a 

widzę też, że foldl1' jest eksportowana przez Data.List ale nie Data.Foldable. Być może jest to powiązane?

+3

Ani 'foldl1' ani' foldl1'' nie należy do 'Foldable'. Należą one do 'Foldable1', klasy niepozornych składanych pojemników. Ktoś popełnił błąd i umieścił 'foldl1' w' Foldable'. Nie sądzę, by ktokolwiek miał serce, by zsumować ten błąd. – dfeuer

+0

@dfeuer: czy wprowadzono "Składany", nie poprzedzony przez __ długi okres dyskusji i ankiet? Czy zostało to pominięte, czy jest to jakiś kompromis? – ljedrz

+0

@ljedrz Myślę, że mieszasz dyskusję na temat używania 'Składany' w Preludium z oryginalnym projektem (jeśli jest)' Składany'. – Cactus

Odpowiedz

0

Może uogólniony formularz po prostu would have no good place to live? Mogły również występować pewne przyczyny związane z wydajnością, ale nie mogłem znaleźć żadnych informacji na ten temat.

+0

Data.List już eksportuje uogólnioną formę foldl1 i foldl ', które są częścią instancji Foldable. Wygląda więc na to, że uogólniony foldl1 'powinien zostać wyeksportowany zarówno z Data.List, jak iz Data.Foldable dla spójności konsystencji. – Kevin

Powiązane problemy