Giter Club home page Giter Club logo

Comments (6)

samth avatar samth commented on September 21, 2024

Two possibilities for fixing this: a keyword argument for the equal? procedure, or a syntax parameter that holds the identifier.

from rhombus-prototype.

AlexKnauth avatar AlexKnauth commented on September 21, 2024

I'd lean towards an optional keyword.
Would a syntax parameter ever accidentally apply to situations where someone wants the normal equal-case behavior inside a clause of another case expression overridden for a different equality?

from rhombus-prototype.

usaoc avatar usaoc commented on September 21, 2024

eq?, eqv?, equal?, and equal-always? are all that apply to case, right? (It can’t be an arbitrary procedure due to the dispatch algorithm used.) I’m not sure having an optional directive that recognizes exactly those identifiers is a better idea than having different versions of case altogether.

from rhombus-prototype.

mflatt avatar mflatt commented on September 21, 2024

Maybe add a new case variant to Racket, but in a racket/case (or racket/case-always) module instead of racket/base or racket?

from rhombus-prototype.

samth avatar samth commented on September 21, 2024

A new case variant seems like it would either require duplication of the case implementation or internally providing a dispatched variant from the implementation in racket/private/case.rkt.

from rhombus-prototype.

rocketnia avatar rocketnia commented on September 21, 2024

eq?, eqv?, equal?, and equal-always? are all that apply to case, right? (It can’t be an arbitrary procedure due to the dispatch algorithm used.)

I don't think it would need to be limited to those in principle, since it is possible to build custom hash tables, AVL trees, tries, range maps, etc. using arbitrary Racket code and syntax-local-lift-expression their construction. Moreover, an internal data structure for this purpose could get even cleverer and represent itself strictly in terms of vectors and such just to get access to quotability if that's important.

Better than lifting or quoting might be to do a define/match-like design—as in, to introduce a form for defining a function that immediately invokes case on one of its arguments—so that the programmer knows exactly what "definition time" the data structure construction is performed at and can reposition it to wherever in their code they like it. Having a well defined "definition time" would even open up the potential for non-constant expressions in branch conditions, since those expressions could be documented to run specifically at definition time and in the definition site's lexical scope.

from rhombus-prototype.

Related Issues (20)

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.