<div dir="ltr">I am looking for how far algebra on types in the manner of "set theory as an algebra" ¹ is possible.<br><br><br>So for example in set theory one can compute for sets S, T<br>S∪T,  S∩T,  S-T etc<br><br>Is something similar possible for types?<br><br>Say I have<br>data Primary = Red|Green|Blue<br>data Othercolors = Violet|Indigo|Yellow|Orange<br><br>I want something like<br>Rainbow = Primary ∪ Othercolors<br><br>Equivalently if Rainbow and Primary had been defined, how to get/compute<br>Rainbow - Primary?<div dir="ltr"><div><div dir="ltr"><div>-------------------------<br></div><div>I thought the first-class types in Idris would be a good bet to try out at least a trivial prototype.<br></div><div>Seems not...<br></div><div>So asking here.<br></div><div>Clearly and obviously one can use haskell to implement any language.<br></div><div>My question is what/which are the introspective libraries/features of modern haskell that make this easy and lightweight.<br><br></div><div>Thanks<br></div><div>Rusi<br><br></div><div>¹ Yeah the term 'type algebra' may be taken in the sense of algebraic data types<br></div><div>  Cant think of a better one<br></div></div></div></div>
</div>