Today I've conceived the idea that TUPLE!s could be used to indicate things to the left of a dot should not be a function.
That decoration could be used as an alternative for functions...
>> print-val: func [x.] [print ["The value is" x]]
>> print-val :foo
* Error: Function assigned to X, disallowed functions (spec'd as X.)
>> print-val: func [x] [print ["The value is" x]]
>> print-val :foo
The value is Formatting hard drive...
Or for iteration:
>> block: compose [1 (:foo) 2]
>> for-each var. block [print ["The value is" var]]
The value is 1
** Error: Function assigned to VAR, disallowed (spec'd as VAR.)
>> block: compose [1 (:foo) 2]
>> for-each var block [print ["The value is" var]]
The value is 1
The value is Formatting hard drive...
The value is 2
This would give library authors peace of mind and save them the trouble of less efficient ways of writing bulletproof code... moving the burden of annotation to those who need it.
It makes me a bit uncomfortable as the default seems unsafe. But that unsafety can also be seen as flexibility for code golf.
Slashes could be used as well, but that wouldn't seem to combine well with refinements... as /a/ meaning "optional parameter than can be a function if it wants" seems less natural than /a. as "optional parameter that can't be a function". It also seems the cleanest expression...
foo: func [/a.] [...]
foo: func [/a/] [...]
foo: func [:/a] [...]
So all told, we could have something like foo: func ['(/a.)] [...] for meaning "quoted optional parameter that can escape the quoting via GROUP!, but can't be a function." In my ranking listed above (1-4) it brings the best of all worlds... since TUPLE! would be legal in PATH! while GET-WORD! wouldn't, it binds the non-executability to the parameter -and- puts the escapability right next to the quote.
Having a pretty good feeling about this...so maybe the lax default is okay. If anyone is bothered by it they can build their own wrapper that enforces the non-executability unless you annotate it somehow.