Abstract
Modern dependently typed functional programming languages like Agda allow very
specific restrictions to be built into datatypes by using indices and dependent types.
Properly restricted types can help programmers to write correct-by-construction software.
However, code duplication will occur because the language does not recognise
that similarly-structured datatypes with slightly different program-specific restrictions
can be related.
... read more