Tim X <timx@nospam.dev.null> wrote:
+---------------
| rpw3@rpw3.org (Rob Warnock) writes:
| > Dunno, sorry. I've never [knowingly] used compiled Tcl.
...
| In fact, Tcl sort of led me to lisp. I started doing some scripts
| which used lists of regular expressions to process data files, but in
| some cases the data files were themselves these lists - sort of a poor
| mans code as data as code idea. However, some things were hard to
| achieve and then a friend pointed out that the things I was trying to
| do in Tcl were pretty much native and more natural and powerful in a
| lisp style language.
+---------------
Tcl sort of led me to Lisp, too, but not for the reasons you cite.
I was doing user-mode hardware development/debugging using TCL as
a base, with a ".so" of application-specific C code bolted on the
side ["mmap()", "mpin()", "peek()", "poke()", etc.], which Tcl
supports quite nicely. But when I wrote 'scope loops[1] in Tcl
they were *so* sloooowwww that I had turn turn off the lights
to see the triggered traces on the oscilloscope.
A friend suggested using Scheme, which he said had "real data types,
not just strings". So I switched to SCM, with a similar ".so" bolt-on.
*Way* faster! I later switched again to MzScheme [faster still, plus
numerous extensions/libraries], and finally a few years ago to CMUCL,
which had the advantages that: (1) I didn't need my bolt-on ".so", I
could write everything I needed directly in CMUCL [albeit using calls
to "internal" routines like SYSTEM:INT-SAP & SYSTEM:SAP-REF-32]; and
(2) small 'scope loops in compiled CMUCL ran at the same speed C did!!
So I've been using CMUCL for user-mode hardware development ever since...
+---------------
| The cruel irony here is that I've had a lot more success convincing
| people to use Tcl than lisp - I guess its because Tcl hasn't got the
| wealth of built up prejudice lisp seems to have.
+---------------
See my previous postings re "OPFR", my "Outer-Parentheses-Free REPL",
which -- if you predefine almost all the things users will need to
do as functions (a.k.a. "commands") -- looks a lot to users like Tcl
at first glance... until they have to do something with subexpressions:
opfr> deflex foo "abcde"
FOO
opfr> subseq foo 2 4
"cd"
opfr> char foo 3
#\d
opfr> setf (char foo 3) #\D
#\D
opfr> format t "Foo is now: \"~a\"~%" foo
Foo is now: "abcDe"
NIL
opfr>
It's quite surprising how much the acceptance of the interface
goes up when *all* you do is remove the outer two parens! ;-} ;-}
-Rob
-----
Rob Warnock <rpw3@rpw3.org>
627 26th Avenue <URL:http://rpw3.org/>
San Mateo, CA 94403 (650)572-2607