Daggy

Library for creating tagged constructors.

Examples

daggy.getInstance

  1. function WrappedArray() {
  2. var self = daggy.getInstance(this, WrappedArray);
  3. self._array = [].slice.apply(arguments);
  4. return self;
  5. }
  6. new WrappedArray(1, 2, 3) instanceof WrappedArray; // true
  7. WrappedArray(1, 2, 3) instanceof WrappedArray; // true

daggy.tagged

  1. var Tuple3 = daggy.tagged('x', 'y', 'z');
  2. var _123 = Tuple3(1, 2, 3); // optional new keyword
  3. _123.x == 1 && _123.y == 2 && _123.z == 3; // true
  4. _123 instanceof Tuple3; // true

daggy.taggedSum

  1. var Option = daggy.taggedSum({
  2. Some: ['x'],
  3. None: []
  4. });
  5. Option.Some(1) instanceof Option.Some; // true
  6. Option.Some(1) instanceof Option; // true
  7. Option.None instanceof Option; // true
  8. function incOrZero(o) {
  9. return o.cata({
  10. Some: function(x) {
  11. return x + 1;
  12. },
  13. None: function() {
  14. return 0;
  15. }
  16. });
  17. }
  18. incOrZero(Option.Some(1)); // 2
  19. incOrZero(Option.None); // 0