Next: 6.7.1 The real type
Up: 6. Programming
Previous: 6.6 Evaluation
Contents
6.7 Operators
nip2's expression syntax is almost exactly the same as C,
with a few small changes. Table 6.2 lists all of
nip2's operators in order of increasing precedence. If you've used C, the
differences are:
- C's
?:
operator becomes if-then-else, see above
- Like almost every functional language, nip2 uses square brackets
for list constants (see §6.7.5), so to index a
list, nip2 uses ?
- The : operator is infix list cons, see §6.8
- nip2 adds @ for function composition, see §6.7.6
- The ++ operator becomes an infix concatenation operator, again
see §6.8
- nip2 adds ** for raise to power
The only slightly tricky point is that function application binds very
tightly (only list index and class project bind more tightly). So the
expression:
binds as:
This is almost always the behaviour you want.
There are two special equality tests: === and
!==. These test for pointer equality, that is, they return true if
their arguments refer to the same object. These are occasionally useful for
writing interactive functions.
Table 6.2:
nip2 operators in order of increasing precedence
Operator |
Associativity |
Description |
if then else |
Right |
If-then-else construct |
, |
Left |
List/complex separator |
|| |
Left |
Logical or |
&& |
Left |
Logical and |
@ |
|
Function composition
(see §6.7.6) |
| |
Left |
Bitwise or |
^ |
Left |
Bitwise exclusive or |
& |
Left |
Bitwise and |
== |
Left |
Equal to |
!= |
|
Not equal to |
=== |
|
Pointer equal to |
!== |
|
Pointer not equal to |
< |
Left |
Less than |
<= |
|
Less than or equal to |
> |
|
Greater than |
>= |
|
Greater than or equal to |
« |
Left |
Left shift |
» |
|
Right shift |
+ |
Left |
Addition |
- |
|
Subtraction |
* |
Left |
Multiplication |
 |
|
Division |
% |
|
Remainder after division |
! |
Left |
Logical negation |
~ |
|
One's complement |
++ |
|
Join (see §6.8) |
- |
|
Unary minus |
+ |
|
Unary plus |
(type) |
|
Type cast expression |
** |
Right |
Raise to power |
: |
|
List CONS
(see §6.8) |
space |
Left |
Function application |
? |
Left |
List index
(see §6.8) |
. |
Left |
Class project
(see §6.11) |
|
Subsections
Next: 6.7.1 The real type
Up: 6. Programming
Previous: 6.6 Evaluation
Contents
John Cupitt
2004-12-20