Hacker News new | ask | show | jobs
by agumonkey 2467 days ago
what would be a good word for this ? recreate ? recompute ? with_new ?
3 comments

In general, I think verbs should be avoided, when possible, as names of functional operations. For instance, in Java, 'BigInteger.add' should have been 'plus'. Compare:

  x.add(y);
  x.plus(y);
People have been known to write the first one expecting 'x' to be updated. With the second, I think it's clearer that it's a value that needs to be assigned to a variable.

For the operation in question here, I suggest 'with'. This is what I have used in my own functional collections libraries; I think it originated in SETL.

I am a fan of nouns(or gerunds) for pure functions, and verbs for mutating functions. I.e:

    x.add(y); // x now equals x + y 
    x.adding(y); // returns x + y without mutating x
Clojure as `(assoc col key val)` and `(update col key fn)` though I don't know that the naming scheme is significantly clearer.
I'd probably be happy with "update", which is similar to Clojure's API for its persistent vector and map.

https://clojuredocs.org/clojure.core/update

update is a different operation, it takes an update function for the value. The clojure equivalent to set is assoc.