(with-open-file (file "test.txt" :direction :output)
(print "hello" file))
> This might open a file called “test.txt” and write “hello” into it—or it might reformat your hard drive! How are you to know?Isn't that true when you call any user-defined function in any language? (Well, actually in Haskell I suppose you can tell if it has side-effects, but with "print" you'd expect it to anyway.)
> Also, you can't use Lisp in an interactive application, since garbage collection can kick in at any time and stop your program for a couple of seconds at a time.
Yeah, garbage collection sucks! Use Java! Or C#! Apparently.
> In contrast, Java and C# programs are compiled into efficient bytecode
In contrast to what? Compiling Lisp down to machine code?
Argh. You'd've thought I'd've learnt not to feed the troll. Sorry.
However, haven't I read his page, I wouldn't understand it either. It seems like I'm not the only one who don't get it - it would be nice to hear from the author what was his point.
Except... you can't store the code in files that way. Lispers tend to learn their lesson the hard way, as all code is lost when you need to reboot your computer.
I once interviewed for an embedded systems C/C++ compiler company and they told me this hilarious story. One of their big clients made semi-custom hardware to support their lab operations. This client took advantage of a special feature of their compiler/development-environment whereby you could patch code running on a live system without having to recompile just by setting a breakpoint. It turns out that there was a hard limit on the number of breakpoints you could have running at once though: 65536. This client had exceeded that number and then came begging for them to raise it because they had been making changes to their system in-situ for years and all those changes were gone. The changes only existed in the patched binary; the source for all 65K changes had been lost.
So yes, you do need to be careful about interactive systems, but I've only ever heard of it biting C/C++ users this badly.
http://en.wikipedia.org/wiki/German_humour
Check the date of the article :-)
> type stuff into the REPL... can't store the code in files that way.
What's the standard solution to this? Serialize everything, and then hand-edit to just keep the things you want? Cut-n-paste the history into a file?
This was the point where I thought "This can't be serious." I always found SXML a perfect example of where data and code meet.