Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

In FP functions shouldn't mutate data structures that were passed by reference on input, instead any input data should be copied before performing mutations on it to avoid changes to external state.

This is how e.g. Array.prototype.filter() works in JavaScript:

  var numbers = [1,2,3,4,5,6,7,8,9,10];

  var evenNumbers = numbers.filter( function(number) {
    return number % 2 === 0;
  });


I would like to add that this it is perfectly possible to write purely functional programs that do mutation. You just need to be explicit about it.

Many purely functional data structures also have advanced implementations that need much less copying than "immutable" would at first make you think, since two values can share unchanged structure.


It's not really considered "mutation" at all. They just return new values that are related in some way to the input values.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: