[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: copy pasting sweet expressions

On 3/7/13, Jos Koot <jos.koot@xxxxxxxxx> wrote:
> Nice idea, but how to deal with my frequent copy/paste actions in the
> definitionss window of DrRacket?
> For sexprs, copy/paste is easy in the definitions window of DrRacket. Just
> copy/paste and reindent. How easy would this be with sweet expressions? Can
> we copy/paste at a choosen level of indentation?
> Say I have a definition
> (define (f a b c)
>   def/expr ...
>    last-expr)
> When I am not sure that function f produces correct results, I modify it
> temporarily as:
> (define (f a b c) (let ((r (let()
>   def/expr ...
>   last-expr)))  (printf "result of proc f: ~s~n~n" r) r))
> Notice that here the indenting is deliberately wrong. Using the temporal
> "let ((r" form I don't care about the indenting. After seeing what is going
> on I use ctl Z in order to remove the extra let-form and the print-form.
> How
> would this be with sweet expressions?

Normally for myself I keep a probe() definition handy:

define probe(x)
 display "probe: " \\ write x \\ (newline)

Then whatever I need to probe, I just convert:

define (f a b c)
  def/expr ...


define (f a b c) $ probe $ let ()
  def/expr ...


SUBLIST rocks.

probe can also be a macro:

define-syntax probe
! syntax-rules ()
!   \\
!   ! probe x
!   ! \\
!   ! let
!   !   $ v $ x
!   !   write 'x ; show the expression
!   !   display ": "
!   !   write v
!   !   v

> Wish you good luck. A sweet expressions language is certainly possible in
> Racket. If i can be useful for (parts of) the implementation,mail me
> privately.

Yes, although I worry that it'll require a #lang declaration rather
than our preferred #!sweet form... Is the latter possible in Racket?
AFAIK all Racket languages require a #lang form, I'm not at all
certain it's possible to use #!sweet. (Note: I haven't gone digging
through Racket docs, so correct me if I'm wrong here)

Still, not a big problem, and it seems that Racket's current #lang
will do quite well.