Giter VIP home page Giter VIP logo

Comments (2)

SimonRichardson avatar SimonRichardson commented on August 18, 2024

Names have come up before : #51

from fantasy-land.

remydagostino avatar remydagostino commented on August 18, 2024

I think there is a misunderstanding.

I'm not complaining about the name map or fmap for aesthetic reasons which appears to be what is happening in issue #51.

My issue is that the name map has already been taken by existing projects that we we might want to use. To give a concrete example:

I want Array.prototype.map to have the signature [a] -> (a -> b) -> [b] but the existing implementation has the signature [a] -> (a -> num -> [a] -> b) -> [b]. All those extra arguments in the iterator will bust up a curried function, so there is a good reason to want it to have the same signature across the board. If map wasn't already defined on the Array prototype I could just define it myself but it is and now I'm out of luck because map is the function that fantasy-land wants on the object and it's defined in a bad way.

Another example.

jQuery objects wrap up DOM nodes, I want to expose the functor interface of jQuery so that I can interoperate with fantasy-land things. jQuery objects already have the functor's map method so I should be in luck, unfortunately the signature is jQuery Element -> (Number -> Element -> a) -> [a]. If we were using a different name for the functor's map method then I could just fill it in on jQuery myself and I would have full interoperability with all my other functors.

jQuery.fn.extend({
  // :: jQuery Element -> (Element -> a) -> [a]
  fmap: function(fn) {
    return this.map(function(index, domElement) {
      return fn(domElement);
    });
  }
});

Note, I've used the name fmap in the above example but I don't really care what it's called - just something that isn't taken by other existing implementations.

from fantasy-land.

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.