UNPKG

@dillonkearns/elm-graphql

Version:

<img src="https://cdn.jsdelivr.net/gh/martimatix/logo-graphqelm/logo.svg" alt="dillonearns/elm-graphql logo" width="40%" align="right">

50 lines (35 loc) 1.53 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.replicate = replicate; exports.replicateA = replicateA; exports.none = none; exports.singleton = singleton; var _HKT = require('./HKT'); var _Maybe = require('./Maybe'); var maybe = _interopRequireWildcard(_Maybe); var _Tuple = require('./Tuple'); var _Traversable = require('./Traversable'); var _Fun = require('./Fun'); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } // Replicate a value some natural number of times. // This class identifies data structures which can be _unfolded_, // generalizing `unfoldr` on arrays. function replicate(unfoldable, n, a) { function step(n) { return n <= 0 ? maybe.Nothing : maybe.of((0, _Tuple.inj)([a, n - 1])); } return unfoldable.unfoldr(step, n); } // Perform an Applicative action `n` times, and accumulate all the results. function replicateA(applicative, unfoldableTraversable, n, ma) { return (0, _Traversable.sequence)(applicative, unfoldableTraversable, replicate(unfoldableTraversable, n, ma)); } // The container with no elements - unfolded with zero iterations. function none(unfoldable) { return unfoldable.unfoldr((0, _Fun.constant)(maybe.Nothing), undefined); } function singleton(unfoldable, a) { return replicate(unfoldable, 1, a); }