Closed ahubers closed 2 years ago
data family DF a :: * -- (0)
data family DF [a] = DF1 (BST a) -- (1)
data family DF (T a) = DF2 [a] -- (2)
The interesting case is when we have (1)
BST a
is partial. We have two options:
data family DF [a] = BST @ a => DF1 (BST a) -- (a)
or
data family BST @ a => DF [a] = DF1 (BST a) -- (b)
The syntax for first one is supported, the syntax for the second declaration is not.
Syntax is supported if the rep constructor is not a GADT.
As a short term goal, we would expect the user to provide the signature as in (a)
As a long term goal, we would want to support the syntax in (b)
Manual