login  home  contents  what's new  discussion  bug reports     help  links  subscribe  changes  refresh  edit

Edit detail for SandBoxOverloading revision 1 of 8

1 2 3 4 5 6 7 8
Editor: Bill Page
Time: 2008/05/16 09:50:56 GMT-7
Note: test

changed:
-
\begin{spad}
)abbrev domain AAA Aaa
Aaa: with
    bar: Integer -> Integer
  == add
    foo(x:Float):Integer == 1
    foo(x:Integer):Integer == 2
    a:Integer == 1
    a:Float == 1.0
    x:Integer := 1
    y:Float := 1.0
    bar(z) == foo(x)+foo(y)
\end{spad}

\begin{axiom}
bar(3)
\end{axiom}

spad
)abbrev domain AAA Aaa Aaa: with bar: Integer -> Integer == add foo(x:Float):Integer == 1 foo(x:Integer):Integer == 2 a:Integer == 1 a:Float == 1.0 x:Integer := 1 y:Float := 1.0 bar(z) == foo(x)+foo(y)
spad
   Compiling FriCAS source code from file 
      /var/zope2/var/LatexWiki/8246770875444240472-25px001.spad using 
      old system compiler.
   AAA abbreviates domain Aaa 
------------------------------------------------------------------------
   initializing NRLIB AAA for Aaa 
   compiling into NRLIB AAA 
   compiling local foo : Float -> Integer
      AAA;foo is replaced by 1 
Time: 0.07 SEC.
   compiling local foo : Integer -> Integer
      AAA;foo is replaced by 2 
Time: 0.01 SEC.
   compiling local a : () -> Integer
      AAA;a is replaced by 1 
Time: 0 SEC.
   compiling local a : () -> Float
Time: 0 SEC.
   compiling exported bar : Integer -> Integer
****** comp fails at level 3 with expression: ******
error in function bar 
(+ (|foo| |x|) (|foo| | << y >> |))
****** level 3  ******
$x:= y
$m:= (Integer)
$f:=
((((|z| # #) (|y| # #) (* # # #) (** # # #) ...) ((|foo| #))
  ((|foo| #) (* # # #) (** # # #) (+ # #) ...)))
   >> Apparent user error:
   Cannot coerce y 
      of mode (Float) 
      to mode (Integer)

axiom
bar(3) There are no library operations named bar Use HyperDoc Browse or issue )what op bar to learn if there is any operation containing " bar " in its name. Cannot find a definition or applicable library operation named bar with argument type(s) PositiveInteger Perhaps you should use "@" to indicate the required return type, or "$" to specify which version of the function you need.