FWIW, an unreleased Racket mode for Emacs (which did fast incremental lexing, and some higher parsing[1]) intentionally colored the entire expression after `#;` as a comment.  I don't recall whether I decided to have it skip over the commented expression for sibling-level sexp-based editor operations, like move-point-to-start-of-next-expression, though it probably did sexp operations and matching paren-highlighting while inside the commented expression.

I considered `#;` a convenience for quickly commenting out a sexp, since that's how I recall seeing it used.  Though sexp-aware editor commands can easily make quick sexp commenting and uncommenting easy using `;;`, including simple automatic unsnuggling and resnuggling of close-parens.

I didn't realize that some people wanted to treat `#;` as meaningful code-like sexp text that's not actually code.  (For pedagogic purposes, I suppose it makes sense to be clear that not all code-level-ish abstractions&artifacts in the process are code, so maybe you use a comment in a beginner `#lang` for that, even if you want to use a sexp too.  But, for later purposes, maybe you actually want that particular sexp thing to be code in a syntax extension or `#lang`.  Then you get Contracts, Typed Racket, or embedded API docs, or embedded specification, or something else.)

Incidentally, a pertinent bit of the Emacs mode tests (below) makes framework-restricted coders cry (in that case, the framework was based on regexps, legacy kludgey character syntax classes, and a few fixed concepts of syntax).  But those tears turn into ones of joy, when the coder remembers that they are actually a CS-educated software engineer, who can make a technical assessment and business case that the framework is a barrier to smash, and roll up their sleeves, for some some good old-fashioned automata theory, algorithm design, and efficient programming.

  (insert "(define (f x #:y (y 0) #:z (z 0))\n")
  (insert "  (xxx '''(yyy (\"(\"\n")
  (insert "                ;; (\n")
  (insert "                (zzz #\\( ppp)\n")
  (insert "                #| #| ( |# ( |#\n")
  (insert "                qqq)\n")
  (insert "                #;#;(1\n")
  (insert "                     2)\n")
  (insert "                  (3 '(4 5) 6)\n")
  (insert "                (n)\n")
  (insert "               rrr)\n")
  (insert "       #;)\n")
  (insert "       sss))\n")

[1] It got mothballed when my book was, the pre-Git SCM repo was lost, the only known survivor of the main file was in a checkout workspace, in middle of an architecture change, and I don't have free person-days to reconstruct the prior/next version.  Meow was a big advance beyond Quack (the original poor substitute for DrScheme), but it didn't do the great things Greg's `racket-mode` now does, anyway.

--
You received this message because you are subscribed to the Google Groups "Racket 
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to