I see that your definition pours the subtypes from a pitcher of the poured 
subtypes.  The note about parametric types is well pointed. -- Jeffrey

Clearly, the answer is therein.  Cloudily, I'm looking.


On Tuesday, February 9, 2016 at 3:43:48 PM UTC-5, Milan Bouchet-Valat wrote:
>
> Le mardi 09 février 2016 à 12:24 -0800, Jeffrey Sarnoff a écrit : 
> > Any advice on quick 'n EZ coding of something like these? 
> > 
> > allsupertypes(Irrational) == ( Real, Number, Any ) 
> > 
> > allsubtypes(Integer) == ( BigInt, Bool,  Signed, 
> Int128,Int16,Int32,Int64,Int8, Unsigned, 
> UInt128,UInt16,UInt32,UInt64,UInt8 ) 
> > abstractsubtypes(Integer) == ( Signed, Unsigned ) 
> > concretesubtypes(Integer) == ( 
> BigInt,Bool,UInt128,UInt16,UInt32,UInt64,UInt8,UInt16,UInt32,UInt64,UInt8) 
> Here's a way to get all concretes ubtypes: 
> subtypestree(x) = length(subtypes(x)) > 1 ? map(subtypestree, subtypes(x)) 
> : x 
> [subtypestree(AbstractArray)...;] 
>
> You should be able to adapt this to return all abstract types instead 
> by using isleaftype() (which would better be called isconcretetype()?). 
> But note there's the special case of parametric types, which aren't 
> leaf types. 
>
>
> Regards 
>

Reply via email to