Ralf Hemmecke wrote:
> 
> I find this construction
> 
> https://github.com/fricas/fricas/blob/master/src/algebra/aggcat.spad#L97
> 
> HomogeneousAggregate(S : Type) : Category == Aggregate with
>    ...
>    if % has shallowlyMutable then
>      map! : (S->S, %) -> %
>    if % has finiteAggregate then
>       if S has BasicType then BasicType
>       any? : (S->Boolean, %) -> Boolean
>    ...
> 
> rather interesting.

It is tricky to implement, but quite useful.

> These has-forms certainly can only evaluate to true in a context where
> 
>   Dom: Join(HomogeneousAggregate(X), finiteAggregate, ...) ===
> 
> I had probably introduced
> 
>   FiniteHomogeneousAggregate(X...): Category ==
>     Join(HomogeneousAggregate(X), finiteAggregate, ...) with
> 
> and put the signatures that appear above in an if condition into this
> more specialized category FiniteHomogeneousAggregate without condition.

Well, HomogeneousAggregate has 46 category descendants.  Your
approach would force splitting some of those categories into
finite and non-finite variants.  Consequently we would get
a bunch of irrelevant distintions during type checking.
IMHO current way is _much_ better.

-- 
                              Waldek Hebisch
hebi...@math.uni.wroc.pl 

-- 
You received this message because you are subscribed to the Google Groups 
"FriCAS - computer algebra system" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to fricas-devel+unsubscr...@googlegroups.com.
To post to this group, send email to fricas-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/fricas-devel.
For more options, visit https://groups.google.com/d/optout.

Reply via email to