2013-03-10 26 views
21

Merak ediyorum ve böyle bir şey için Haskell için bir teklif bulamadık. sort'un yazıldığını, ancak sortBy olduğunu düşünün.Yerel veri bildirimleri/Örnekleri için öneriler

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 

Bu teklifi gören oldu mu?

+4

Değeri için bunu [yansıma] (http://hackage.haskell.org/package/reflection) işlevsel inci/paket ile elde edebilirsiniz; bakınız [bu örnek] (https://github.com/ekmett/reflection/blob/master/examples/Monoid.hs). (Tam açıklama: Pakette taahhütlerim var.) – ehird

+4

Bu fikri sevdiğim kadarıyla (ve geçmişte de aynı şeyi istedim), bunun gerçek bir soru olduğundan emin değilim ... –

+2

önerme; Daha önce önerilmiş olabileceğinden oldukça emindim ama bulamadım. Kabul edilebilir bir cevap, bu ya da benzer bir öneriyi tartışan, ya da topluluğun bu yönüyle ilgili bir kimsenin "Görmedim ki; burada bazı şeyler var." Bu gerçek bir soru mu? – luqui

cevap

1

Görünüşe göre, yerel örnekleri tartışılmıştır Haskell Prime posta listesine kısaca: http://web.archiveorange.com/archive/v/eKcS7T2qBpy7czBE2Jei ve daha tam Oleg'in kağıt “Fonksiyonel İnci: Örtülü Kon fi yapılanışını” 6 inci bölümde. Yine de yerel veri beyanları hakkında neredeyse hiçbir şey duymadım.