Giter Site home page Giter Site logo

Pure mal equal implementation about mal HOT 2 CLOSED

kanaka avatar kanaka commented on May 13, 2024
Pure mal equal implementation

from mal.

Comments (2)

kanaka avatar kanaka commented on May 13, 2024

That's a good idea and I did actually consider that. Since mal is primarily a learning tool, a strong goal of mine is to keep both the mal implementation of mal, and the other implementations of mal small. Obviously these two goals are in tension because there is actually a lot of other functionality that could actually be implemented in mal itself rather than the underlying language (for example, map can be implemented just with recursive functions), and on the flip side, the mal implementation could be smaller if things like let list processing were provided by the underlying language. Anyways, I tend to weigh on the side of keeping the mal implementation itself small. Also, some things like this are fairly intensive at runtime when they are done in mal instead of the underlying language (it might be slightly different balance if mal was a compiler rather than an interpreter). For example, the GNU make implementation could really use a native implementation for equality given how slow it already is.

However, I think this is interesting code that we shouldn't lose track of and is certainly useful when an implementation doesn't have native hash-map equality. With that in mind, I've actually moved some of the example programs in mal to the examples/ sub-directory. I think this would make a lot of sense in that directory. Also, one change I might suggest is that you could wrap much of the code in a conditional that checks if hash-map equality works (if (= {"a" 1} {"a" 1}), and if it doesn't then redefine "=" to add that functionality. This would then allow the file to be loaded and basically it would polyfill the language to add this if it doesn't already support it.

Want to send me a PR to add this to the examples directory (and maybe make the change I suggested)?

from mal.

kanaka avatar kanaka commented on May 13, 2024

I'm closing this since the pure mal version is now in the examples directory. Thanks @dubek!

from mal.

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.