GithubHelp home page GithubHelp logo

Comments (2)

pcostanza avatar pcostanza commented on September 15, 2024 1

The "restrictions on redefinition and shadowing" are specified in Section 11.1.2.1.2 of the HyperSpec. It states that "except where explicitly allowed," it's not a good idea to redefine such symbols. This exception is important.

The CLOS MOP specification defines such an exception for call-next-method. See http://www.p-cos.net/lisp/mop/mop/dictionary.html#make-method-lambda where it states that make-method-lambda "can be overridden." (What it means for a method to be overridden is specified in http://www.p-cos.net/lisp/mop/mop/concepts.html#implementation-and-users - namely that a user-defined method does not have to return the result of call-next-method, or does not even have to call it.)

The section on make-method-lambda also shows that it is clearly the intention that user-defined methods can introduce new local definitions for call-next-method and next-method-p. See from the same entry: "Note that the system-supplied implementation of call-next-method is not required to handle extra arguments to the method function. Users who define additional arguments to the method function must either redefine or forego call-next-method." See also the example given there.

I believe that a Common Lisp implementation that claims to conform to the CLOS MOP specification should respect this exception.

from closer-mop.

dkochmanski avatar dkochmanski commented on September 15, 2024

good point, thank you for pointing that out. This one was my biggest concern with regard to the proxy generic function metaclass.

from closer-mop.

Related Issues (17)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.