flx_op(1)

flx_op1

assignment

Assignment operators are sugar for statements, so only one is allowed.

= asgn
<- asgn
:= initialise new val
+= pluseq
-= minuseq
*= muleq
/= diveq
%= modeq
|= oreq
^= xoreq
&= andeq

let/in

let <expr> in <expr> prefix

tuple

, chain

logic

Note that "shortcut" doesn't apply in Felix since expressions are purely functional.

|| lor chain
&& land chain
! lnot prefix

comparison

== eq binary
<= le chain
< lt chain
>= ge chain
> gt chain
<> ne chain
!= ne chain

-> arrow left assoc

case <int> of <int> unassoc

numeric

Note that + has a lower precedence than -, and * has a lower precedence than / which is unusual.

- sub left assoc
+ add chain
* mul chain
/ div left assoc
% mod left assoc
- sub prefix
+ sub prefix
** pow right (special prec rules)

addressing

& prefix
* prefix

bitwise

| bor chain
^ xor chain
& band chain
~ bnot prefix

application

(juxtaposition) left assoc

coercion

: left assoc

component

. left assoc

qualified name

:: left assoc

suffixed name

of left assoc

atomic

if/then/else/endif

match <expr> with
| <pattern> => <expr>
...
endmatch

regmatch <expr> with
| <regexp> => <expr>
...
endmatch

(fun (<arglist>):<type> = { <expr> })
(fun (<arglist>):<type> = { <statements> })
{ <expr> }
Lambda function. The return type is optional. The third form is short for (fun () = { <expr> })

(proc (<arglist>){ <statements> })
{ <statements> }
Lambda procedure. The second form is short for (proc () = { <statements> })

Version

1.1.1_rc1

Web site

See http://felix.sourceforge.net

Author

John Maxwell Skaller, mailto:[email protected]

From felix 1.1.1-2+b1 in Debian 4.0 (Etch). Parsed by carta from the page's man source.