Dear Waldek,

it seems that I was too hopeful.

Unfortunately, the attached program give the following output.
It seems that the interpreter is unable to check a domain-evaluating function parameter for its correct type. :-(

Can this be easily fixed?

Thank you
Ralf

===================================================

%%% (1) -> d: Dom := 1

   (1)  1
Type: Dom
%%% (2) -> [baz1(3)(d), baz2(5)(d)]

   (2)  [1, 2]
                                Type: List(PositiveInteger)
%%% (3) -> bar?(D1,3)(d)
   There are 1 exposed and 0 unexposed library operations named bar?
      having 2 argument(s) but none was determined to be applicable.
      Use HyperDoc Browse, or issue
                              )display op bar?
      to learn more about the available operations. Perhaps
      package-calling the operation or using coercions on the arguments
      will allow you to apply the operation.

   Cannot find a definition or applicable library operation named bar?
      with argument type(s)
                                    Type
                               PositiveInteger

      Perhaps you should use "@" to indicate the required return type,
      or "$" to specify which version of the function you need.

%%% (3) -> (bar?$Dom)

   (3)  theMap(DOM;bar?;CIM;2,45)
                        Type: ((Cat, Integer) -> (Dom -> Boolean))
%%% (4) -> (bar?$Dom)(D1,4)
   There are 1 exposed and 0 unexposed library operations named bar?
      having 2 argument(s) but none was determined to be applicable.
      Use HyperDoc Browse, or issue
                              )display op bar?
      to learn more about the available operations. Perhaps
      package-calling the operation or using coercions on the arguments
      will allow you to apply the operation.

   Cannot find a definition or applicable library operation named bar?
      with argument type(s)
                                    Type
                                   Integer

      Perhaps you should use "@" to indicate the required return type,
      or "$" to specify which version of the function you need.

--
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/6ac741f1-49c4-4709-8962-f5a76203c3f3%40hemmecke.org.
)abbrev category CAT Cat
Cat: Category == with
  foo: Integer -> Integer

)abbrev domain DOM1 D1
D1: Cat == add
  foo(n: Integer) == 1

)abbrev domain DOM2 D2
D2: Cat == add
  foo(n: Integer) == 2

)abbrev domain DOM Dom
Dom(): Join(IntegerNumberSystem, CoercibleTo Integer) with
  bar?: (Cat, Integer) -> % -> Boolean
  baz1: Integer -> % -> Integer
  baz2: Integer -> % -> Integer
 == Integer add
  Rep ==> Integer
  coerce(x: %): Integer == x pretend Integer
  bar?(D: Cat, n: Integer): % -> Boolean == (x: %): Boolean +->
    foo(n+(x::Integer))$D = 1
  baz1(n: Integer): % -> Integer == (x: %): Integer +-> foo(n+(x::Integer))$D1
  baz2(n: Integer): % -> Integer == (x: %): Integer +-> foo(n+(x::Integer))$D2

Reply via email to