Operations and required datatypes

prefix operations

        +N : N                          # compute positive
        -N : N                          # compute negative
        ~c1 : c2                        # compute cset complement
        =s1 : s2                        # match string in scanning
        @C : x                          # activate co-expression
        ^C1 : C2                        # create refreshed co-expression
        *x : i                          # compute size
        ?x1 : x2                        # generate random value
        !x : x1,x2,...,xn               # generate values
        /x : x                          # check for null value
        \x : x                          # check for non-null value
        .x : x                          # dereference variable

infix operations

        N1 + N2 : N3                    # compute sum
        N1 - N2 : N3                    # compute difference
        N1 * N2 : N3                    # compute product
        N1 / N2 : N3                    # compute quotient
        N1 % N2 : N3                    # compute remainder
        N1 ^ N2 : N3                    # compute exponential
        x1 ++ x2 : x3                   # compute cset or set union
        x1 -- x2 : x3                   # compute cset or set difference
        x1 ** x2 : x3                   # compute cset or set intersection
        s1 || s2 : s3                   # concatenate strings
        L1 ||| L2 : L3                  # concatenate lists
        R.F : x                         # get field of record
        x1 @ C : x2                     # transmission value to co-expression
        x1 & x2 : x2                    # evaluate in conjunction
        N1 < N2 : N2                    # compare numerically
        N1 <= N2 : N2                   # compare numerically
        N1 = N2 : N2                    # compare numerically
        N1 >= N2 : N2                   # compare numerically
        N1 > N2 : N2                    # compare numerically
        N1 ~= N2 : N2                   # compare numerically
        s1 << s2 : s2                   # compare lexically
        s1 <<= s2 : s2                  # compare lexically
        s1 == s2 : s2                   # compare lexically
        s1 >>= s2 : s2                  # compare lexically
        s1 >> s2 : s2                   # compare lexically
        s1 ~== s2 : s2                  # compare lexically
        x1 === x2 : x2                  # compare values
        x1 ~=== x2 : x2                 # compare values
        x1 := x2 : x1                   # assign value
        x1 op:= x2 : x1                 # augmented assignment
        x1 :=: x2 : x1                  # exchange values
        x1 <- x2 : x1                   # assign value reversibly
        x1 <-> x2 : x1                  # exchange values reversibly