over time, scheme has been extended with various inconsistent read-syntax forms, which became part of the official standard or a quasi-standard in implementations. these read-syntax forms differ from other syntax in that they are not based on round-bracket-delimited expressions and break the regularity of the fundamental bracket syntax. they also necessitate extra complexity in the parser, which is usually a non-scheme, or at least scheme-independent, part of the implementation.
read-syntax is otherwise primarily relevant for serialization, to avoid additional deserialization processing. efforts to introduce new read-syntax are typically driven by a desire to reduce typing effort for specific constructs, but they inadvertently increase the number of different semantic patterns and permutations. other motivations include personal habit, or the belief that scheme should resemble other popular languages more closely - as if there were not already enough alternatives sharing similar non-scheme syntax, or as if a language must be tailored to users of other languages, or that the existing in-language mechanisms were insufficient.
with syntax, details that may seem like nitpicks matter. single characters are important - a single character can break a program. specific combinations of characters carry semantics, are repeated frequently, and are read, written, and held in mind constantly. imagine, for example, the difference it would make if every variable had to be prefixed with a dollar sign.
the following describes a small set of reductions and renamings in an effort - likely with its own flaws - to simplify the language. it remains fully compatible with current interpreters.
#F #T square-bracket-sexp [ ] scsh-block-comment #! !# srfi30-block-comment #| |# upper-case-symbol ' , #' #, {backtick} multiple-return-values
#! hash-bang
(let (name value) body ...) for single bindings
[(lambda (a b) (+ a b))] ((lambda (a b) (+ a b)))
my guess is that the real reason for adding them is rooted in a mistake, because it goes so much against the general simplicity style of schemes design. or it might be about increasing the number of possible permutations to make the view of code more entertaining
not needed
hash-bang: seems necessary for creating shell executable scripts. this format is the standard for shell executable scripts which are important because they allow scheme programs to be used as simple commands on most systems. the syntax is one line starting with #!
a few names have been changed for increased clarity. it should be the goal of a language to have a consistent naming scheme with regular plain english names, not abbreviations, that make it easy to understand what they mean, and to use new terms only if it is absolutely necessary, and be able to improve
'test (q test) '(a b c) (q (a b c)) (map (lambda (e) (+ 1 e)) mylist) (map (l (e) (+ 1 e)) mylist)
this is optional, the original "for-each" might actually be the better name. each is shorter for bindings like each-integer
for single bindings instead of
let ((testname testvalue))
the following can be used
let (testname testvalue)
as of yet i have not found any kind of conflict yet. it works well, making the code simpler