Получить имена полей записи Haskell в виде списка строк?

Скажем, у меня есть следующее:

data Rec = Rec {
    alpha :: Int,
    beta  :: Double,
    phi   :: Float 
} 

sample = Rec 1 2.3 4.5

Я понимаю Template Haskell и функция reify может получить имена полей записи. То есть:

print $(f sample) --> ["alpha", "beta", "phi"]

Также утверждается, что это можно сделать без Template Haskell. Может ли кто-нибудь предоставить пример реализации для этого?

15
задан Ana 10 December 2011 в 16:26
поделиться