scheme has accumulated inconsistent read-syntax forms, some standardized, others quasi-standard. unlike bracketed expressions, they break syntactic regularity and require extra parser complexity outside scheme itself.
their main value is serialization efficiency, but new forms often aim at reducing typing effort or mimicking other languages. this adds semantic variation without necessity.
in syntax, single characters matter; frequent patterns affect reading, writing, and memory.
the following proposes minor reductions and renamings to simplify the language, while remaining 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