Hello,
I am wondering why I have this behavior, see the interpreter session below.
I have a domain JLObjNamedTuple to operate on Julia NamedTuple,
something like a FriCAS Record. It contains two constructors with
declaration signature:
jntuple : String -> %
jntuple : Tuple(Any) -> %
For comparaison, below, 'jobject(String)' has the same
declaration/definition than the first jntuple above:
jobject(str : String) == jlref str
My problem is the function selection of jntuple(String). Here is an
interpreter session:
(1) -> jobject "(a=12,b=13)"
Function Selection for jobject
Arguments: STRING
-> no appropriate jobject found in String
-> no appropriate jobject found in String
Modemaps from Associated Packages
no modemaps
Remaining General Modemaps
[1] Integer -> JLObject from JLObject
[2] String -> JLObject from JLObject
found good modemap for: jobject
String -> JLObject from JLObject
[1] signature: STRING -> JOBJECT
implemented: slot (String) from JOBJECT
(1) (a = 12, b = 13)
Type: JLObject
Time: 0.07 (EV) + 1.69 (OT) = 1.76 sec
(2) -> jntuple "(a=12,b=13)"
Function Selection for jntuple
Arguments: TUPLE(STRING)
-> no appropriate jntuple found in Tuple(String)
-> no appropriate jntuple found in Tuple(String)
Modemaps from Associated Packages
[1] String -> JLObjNamedTuple from JLObjNamedTuple
[2] Tuple(Any) -> JLObjNamedTuple from JLObjNamedTuple
found good modemap for: jntuple
Tuple(Any) -> JLObjNamedTuple from JLObjNamedTuple
[1] signature: TUPLE(ANY) -> JOBNTPL
implemented: slot (Tuple (Any)) from JOBNTPL
Function Selection for map by coercion facility (map)
Arguments: ((STRING -> ANY), LIST(STRING))
Target type: LIST(ANY)
-> no appropriate map found in List(String)
-> no appropriate map found in List(Any)
-> no appropriate map found in Any
-> no appropriate map found in String
-> no appropriate map found in String
-> no appropriate map found in Any
Modemaps from Associated Packages
[1] ((D4 -> D5),List(D4)) -> List(D5) from ListFunctions2(D4,D5)
if D4 has TYPE and D5 has TYPE
found good modemap for: map
((D4 -> D5),List(D4)) -> List(D5) from ListFunctions2(D4,D5)
if D4 has TYPE and D5 has TYPE
[1] signature: ((STRING -> ANY), LIST(STRING)) -> LIST(ANY)
implemented: slot (List (Any))(Mapping (Any) (String))(List
(String)) from LIST2(STRING,ANY)
BoundsError: attempt to access Char at index [2]
>> System error:
Invalid command given to Julia
(2) -> jntuple (a=12,b=13)
Function Selection for equation
Arguments: (VARIABLE(a), PI)
-> no appropriate equation found in Variable(a)
-> no appropriate equation found in PositiveInteger
-> no appropriate equation found in Symbol
-> no appropriate equation found in Integer
-> no appropriate equation found in Variable(a)
-> no appropriate equation found in PositiveInteger
-> no appropriate equation found in Symbol
-> no appropriate equation found in Integer
Modemaps from Associated Packages
no modemaps
Remaining General Modemaps
[1] (Symbol,Segment(D3)) -> SegmentBinding(D3) from SegmentBinding(
D3)
if D3 has TYPE
[2] (Symbol,String) -> QueryEquation from QueryEquation
[3] (D1,D1) -> Equation(D1) from Equation(D1) if D1 has TYPE
found good modemap for: equation
(D1,D1) -> Equation(D1) from Equation(D1) if D1 has TYPE
[1] signature: (POLY(INT), POLY(INT)) -> EQ(POLY(INT))
implemented: slot (Polynomial (Integer))(Polynomial (Integer))
from EQ(POLY(INT))
Function Selection for equation
Arguments: (VARIABLE(b), PI)
-> no appropriate equation found in Variable(b)
-> no appropriate equation found in PositiveInteger
-> no appropriate equation found in Symbol
-> no appropriate equation found in Integer
-> no appropriate equation found in Variable(b)
-> no appropriate equation found in PositiveInteger
-> no appropriate equation found in Symbol
-> no appropriate equation found in Integer
Modemaps from Associated Packages
no modemaps
Remaining General Modemaps
[1] (Symbol,Segment(D3)) -> SegmentBinding(D3) from SegmentBinding(
D3)
if D3 has TYPE
[2] (Symbol,String) -> QueryEquation from QueryEquation
[3] (D1,D1) -> Equation(D1) from Equation(D1) if D1 has TYPE
found good modemap for: equation
(D1,D1) -> Equation(D1) from Equation(D1) if D1 has TYPE
[1] signature: (POLY(INT), POLY(INT)) -> EQ(POLY(INT))
implemented: slot (Polynomial (Integer))(Polynomial (Integer))
from EQ(POLY(INT))
Function Selection for jntuple
Arguments: TUPLE(EQ(POLY(INT)))
-> no appropriate jntuple found in Tuple(Equation(Polynomial(Integer)))
-> no appropriate jntuple found in Tuple(Equation(Polynomial(Integer)))
Modemaps from Associated Packages
[1] String -> JLObjNamedTuple from JLObjNamedTuple
[2] Tuple(Any) -> JLObjNamedTuple from JLObjNamedTuple
found good modemap for: jntuple
Tuple(Any) -> JLObjNamedTuple from JLObjNamedTuple
[1] signature: TUPLE(ANY) -> JOBNTPL
implemented: slot (Tuple (Any)) from JOBNTPL
Function Selection for map by coercion facility (map)
Arguments: ((EQ(POLY(INT)) -> ANY), LIST(EQ(POLY(INT))))
Target type: LIST(ANY)
-> no appropriate map found in List(Equation(Polynomial(Integer)))
-> no appropriate map found in List(Any)
-> no appropriate map found in Any
-> no appropriate map found in Equation(Polynomial(Integer))
-> no appropriate map found in Equation(Polynomial(Integer))
-> no appropriate map found in Any
Modemaps from Associated Packages
[1] ((D4 -> D5),List(D4)) -> List(D5) from ListFunctions2(D4,D5)
if D4 has TYPE and D5 has TYPE
found good modemap for: map
((D4 -> D5),List(D4)) -> List(D5) from ListFunctions2(D4,D5)
if D4 has TYPE and D5 has TYPE
[1] signature: ((EQ(POLY(INT)) -> ANY), LIST(EQ(POLY(INT)))) -> LIST(ANY)
implemented: slot (List (Any))(Mapping (Any) (Equation
(Polynomial (Integer))))(List (Equation (Polynomial (Integer)))) from
LIST2(EQ(POLY(INT)),ANY)
(2) (a = 12, b = 13)
Type: JLObjNamedTuple
Time: 0.01 (IN) + 0.01 (OT) = 0.03 sec
===========================================================
Is this a bug in function selection? In the Modemaps list:
Modemaps from Associated Packages
[1] String -> JLObjNamedTuple from JLObjNamedTuple
[2] Tuple(Any) -> JLObjNamedTuple from JLObjNamedTuple
The first is the good one, no?
I also noticed that the type of the argument is wrongly determined:
(2) -> jntuple "(a=12,b=13)"
Function Selection for jntuple
Arguments: TUPLE(STRING)
-> no appropriate jntuple found in Tuple(String)
-> no appropriate jntuple found in Tuple(String)
If you have any idea...
Greg
--
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 view this discussion visit
https://groups.google.com/d/msgid/fricas-devel/CAHnU2dYd1yCx3LqU%2BgK3S_Ct9w1qNqYYfzMmaYC5CtF3rBTnOA%40mail.gmail.com.