The kind declarations are not necessary - GHC infers the kind like CeremonyKind using the local bindings under case. Declaring kind makes it easier to read the type signatures.
Also, I simplified a few places around the singleton logic and replaces instances created for the singleton constructors with the instances for the regular data type.
The kind declarations are not necessary - GHC infers the kind like
CeremonyKind
using the local bindings undercase
. Declaring kind makes it easier to read the type signatures.Also, I simplified a few places around the singleton logic and replaces instances created for the singleton constructors with the instances for the regular data type.