[plt-scheme] Interacting w/ MzScheme

From: Alexander Schmolck (a.schmolck at gmx.net)
Date: Fri Dec 10 01:06:32 EST 2004

Matthias Felleisen <matthias at ccs.neu.edu> writes:

>   For list-related administrative tasks:
>   http://list.cs.brown.edu/mailman/listinfo/plt-scheme
> This has nothing to do with flamewar. Tell us and we will listen. If it is a
> flame, we will tune out the heat and find the part that matters. -- Matthias

OK, if you enjoy fire-fighting here you go:

A) Drscheme doesn't do the most basic editing facilities remotely right.

1. no mark-ring, no proper understanding of marked region: I do a substantial
   part of my navigation with C-u C-SPC and region and mark related stuff in
   general seems broken or nonexistent in drscheme

2. crippled isearch:

   - ill-designed search dialog: I find the attentional distraction of some
     big visual flash at the bottom of the screen everytime I do an isearch
     quite annoying. It doesn't help that almost none of the stuff in it is
     of any help and thus mainly ends up wasting space.
   - no proper search history etc. (M-p etc.) 
   - instead a new isearch repeats the last search (*even* if that last search
     was a failure in which case the bloody thing then beeps at one) -- IMO
     it's bad because

     + typically chances that I don't want to search the same thing again in a
       new search session are quite good [1]
     + OTOH obtaining the behavior under emacs, *when* it is desired, is
       *less* than *1* key press (Depress control, depress s , release and
       press s again, release both control and s)
     + there is substantial cost if is *not* the desired behavior, especially
       if it means one ends up somewhere completely different in the file
       rather than somewhere close or inside the current screen (in which one
       which ones attention was focus and where one wanted to search in the
       first place)
   - no highlighting of all matches on screen
   - generally non of the fancy stuff (try C-hm C-s if you didn't notice what
     you're missing)
   - no marks (see 1.)
   - stupid modality costs time and nerves (in emacs RET and all movement
     commands get you out of isearch)
   - SIGNIFICANTLY these two things combined mean that you can no longer
     properly use isearch for *editing* rather than *finding* as such; in
     emacs you might want to rebind C-w and M-w and C-y in the
     isearch-mode-map; but then you can use isearch as a very effective means
     to select (and copy/delete etc.) regions of text

3. 1) and especially 2) are killers for me; but lots of other important basic
   editing commands missing to name just a few random ones:
   - dabbrev-expand
   - exchange-point-and-mark
   - backward-kill-sexp
   - rectangle and register commands
   - session-jump-to-last-change (this is not part of core emacs, but since
     <http://emacs-session.sourceforge.net> is possibly the single most useful
     emacs package around, I'd recommend having a look at it;
     session-jump-to-last-change (C-xC-/) basically cycles through the
     positions that were last modified, amongst other things it is incredibly
     useful if one writes something, stops in the middle to look at some other
     parts of code and then can resume there immediately)

B) General interface woes
   - responsiveness
   - even the facilities for the painstakingly and separately written
     documentation are terribly ineffective and cumbersome to use compared to
     the ancient `info' (or even mozilla)
   - annoying pop-up windows for everything  no multiple buffers or frames
   - horrible file-dialog
   - the features that would be cool in principle are poorly designed or don't
     use their potential (mouse-hover arrows to same identifier -- why do I
     have do use the mouse? why do the arrows have to render the text
     unreadable? Maybe some subtle change in background color on resting the
     cursor under a symbol (and a keyboard way to navigate or rename the
     different occurrences) might work quite well to make this actually
   - rather poor fonts for me under debian, but that might not be a PLT issue.

C) (IMO) terrible general architecture:

   - In emacs I getting the documentation, keybinding, function-name and or
     actual code of just about anything is a matter of very few keypresses
     (*even* for menu-items) and hacking it is no problem. 

     Now maybe this is just some deep sort of cultural divide or something
     were I just haven't seen the light yet --for some reason I've never been
     able to fathom why scheme doesn't have docstrings for example (it would
     seem to me that designing a programming language with REPL but without
     something like docstrings is fundamentally braindamaged) or why there
     isn't any proper error handling, debugging or really interactive
     development facility in in drscheme -- or why 'documentation' doesn't
     even make it into htdp's index (last time I looked, site seems down now).

     I'd be genuinely curious to know about the *downsides* of having
     docstrings in a language so if anyone can enlighten me please do (for
     some reason almost all vaguely functional programming languages seem to
     offer REPLs but no docstrings and I really can't understand why).

Minor point: Apparently bad debian packages:
   - I just apt-get install'ed the latest drscheme to make sure what I wrote;
     not only did the installation process take several minutes the result
     also seems broken -- on startup (and after nuking ~/.plt*) I get an error

      standard-module-name-resolver: collection not found: "trace" in any
      of: ("~/.plt-scheme/207/collects" "/usr/lib/plt/collects")

Why do I bother to write all this stuff? Well, I think in principle plt scheme
and a properly done IDE (or least editor) environment on top of it could be
eventually become something that makes a real difference, namely a foundation
one which to build actually *interesting* applications, viz quite unlike the
typical KDE/Gnome/Windoze crap.

I think the minimum requirements for doing something genuinely good would be a
decent and freely available interactive programming language with rich
libraries and high expressiveness that still remains suitability for end-user
programming (for more sophisticated but not computer science PhD end-users).
Additionally it would really help to have good existing editing facilities
built on top of that language and a powerful GUI framework (powerful enough to
do something rather different from the current GUI stuff, not necessarily full
of widgets; I think one would want at least fast and good 2D vector graphics
and text rendering).

I don't think PLT qualifies as of yet (or possibly ever), but than it is in a
fairly minuscule set of potential candidates I can think of.



[1] This is easy to investigate empirically BTW -- by "dribbling" in emacs and
    then analysing the keypress patterns for C-s / C-r sequences to see how
    often the same word was searched for consecutively

Posted on the users mailing list.