Waldek Hebisch <[email protected]> writes:
| Gabriel Dos Reis wrote:
| >
| > Waldek Hebisch <[email protected]> writes:
| >
| > | This is reasonable choice if you _have to_ give meaning to '=='
| > | in such cases.
| >
| > Indeed, all flavours of AXIOM support the following style
| >
| > SomeFunctor(): Public == Private where
| > Public == some category expression
| > Private == some domain expression
| >
| > I am unconvinced of the value of requiring that to be written as
| >
| > SomeFunctor(): Public == Private where
| > Public ==> some category expression
| > Private ==> some domain expression
|
| Well, inside toplevel 'where' FriCAS blindly converts '==' to '==>'
| (because othere uses of '==' make no sense here). But that is
| clearly a hack. IMHO normal constant definitions should be
| typechecked.
or the definition could have its type inferred (as opposed to type checked)...
| But above we need to "expand" where to see what
| type is defined (the 'some category expression' part). Worse,
| freqently we have things like:
|
| SomeFunctor(A : CA, B : CB) : Public == Private where
| CA ==> cata
| CB ==> catb
I am not sure this is as complicated as it sounds.
I believe all flavours of AXIOM do (or at least used to do) the
following for this where-expression:
1. elaborate of the side conditions.
This essentially means that the environment is augmented with
the constant/macro definitions.
2. in the resulting environment, pull our types and names from the
parameter declarations.
3. elaborate the type declarations in the resulting environment.
4. elaborate SomeFunctor(A,B) == Private
Did FriCAS change that sequence of events?
-- Gaby
--
You received this message because you are subscribed to the Google Groups
"FriCAS - computer algebra system" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/fricas-devel?hl=en.