Idiomatically determine all the characters that can be used for symbols: Difference between revisions

→‎{{header|Perl 6}}: clarify about whitespace not being allowed in symbols
(ooRexx added)
(→‎{{header|Perl 6}}: clarify about whitespace not being allowed in symbols)
Line 44:
<pre>8 trilobites</pre>
Of course, as in other languages, most of the characters you'll typically see in names are going to be alphanumerics from ASCII (or maybe Unicode), but that's a convention, not a limitation, due to the syntactic category notation demonstrated above, which can introduce any sequence of characters as a term or operator.
 
Actually, the above is a slight prevarication. The syntactic category notation does not allow you to use whitespace in the definition of a new symbol. But that leaves many more characters allowed than not allowed. Hence, it is much easier to enumerate the characters that <em>cannot</em> be used in symbols:
<lang perl6>say .fmt("%4x"),"\t", uniname($_)
if uniprop($_,'Z')
for 0..0x1ffff;</lang>
{{out}}
<pre> 20 SPACE
a0 NO-BREAK SPACE
1680 OGHAM SPACE MARK
2000 EN QUAD
2001 EM QUAD
2002 EN SPACE
2003 EM SPACE
2004 THREE-PER-EM SPACE
2005 FOUR-PER-EM SPACE
2006 SIX-PER-EM SPACE
2007 FIGURE SPACE
2008 PUNCTUATION SPACE
2009 THIN SPACE
200a HAIR SPACE
2028 LINE SEPARATOR
2029 PARAGRAPH SEPARATOR
202f NARROW NO-BREAK SPACE
205f MEDIUM MATHEMATICAL SPACE
3000 IDEOGRAPHIC SPACE</pre>
We enforce the whitespace restriction to prevent insanity in the readers of programs.
That being said, even the whitespace restriction is arbitrary, and can be bypassed by deriving a new grammar and switching to it. We view all other languages as dialects of Perl 6, even the insane ones. <tt>:-)</tt>
 
=={{header|Python}}==
Anonymous user