2013-03-10 13 views
21

Sono curioso e non sono riuscito a trovare una proposta per qualcosa di simile in Haskell. Considerare se sia stato scritto sort ma non sortBy.Proposta per dichiarazioni/istanze di dati locali

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 

Qualcuno ha visto questa proposta?

+4

Per quello che vale, è possibile ottenere questo con il pacchetto funzionale perla [riflessione] (http://hackage.haskell.org/package/reflection); vedi [questo esempio] (https://github.com/ekmett/reflection/blob/master/examples/Monoid.hs). (Divulgazione completa: ho commesso nel pacchetto.) – ehird

+4

Per quanto ami questa idea (e ho voluto la stessa cosa in passato), non sono sicuro che questa sia una vera domanda ... –

+2

Io non sono proponendo; Ero abbastanza sicuro che sarebbe stato proposto prima, ma non riuscivo a trovarlo. Una risposta accettabile sarebbe quella che punta a una discussione su questa o una proposta simile, o su una persona coinvolta in questo aspetto della comunità che dice "Non ne ho visto uno, ma qui ci sono alcune cose correlate". Questo costituisce una domanda reale? – luqui

risposta

1

brevemente quanto pare, istanze locali sono stati discussi in mailing list Haskell Prime: http://web.archiveorange.com/archive/v/eKcS7T2qBpy7czBE2Jei, e più pienamente alla 6 ° capitolo del documento di Oleg “Pearl funzionale: impliciti con fi gurazioni”. Non ho sentito praticamente nulla sulle dichiarazioni dei dati locali, però.

Problemi correlati