Void in Maxima



I still have this wrong.  Third attempt.

Is there a way to cause a function to have no return value.  I would like to 
have the ability to have no return value like you can
do in C++ with the void keyword.  I tried

f(x) := block(return());

but that returns false which is not the same as no return value at all. 
Also this would have to be conditional too.

So

f(x):= block(if x > 0 then return(void) else return -1);

It would be nice and necessary also that no output label would be created if 
the function returns nothing.  So in this case if f(-9)
would get an output label created but f(9) would get no output label.  All 
operations attempting to operate on the return value of nothing would also 
cause a lisp error.

 (%i1)  f(x):= block(if x > 0 then return(void) else return -1)$
 (%i2) f(-9);
 (%o2) -1
 (%i3) %*9;
 (%o3) -9
 (%i4) f(9);
 (%i5) %*9;
 Maxima has encountered a lisp error.  Can not operate on nothing.

Rich


----- Original Message ----- 
From: "Richard Hennessy" <rich.hennessy at verizon.net>
To: "Maxima List" <maxima at math.utexas.edu>
Sent: Sunday, October 04, 2009 9:16 AM
Subject: Re: [Maxima] Void in Maxima


> Sorry I was a little confused about how to explain this better and I made 
> a mistake.  The example should read
>
> (%i1)  f(x):= block(if x > 0 then return(void) else return -1)$
> (%i2) f(-9);
> (%i3) %*9;
> (%o3) -9
> (%i4) f(9);
> (%i5) %*9;
> Maxima has encountered a lisp error.  Can not operate on nothing.
>
> Rich
>
> ----- Original Message ----- 
> From: "Richard Hennessy" <rich.hennessy at verizon.net>
> To: "Maxima List" <maxima at math.utexas.edu>
> Sent: Sunday, October 04, 2009 9:09 AM
> Subject: Void in Maxima
>
>
> Is there a way to cause a function to have no return value.  I would like 
> to have the ability to have no return value like you can
> do in C++ with the void keyword.  I tried
>
> f(x) := block(return());
>
> but that returns false which is not the same as no return value at all. 
> Also this would have to be conditional too.
>
> So
>
> f(x):= block(if x > 0 then return(void) else return -1);
>
> It would be nice and necessary also that no output label would be created 
> if the function returns nothing.  So in this case if f(9)
> would get an output label created but f(-9) would get no output label. 
> All operations attempting to operate on the return value of
> nothing would also cause a lisp error.
>
>
> (%i1)  f(x):= block(if x > 0 then return(void) else return -1)$
> (%i2) f(9);
> (%i3) %*9;
> (%o3) 81
> (%i4) f(-9);
> (%i5) %*9;
> Maxima has encountered a lisp error.  Can not operate on nothing.
>
> Is there a way to do this?
>
> Rich
>
>
>
> _______________________________________________
> Maxima mailing list
> Maxima at math.utexas.edu
> http://www.math.utexas.edu/mailman/listinfo/maxima
>
>
> _______________________________________________
> Maxima mailing list
> Maxima at math.utexas.edu
> http://www.math.utexas.edu/mailman/listinfo/maxima