Кажется, должно быть class ShowText a where showT :: a -> Text
не так ли?Я не большой (или даже умеренный) пользователь Text
, но у Yesod есть класс:
class ToMessage a where
toMessage :: a -> Text
С экземпляром для String
, но то, что вы действительно хотите, это экземпляр дляShow a
, поэтому вам нужно либо использовать неразрешимые экземпляры, либо использовать его как только экземпляра идентичного в другом классе.Жаль, что Хаскелл не позволяет вам закрывать уроки ...
РЕДАКТИРОВАТЬ: Поскольку мое мнение еще не ясно - я не вижу ничего этого, когда стоит чтоВы действительно хотите showT = pack . show
как функция, экспортируемая Data.Text (для удобства).Но то, что вы действительно ДОЛЖНЫ хотеть, это вообще ничего - Text
(обычно) предназначен для потребления человеком, а экземпляры Show
представляют собой довольно необработанные деревья данных, полезные в основном программистам;скрещивание двух видов использования поражает меня как слияние двух интересов.