Dave wrote a great post explaining why dynamic languages need modules.
Month: April 2008
OCaml to get Concurrent Garbage Collection
Check it out at the Frog.
Working with DrScheme 372
DrScheme is a delightful environment for working with Scheme. It is has the right balance between power and ease-of-use that makes it perfect for just about anyone. Its goal is to be an excellent vehicle for both working with Scheme and facilitating learning via its teach-pack facilities. While DrScheme works pretty really well “out of the box”, you ought to dig deeper into the documentation and configuration options. Over the past year or so I’ve used DrScheme exclusively for editing Scheme and found that there are a few key-bindings, settings, tools, and ideas that were very helpful to me.
Continue reading “Working with DrScheme 372”
Never Trust Thoughtleaders
Never trust “a thought leader”: they are supposed to teach you how to think, not tell you what to think!
Now of course you can trust them, but it is your duty never to just “take their word for it”.
Donald Knuth uses emacs
Donald Knuth uses emacs.
(that says it all)
(via sness)
Lisp Changes How You Think
It is true what people say about Lisp, it changes how you think. In particular, it changes how you think about yourself!
If you pursue the “Road to Lisp”, it will serve as an elucidative experience as to whether or not you are “good” at programming. You see, I used to confuse “doing” with “learning”. All the “greats” tell you to learn a new language each year, but they don’t really tell you why, just that something good will happen. Now I can tell you from experience that I have had great fun and learned a lot jumping from language to language, but that strategy for learning is poor use of time and you’ll probably just end up being an average programmer in more languages after it is all said and done. There are better, much better ways to study the fundamentals of programming.
Lisp is one of those ways.
EuLisp
is a dialect of Lisp and as such owes much to the great body of work that has been done on language design in the name of Lisp over the last thirty years. The distinguishing features of EuLisp are (i) the integration of the classical Lisp type system and the object system into a single class hierarchy (ii) the complementary abstraction facilities provided by the class and the module mechanism (iii) support for concurrent execution.
Anaphoric Macros
Does the convenience that anaphoric macros provide justify breaking hygiene? In that chapter of On Lisp, the author stated that:
This chapter will show that variable capture can also be used constructively. There are some useful macros which couldn’t be written without it.
My evaluation of that claim is that while the former is true, anaphoric macros are not evidence of such a case as they only save you a variable binding. The latter claim is interesting because it begs the question of whether or not they should be written as macros at all. It made me wonder how anaphoric macros might look in Scheme, how they might look as functions, and whether one is clearly superior to the other.
Continue reading “Anaphoric Macros”
Stalin Scheme
is an aggressive optimizing batch whole-program Scheme compiler written by Jeffrey Mark Siskind. It uses advanced flow analysis and type inference and a variety of other optimization techniques to produce code (using C as an intermediate language) that is extremely fast, particularly for numeric codes. In a number of tests it has outperformed hand-written C, sometimes by a considerable margin. Stalin is intended for production use in generating an optimized executable.
(via Wikipedia)
Scheme in One Defun
is a small-footprint implementation of the Scheme programming language that is provided with some database, unix programming and cgi scripting extensions.
The motivation behind SIOD remains a small footprint, in every sense of the word, at runtime, at compile time, and in cognitive attention required to understand how the system works enough to be able to extend it as well as the author would have done the work himself.
