5 ms·
I think that going from Scheme to CL is much easier than the converse; Scheme's syntax is more straightforward (e.g. there's no #' for funcall), and there are f
by rw 17y ago
I think that going from Scheme to CL is much easier than the converse; Scheme's syntax is more straightforward (e.g. there's no #' for funcall), and there are fewer conceptual edge cases. If you use PLT Scheme, too, you get Lisp-n (not Lisp-1 nor Lisp-2) with the module system.
Scheme is a conceptual superset of Common Lisp (cf. continuations), although CL has more built-in practical functionality (CL is typically faster (exceptions include Stalin, Bigloo), and has possibly better-implemented libraries).
One might learn both concurrently!
- wingo 17y agoWhat do you mean by, "If you use PLT Scheme, too, you get Lisp-n"?
- rw 17y agoFrom: http://coding.derkeiler.com/Archive/Lisp/comp.lang.lisp/2004-02/2037.html http://coding.derkeiler.com/Archive/Lisp/comp.lang.lisp/2004... "" Here it helps that a Lisp-2 seperates variables and functions by default. Variables are usually not important parts of an application's ontology. If they are, the convention in Common Lisp is to use proper naming schemes, like asterisks for special variables. Effectively, this creates a new namespace." Mmm, asterisks. This, to me, is why the whole Lisp-1/2 debate is moot. The solution is simply Lisp-N, where you can define namespaces, modules, etc. and control how they're used. See PLT Scheme etc."
- wingo 17y agoI could be misinterpreting, but I don't think this is an accurate characterization of what a lisp-2 does. Function and value namespaces are separate in CL because functions and values are of different types; also there's the struct, class, etc namespaces. But still in Scheme the aesthetic is to put values of different types in the same namespace -- unless the values don't actually exist at runtime, which is the case with syntactic R6RS records, for example. But you'll still see a conflict at compile time if you attempt to use a name as a record type, then reference it as a free variable -- iirc, anyway.
- old-gregg 17y agoI have gone through "Practical Common Lisp", went through pains of integrating CL into vim, did my share of googling for libraries and found CL to be impractical for production use (for my projects). Yet I keep seeing the argument in favor of CL because it's got more libraries and "built-in practical functionality". Can you please elaborate? I haven't played with Scheme yet, but http://docs.plt-scheme.org http://docs.plt-scheme.org looks more impressive than anything I've seen for CL so far: lots of stuff in one place and guaranteed to work. Thanks!
- rw 17y agoI, too, am basing the libraries claim on others' opinions. I quit CL because I found the system too complex to fully grok, and what 21st-century technologies I needed were not standardized (see: concurrency). I would've been stuck either a) only able to use one implementation, like SBCL, or b) trying to roll my own half-assed implementation of a notoriously-huge language. There is a very nice chunk of CL that is good at what it does, is fast as hell, and nice to code in. But there is so much cruft attached!
- wglb 17y agoWhat obstacles did you find in your production use? I am heavily down this path already.