newtypeing it is a big change through the project. But better to do it sooner than later.
Typing sometimes is so complex, & because of no proper type distinction - even GHC inference has problems of matching variations of Free (NValue' t f m) t with NValue t f m - what to say about people. newtypeing it would make the type system approachable for newcomers. % should help implementations of additional complex functionality.
Main type of the project currently does not have instances - it uses Free & NValue' instances.
Person arrives - and besides being confused with recursion schemes & NValueF, NValue', NValue - does not see what classes the main type of the project supports.
Properly abstracting the type would also ease the further work with it.
Currently
NValue
is:And type signatures sometimes span kilometers.
newtype
ing it is a big change through the project. But better to do it sooner than later.Typing sometimes is so complex, & because of no proper type distinction - even GHC inference has problems of matching variations of
Free (NValue' t f m) t
withNValue t f m
- what to say about people.newtype
ing it would make the type system approachable for newcomers. % should help implementations of additional complex functionality.Main type of the project currently does not have instances - it uses
Free
&NValue'
instances.Person arrives - and besides being confused with recursion schemes &
NValueF, NValue', NValue
- does not see what classes the main type of the project supports.Properly abstracting the type would also ease the further work with it.