Подтвердить что ты не робот

Существует ли стандартная реализация "тривиального ограничения" или "класса объекта"?

Я хочу просто

class Trivial t
instance Trivial t

Это, конечно, бесполезно в Haskell 98, поскольку вы можете просто опустить ограничение; но с ConstraintKinds мы можем иметь явно требуемые аргументы вида * -> Constraint. В идеале я хотел бы просто определить это как "анонимную функцию уровня типа" \type a -> (), но это, по-видимому, невозможно.

Что мне делать, использовать что-то предопределенное или просто определять этот класс локально в том месте, где он мне нужен (так как никто не будет иметь к нему доступ, потому что экземпляр универсален, что тоже хорошо подходит?)

4b9b3361

Ответ 1

Поскольку это кажется довольно популярным, я, наконец, подтолкнул такой класс тривиального ограничения к пакету Hackage.

import Data.Constraint.Trivial

id' :: Unconstrained t => t -> t
id' = id