I imagine the tricky part for someone unfamiliar with Lisp would be that there’s no syntactic clue that a particular thing is a macro or special form that’s going to treat its arguments differently from a function call. Someone who knows Scheme may have never seen anything like CLOS, but would see from context that defmethod must not be a function.
You don’t even need to define a class to define methods. I’m sure that’s surprising to people coming from today’s popular language, but the original comment was about syntax.
Whether Lisp syntax is ugly is a matter of taste, but it’s objectively not unreadable.
In most languages, I would agree with that. In Lisp, I think I might not. If Common Lisp didn’t come with CLOS, you could implement it as a library, and that is not true of the object systems of the vast majority of languages.
I imagine the tricky part for someone unfamiliar with Lisp would be that there’s no syntactic clue that a particular thing is a macro or special form that’s going to treat its arguments differently from a function call. Someone who knows Scheme may have never seen anything like CLOS, but would see from context that
defmethodmust not be a function.Yea, and CLOS is pretty weird, with putting methods outside the class definition.
You don’t even need to define a class to define methods. I’m sure that’s surprising to people coming from today’s popular language, but the original comment was about syntax.
Whether Lisp syntax is ugly is a matter of taste, but it’s objectively not unreadable.
Where you can define a method is syntax
In most languages, I would agree with that. In Lisp, I think I might not. If Common Lisp didn’t come with CLOS, you could implement it as a library, and that is not true of the object systems of the vast majority of languages.