a.k.a. hugely optimizing a program to convert between git and subversion repos, etc.

user-inactivated:

I'm curious what problem he had translating his Python classes to CLOS. All I can guess is the method resolution order differing, but a straightforward translation from Python would only use a non-t specifier for the first argument of generic functions, and then I don't think the MRO should ever differ. At any rate, it's easy enough to just give the ordering you want.

Maybe he just didn't want to declare his slots? I guess I can see that, but it seems like a very minor complaint.

EDIT: reading the comment thread, his complaints are:

* style warnings from the compiler. The sbcl compiler is pretty verbose, but it usually offers good advice

* " I dislike the requirement that all methods be globally exposed. too." I assume he means he wants something like private methods? Python doesn't have any such thing either, just name mangling with _, but he could have either

       (labels ((helper-1 (...) ...) (helper-2 (...) ...) ...)
          (defgeneric ....)
          (defgeneric ....))
if he had helper functions he didn't want to expose, or defined a package and not exported generics not part of his public interface if he needed actual generic functions but didn't want to expose them.

* He doesn't know how CL pretty-printing works, and didn't know how to find out.

* He thinks special variables are globals, though he does understand dynamic scope from elisp.

I think he expected to master CL as quickly as Python or Perl, and that's not going to happen. He really wants a scripting language with a nice compiler and a conventional object system, and CL is not that language. Jazzor Biglooare closer to what he wants, I think.

(Hey, mk, every time I update this post the space between the close-paren on the links and the next word gets replaced by an extra close-paren.)


posted 4042 days ago