Hello Qian,
thanks for all the work you do to improve FriCAS.
On 06/17/2016 12:50 PM, oldk1331 wrote:
> Just compare ')show List' and ')show List Type', they have
> the same amount of operations, but clearly this is wrong:
> List Type doesn't satisfy most predicates in List.
First of all, I wouldn't ever have typed "List Type", because what
exactly would that mean? As I understand "Type", it is a category, not a
domain. So in a sense you could call List(BasicType) and you should get
the same result as for List(Type).
However, personally, I see a problem and that comes from the "has" operator.
At least for Aldor "has" is defined with the first argument being a
domain and the second being a category. Now if you use List(BasicType),
then internally "BasicType has BasicType" has to be evaluated. To my
taste that doesn't type-match for the signature of the "has" operator.
But if I remember correctly, in particular in the context of FriCAS
opinions differ. And unfortunately, there is no formal definition of
what "has" does in FriCAS.
So, that you consider printing the operations correctly is one thing,
passing categories as an argument where a domain is expected is another.
Yes, a list of domains, may be desirable in FriCAS, but for my taste,
then "has" must officially be declared to accept categories as a first
argument and always return false in that case.
I have no idea, actually, what should happen if I call
C has with (foo: %->%)
where C defined as
C: Category == with
foo: % -> %
add
foo(x: %): % == x
Should that return true or false?
Anyway, I like how you discover all these bugs in FriCAS. From my side
this is very welcome.
Ralf
--
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 [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/fricas-devel.
For more options, visit https://groups.google.com/d/optout.