Remember that data is any of null, boolean, integer, float, string, array of data, object mapping string to data (i.e. JSON). We do not provide separate types for these JSON cases.
+Syntax: expr + expr
Typing: data + data -> data
Cases:
, , /, %Syntax: expr - expr (for the other operators in the same way)
Typing: data - data -> data (for the other operators in the same way)
Cases:
++Syntax: expr ++ expr
Typing: T* ++ T* -> T*
Returns a stream that first takes the elements from the first input, and then from the second input after no more element can be retrieved from the first.
Hint: because the type-checker converts T to T* automatically, any of the inputs can also be a non-stream. For example 1 ++ 2 ++ 3 constructs a stream of the three elements 1, 2, and 3. Or, all ++ "end" returns the elements from all followed by the single string "end".
&& and ||Syntax: expr && expr or expr || expr
Typing: data && data -> data