# Re: Q: Is there a reason why I can't do this?

```On Mon, Dec 27, 2010 at 19:41, Daniel Carrera <dcarr...@gmail.com> wrote:
snip
> Hmm... I think this will only make sense to me if I ask you to define what a
> "term" is, but I am sure that this term (pun intended) is difficult to
> define. In particular, if a number like 5 is a term, then I would think that
> the following expression contains four terms:
> 2 > 3 ?? 5 !! 6
> I figure that 2, 3, 5 and 6 are all terms. Or how about:
> print 5 if 4;
> I'd think that if 5 is a term, then so is 4.
snip```
```
All of your examples are in fact terms.  A term is a thing that is
considered one unit.  So, numbers, strings, and variables are all
obviously terms.  A function or method call that includes parentheses
is also a term.  But parentheses can create terms out of expressions,
so, for instance, (5 + 4) is a term (that happens to contain a term,
an operator, and a another term).  In the [order of operations][1] you
will find that terms have the highest precedence, this is why (5+5)*2
is 20, not 15.

snip
> Indeed, it is. Strange. I would have thought that print, with no arguments,
> would give me an error like with "sin". And why does "print" return True?
> What's "True" about it?
snip

It successfully printed nothing.  It would return Failure if it failed to print.

>From [S32][2]:
Stringifies each element, concatenates those strings,
and sends the result to the output. Returns Bool::True
if successful, Failure otherwise.

snip
> Interesting. I imagine that Multi() means that the function has multiple
> definitions. For example, I expect that "sin" has one implementation for
> floats and another for complex numbers.
snip

Yes, Multi() means it is a multimethod.  Multimethods [are routines
that can have multiple variants that share the same name, selected by
arity, types, or some other constraints.][3]

[1] : http://perlcabal.org/syn/S03.html#Operator_precedence
[2] : http://perlcabal.org/syn/S32/IO.html#multi_print_(*...@list_-->_Bool)
[3] : http://perlcabal.org/syn/S06.html#Routine_modifiers

--
Chas. Owens
wonkden.net
The most important skill a programmer can have is the ability to read.
```