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

Я хочу просто

class Trivial t
instance Trivial t

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

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

1 ответ

Решение

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

import Data.Constraint.Trivial

id' :: Unconstrained t => t -> t
id' = id
Другие вопросы по тегам