JS
Size: a a a
JS
AP
AP
SG
data UserRole = A | B | C deriving (Eq, Show)
class UserRoleValue (a :: UserRole) where
_userRoleValue :: Proxy a -> UserRole
instance UserRoleValue ‘A where
_userRoleValue _ = ASG
SG
Maybe (Proxy ‘A). Далее при необходимости отобразить пользователю список ролей достаточно написать тайп-класс который будет осуществлять конверсию Proxy (a :: UserRole) в конкретное значение из UserRole. Это сделать довольно просто, вы уже показывали как.Maybe (Proxy (a :: UserRole)) (здесь и выше это не синтаксис хаскеля, я просто пытаюсь отразить взаимосвязь).JS
SG
doSomeOperation :: (App m, UserContext u m, Has ‘SomeUserRole u) => …
SG
YS
YS
YS
SG
YS
YS
[
[
SG
[
[