Hi Guy,
Right now you can escape a list or a tuple from being iterated (i.e. make it an literal/atom) by wrapping it with another pair of brackets. e.g.:
[[1,2,3]] -> print will result in '[1,2,3]'
and
[1,2,3] -> print will result in '1', '2', '3' (or any other combination, as -> is async operator and items order is not guaranteed)
My guiding principle is to keep the language operators (i.e. '|' and '->') as simple/abstract as possible, and define attributes using keywords or other identifiers.
Something along these lines:
C-style casting:
(discrete) [1,2,3] -> print
C++ template style:
discrete<[1,2,3]> -> print
C# style attribute:
[discrete]
[1,2,3] -> print
Functional programming style:
discrete([1,2,3]) -> print
and etc.