Na przykład, deklaracja z deriving
:zawierająca klauzulę z dowolnymi "aliasami przymusowymi"?
{-# LANGUAGE DeriveDataTypeable, ConstraintKinds #-}
import Data.Data (Data)
import Data.Typeable (Typeable)
type Constraints a = (Show a, Eq a, Ord a, Data a, Typeable a)
data A = A deriving (Constraints)
błędy z:
Illegal deriving item ‘Constraints’
co ma sens biorąc pod uwagę http://downloads.haskell.org/~ghc/7.8.3/docs/html/users_guide/deriving.html
piszę deriving (Show, Eq, Ord, Data, Typeable)
dla większości moich typów. Byłoby miło wyeksportować standardowe "aliasy wiązań", tj. Każdy rodzaj rodzaju * -> Constraint
. Biorąc pod uwagę, oczywiście, że ograniczenia w krotce ograniczeń są poprawne, mają pustą "minimalną pełną definicję", itp.
Czy jest jakaś propozycja w tym zakresie? Jak trudne by to było? Czy istnieją alternatywy?
Jeśli chodzi o propozycję, jeśli nawet istnieje, w co wątpię, to prawdopodobnie jest bardzo niska na liście rzeczy do zrobienia, zwłaszcza, że zestaw klas, które można wyprowadzić normalnie, nie jest tak duży. Jeśli naprawdę chcesz uniknąć zapisywania każdej klasy za każdym razem, możesz użyć szablonu Haskell do wygenerowania niezależnych deklaracji pochodnych. – user2407038
Tak, zastanawiałem się nad tym, ale potem masz problemy z szablonem Haskella dłuższej kompilacji, itp. –