6 ms·
The problem with the Blub paradox is that there's no total ordering. I do Common Lisp and C++ at my day job (ITA), and I do much of my personal hacking in Pyth
by metageek 16y ago
The problem with the Blub paradox is that there's no total ordering.
I do Common Lisp and C++ at my day job (ITA), and I do much of my personal hacking in Python. In Python and C++ I miss macros; in Lisp and Python I miss RAII and strong typing; in Lisp and C++ I miss dictionary literals.
And, in all of them, I miss algebraic datatypes.
- pg 16y agoI did mention in the original essay that it was only a partial order, in footnote [4].
- jcromartie 16y agoI can't help you with strong typing, but I'm pretty sure a macro would go a long way towards implementing RAII in a Lisp.
- metageek 16y agoThat's true; we've already got special cases like WITH-OPEN-FILE.
- masklinn 16y agoActually, you already have something better than RAII in unwind-protect. Just create whatever macro you need on top of that (I'm pretty sure with-open-file is just a macro on top of unwind-protect, Siebel seems to agree in his chapter on files) and you're done.
- masklinn 16y ago> I'm pretty sure a macro would go a long way towards implementing RAII in a Lisp. Well yeah, just build the macro you need on top of unwind-protect, that's pretty standard common lisp fare.
- swannodette 16y agoWhat about Qi? What about Typed Racket?
- djacobs 16y agoOne question I've had about Typed Racket since I first saw it: why all the colons? Seems to mess with the elegance of Lisp, and especially Scheme. There has to be another friendlier syntax for typing, no?
- manu3000 16y agowhy not ? colons are used to denotes values type in ML
- namekuseijin 16y agoTyped Racket combines all the inconvenience of type declarations with all the performance provided by a dynamic language.
- DanWeinreb 16y agoHello, my co-worker, whoever you are. Yes, Common Lisp should have dictionary literals. I don't know why there hasn't been a commonly-used reader macro for this. (Emacs Lisp mode and other tools would have to know about it, so it needs to be a widely-accepted convention.) Common Lisp does have strong typing. What it does not have is static typing. I am at the SPLASH conference, and the Dynamic Language Symposium is happening right now. There is controversy over whether we can find a way to have the benefits of both static and dynamic typing in the same language. The great advances in type inference make me hopeful. The keynote speaker, Allan Wirfs-Brock, replied to my question about this with more pessimism. It is not a simple question; for one thing, not everybody even agree about which factors are "pro" or "con" for either static or dynamic. I am not doing programming languages these days (I'm doing databases) but I continue to be hopeful.
- metageek 16y agoHello, my co-worker, whoever you are. John Stracke. (I've been staying pseudonymous, but today I mentioned Adder, which is tied to my real identity.) Common Lisp does have strong typing. True. I need to remember to be more precise; "doesn't have strong typing" just means "doesn't have type feature Blub". Common Lisp has runtime type safety, and type hints for efficiency; what it does not have is the pervasive typing that I'm used to from C++, which has a separate set of benefits. The most obvious is that, in C++, I can change the interface to a class and be certain that the compiler will catch any caller that uses it incorrectly. (Although I suppose it may be possible to do something like that with CLOS. I haven't used much CLOS, since ITA avoids it.) There is controversy over whether we can find a way to have the benefits of both static and dynamic typing in the same language. I'd say that type inference already brings us nearly there: the convenience of dynamic typing, with the rigor of static typing. I may be wrong, though; I've used ML and Haskell, but not enough to really feel where the pain points of type inference are.
- chaitanya 16y ago> I haven't used much CLOS, since ITA avoids it. Interesting. Is it for performance reasons?
- lisper 16y ago> in Lisp and C++ I miss dictionary literals So roll your own. Or use mine: http://flownet.com/ron/lisp/dictionary.lisp http://flownet.com/ron/lisp/dictionary.lisp
- akkartik 16y agoWhy do you miss dictionary literals? Syntax similar to arc's seems to do it for me: (obj a 1 b 2 c 3)
- gruseom 16y agoWe do the same thing: (make :a 1 :b 2 :c 3) which macroexpands into a plist in CL and {a:1, b:2, c:3} in JS. I've grown to like this idiom a lot. Yeah, you have to type OBJ or MAKE or whatever but in return you get something that integrates completely smoothly with the rest of the language.
- metageek 16y agoY'know, I'm not sure. Next time I need to use a hash, I'll create something like that and see how it feels.
- milesvp 16y agoForgive me, but I think you mean in python you miss static typing. Python is strongly typed. Also, just to jab at C/C++, pointers to void... really? It all but makes C/C++ a weakly typed language. http://wiki.python.org/moin/Why%20is%20Python%20a%20dynamic%20language%20and%20also%20a%20strongly%20typed%20language http://wiki.python.org/moin/Why%20is%20Python%20a%20dynamic%... http://www.artima.com/weblogs/viewpost.jsp?thread=7590 http://www.artima.com/weblogs/viewpost.jsp?thread=7590 http://en.wikipedia.org/wiki/Duck_typing http://en.wikipedia.org/wiki/Duck_typing http://articles.sitepoint.com/article/typing-versus-dynamic-typing http://articles.sitepoint.com/article/typing-versus-dynamic-...