Encoding datatypes in term of other datatypes and generalising their properties | Dark Hacker News