Jestem ciekawy i nie mogłem znaleźć propozycji czegoś takiego w Haskell. Zastanówmy się, czy zostało napisane: sort
, ale nie sortBy
.Wniosek o lokalne deklaracje/wystąpienia danych
sortBy :: forall a. (a -> a -> Ordering) -> [a] -> [a]
sortBy f = map getX . sort . map X
where
newtype X = X { getX :: a }
instance Ord X where
compare (X a) (X b) = f a b
Czy ktoś widział tę propozycję?
Za to, co jest warte, można to osiągnąć za pomocą perlenia/paczki funkcjonalnej [reflection] (http://hackage.haskell.org/package/reflection); zobacz [ten przykład] (https://github.com/ekmett/reflection/blob/master/examples/Monoid.hs). (Pełne ujawnienie: Mam zobowiązania w paczce.) – ehird
Tak bardzo jak uwielbiam ten pomysł (i chciałem tego samego w przeszłości), nie jestem pewien, czy to jest prawdziwe pytanie ... –
Nie jestem proponowanie; Byłem dość pewny, że zostałoby to zaproponowane wcześniej, ale nie mogłem go znaleźć. Odpowiednią odpowiedzią byłby taki, który wskazuje na dyskusję na temat tej lub podobnej propozycji lub jedną z osób zaangażowanych w ten aspekt społeczności, mówiąc: "Nie widziałem żadnego, ale niektóre są podobne". Czy to stanowi prawdziwe pytanie? – luqui