Есть ли стандартная реализация "тривиального ограничения" или "класса объекта"?
Я хочу просто
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