Types with the following structure occur in several modules. Indeed, some of those types are exactly the same (NamedRule is a common example.)
type NamedX = (String, X)
This indicates a need for associating names to various entities of the system. Although this is not necessary in theory, it is important for usability. We should make an effort to include names in all necessary entities. While we're at it, we should probably use Text instead of String for names, which should greatly reduce memory consumption.
Types with the following structure occur in several modules. Indeed, some of those types are exactly the same (
NamedRule
is a common example.)This indicates a need for associating names to various entities of the system. Although this is not necessary in theory, it is important for usability. We should make an effort to include names in all necessary entities. While we're at it, we should probably use
Text
instead ofString
for names, which should greatly reduce memory consumption.