Record does not need SetCategory. Could you give specific reference from docs?
FriCAS has very poor support for List and Record that contain types
as values. (This is better suppored in OpenAxiom so there is hope that
it can also be in FriCAS.)
You could try eliminating the 'dom' component of the Record. The Any
type already includes it anyway. Perhaps there is also a conflict of
function names versus tags.
-----------------------------------------
ANY1 ==> AnyFunctions1
SetAnyLexList ==>
Record( val : Any, remList : List String)
)abbrev package FOO Foo
Foo() : with p : List String -> SetAnyLexList ==
add
p(lexs : List String) : SetAnyLexList ==
[coerce(1) $ANY1(Integer), rest lexs]
-----------------------------------------
(2) -> x:=p["a"]
(2) [val= 1,remList= []]
Type: Record(val: Any,remList: List(String))
(3) -> x.val
(3) 1
Type: Integer
(4) -> dom(x.val)
(4) (Integer)
Type: SExpression
(5) ->
On Tue, Feb 14, 2012 at 2:54 AM, Serge D. Mechveliani <[email protected]> wrote:
>
> In docs it is written that Product and Record need SetCategory for
> each component. And I thought that Any has not SetCategory, I thought
> that Any is more generic than Set.
> But now, I try in the interpreter:
>
> -> has(Any, SetCategory)
> true : Boolean
>
> Really, is Any of SetCategory ?
> Now, assuming "yes", I try the code (which is close to what I need):
>
> -----------------------------------------
> ANY1 ==> AnyFunctions1
> SetAnyLexList ==>
> Record(dom : SetCategory, val : Any, remList : List String)
>
> )abbrev package FOO Foo
> Foo() : with p : List String -> SetAnyLexList ==
> add
> p(lexs : List String) : SetAnyLexList ==
> [Integer, coerce(1) $ANY1(Integer), rest lexs]
> -----------------------------------------
>
> Is this all right?
> After compilation, I run it under the interpeter:
>
> --------------------------------------------------------------
> ...
> |$ConstructorCache|
> 0 errors, 4 warnings
> ------------------------------------------------------
> Foo is already explicitly exposed in frame initial
> Foo will be automatically loaded when needed from
> /home/mechvel/ghc/axiomInterface/fromA-aim/FOO.NRLIB/FOO
>
> (5) -> p ["a"]
>
> >> System error:
> FUNCALL: ((|latex| ((|String|) $)) T (ELT $ 8)) is not a function name;
> try using a symbol instead
> -------------------------------------------------
>
> If I change `SetCategory' to `Type', then the compiler again compiles this.
> But has(Type, SetCategory) = false.
> So, should not it report an error?
>
> Then, in the interpreter, it shows in the result NIL intstead of Integer
> in the first component of the record.
> I suspect that the reasons for all this are similar to ones explained in the
> last response of Waldek to by question of "subtle f signature"
> [ 1) a certain bug, 2) the specifics of the Interpeter mode, ... ].
>
> I hope that the whole my parsing program will still work with
> Record(dom: SetCategory, ...), because the function of this kind is used
> by Spad functions.
> But 1) it needs trying,
> 2) anyway it will be nice to see the explanation for this above code
> with Record.
>
> Thanks,
>
> ------
> Sergei
> [email protected]
>
> --
> 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.
>
--
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.