Czy można zaimplementować klasę typu następująco:Czy mogę rozróżnić wystąpienia typu typeclass w środowisku wykonawczym?
class SomeClass e where
isEq :: (SomeClass e') => e -> e' -> Bool
gdzie isEq x y
wróci prawda kiedy x
i y
są zarówno sama instancja tej klasy typu?
Kontekst: To jest cienko zawoalowaną próbą coraz prób typu run-time. Na początku przeczytałem, że Haskell ma wymazanie tekstu, ale przeczytałem również, że z niedawnymi rozszerzeniami do GHC, niektóre informacje o czasie pracy tam.
edit: dla tych, zastanawiając się, o mój usecase ... Używam programowania typ poziomie, aby zapewnić pewne właściwości niektórych z moich ADTS, mianowicie obejmujących wykorzystanie zasobów. Zasoby te są reprezentowane przez różne typy (a blokady zasobów są odpowiednio wdrażane na poziomie typu).
jestem próby zapisu wyniku procesu optymalizacji, który wymaga identyfikacji zasobów pisania/czytania. Ale ponieważ wszystkie moje zasoby są reprezentowane przez odrębne single, których jedynym wspólnym czynnikiem (oprócz wszystkich wartości będących na dole) jest typeklass, który grupuje je razem.
W skrócie chcę wykorzystać wyniki mojego programowania typu szczebla w czasie wykonania, poziom wartości.
Czy znasz [Data.Typeable] (http://hackage.haskell.org/packages/archive/base/latest/doc/html/Data-Typeable.html)? Wydaje się odpowiednie ... –
To pytanie jest mylące. Wydaje się, że chcesz, a odpowiedzi dostarczają, sposób na rozróżnienie typów w czasie wykonywania. Interesuje mnie inne pytanie: czy można wyliczyć klasy zamieszkane przez określony typ w czasie wykonywania. –
@ ThomasM.DuBuisson Nie ma ilościowe na typeclasses (czyli nie ma zmienne typeclass w Haskell), więc jest mało prawdopodobne. – permeakra