sanctuary-type-classes
Advanced tools
Comparing version 1.2.0 to 1.3.0
375
index.js
@@ -86,30 +86,45 @@ /* | ||
// has :: (String, Object) -> Boolean | ||
var has = function(k, o) { | ||
return Object.prototype.hasOwnProperty.call(o, k); | ||
}; | ||
// concat_ :: Array a -> Array a -> Array a | ||
function concat_(xs) { | ||
return function(ys) { | ||
return xs.concat(ys); | ||
}; | ||
} | ||
// constant :: a -> b -> a | ||
var constant = function(x) { | ||
function constant(x) { | ||
return function(y) { | ||
return x; | ||
}; | ||
}; | ||
} | ||
// has :: (String, Object) -> Boolean | ||
function has(k, o) { | ||
return Object.prototype.hasOwnProperty.call(o, k); | ||
} | ||
// identity :: a -> a | ||
var identity = function(x) { return x; }; | ||
function identity(x) { return x; } | ||
// prepend :: a -> Array a -> Array a | ||
var prepend = function(x) { | ||
return function(xs) { | ||
return [x].concat(xs); | ||
// pair :: a -> b -> Pair a b | ||
function pair(x) { | ||
return function(y) { | ||
return [x, y]; | ||
}; | ||
}; | ||
} | ||
// type Iteration a = { value :: a, done :: Boolean } | ||
// iterationNext :: a -> Iteration a | ||
function iterationNext(x) { return {value: x, done: false}; } | ||
// iterationDone :: a -> Iteration a | ||
function iterationDone(x) { return {value: x, done: true}; } | ||
// type :: Any -> String | ||
var type = function type(x) { | ||
function type(x) { | ||
return x != null && type(x['@@type']) === 'String' ? | ||
x['@@type'] : | ||
Object.prototype.toString.call(x).slice('[object '.length, -']'.length); | ||
}; | ||
} | ||
@@ -151,3 +166,3 @@ //# TypeClass :: (String, Array TypeClass, a -> Boolean) -> TypeClass | ||
//. type-class constraints at run time. | ||
var TypeClass = function(name, dependencies, test) { | ||
function TypeClass(name, dependencies, test) { | ||
return { | ||
@@ -161,3 +176,3 @@ '@@type': 'sanctuary-type-classes/TypeClass', | ||
}; | ||
}; | ||
} | ||
@@ -173,3 +188,3 @@ // data Location = Constructor | Value | ||
// _funcPath :: (Boolean, Array String, a) -> Nullable Function | ||
var _funcPath = function(allowInheritedProps, path, _x) { | ||
function _funcPath(allowInheritedProps, path, _x) { | ||
var x = _x; | ||
@@ -182,17 +197,17 @@ for (var idx = 0; idx < path.length; idx += 1) { | ||
return typeof x === 'function' ? x : null; | ||
}; | ||
} | ||
// funcPath :: (Array String, a) -> Nullable Function | ||
var funcPath = function(path, x) { | ||
function funcPath(path, x) { | ||
return _funcPath(true, path, x); | ||
}; | ||
} | ||
// implPath :: Array String -> Nullable Function | ||
var implPath = function(path) { | ||
function implPath(path) { | ||
return _funcPath(false, path, implementations); | ||
}; | ||
} | ||
// $ :: (String, Array TypeClass, StrMap (Array Location)) -> TypeClass | ||
var $ = function(_name, dependencies, requirements) { | ||
var getBoundMethod = function(_name) { | ||
function $(_name, dependencies, requirements) { | ||
function getBoundMethod(_name) { | ||
return function(x) { | ||
@@ -206,3 +221,3 @@ var m; | ||
}; | ||
}; | ||
} | ||
@@ -230,3 +245,3 @@ var name = 'sanctuary-type-classes/' + _name; | ||
return typeClass; | ||
}; | ||
} | ||
@@ -465,42 +480,42 @@ //# Setoid :: TypeClass | ||
// Null$prototype$toString :: Null ~> () -> String | ||
var Null$prototype$toString = function() { | ||
function Null$prototype$toString() { | ||
return 'null'; | ||
}; | ||
} | ||
// Null$prototype$equals :: Null ~> Null -> Boolean | ||
var Null$prototype$equals = function(other) { | ||
function Null$prototype$equals(other) { | ||
return true; | ||
}; | ||
} | ||
// Undefined$prototype$toString :: Undefined ~> () -> String | ||
var Undefined$prototype$toString = function() { | ||
function Undefined$prototype$toString() { | ||
return 'undefined'; | ||
}; | ||
} | ||
// Undefined$prototype$equals :: Undefined ~> Undefined -> Boolean | ||
var Undefined$prototype$equals = function(other) { | ||
function Undefined$prototype$equals(other) { | ||
return true; | ||
}; | ||
} | ||
// Boolean$prototype$toString :: Boolean ~> () -> String | ||
var Boolean$prototype$toString = function() { | ||
function Boolean$prototype$toString() { | ||
return typeof this === 'object' ? | ||
'new Boolean(' + toString(this.valueOf()) + ')' : | ||
this.toString(); | ||
}; | ||
} | ||
// Boolean$prototype$equals :: Boolean ~> Boolean -> Boolean | ||
var Boolean$prototype$equals = function(other) { | ||
function Boolean$prototype$equals(other) { | ||
return typeof other === typeof this && other.valueOf() === this.valueOf(); | ||
}; | ||
} | ||
// Number$prototype$toString :: Number ~> () -> String | ||
var Number$prototype$toString = function() { | ||
function Number$prototype$toString() { | ||
return typeof this === 'object' ? | ||
'new Number(' + toString(this.valueOf()) + ')' : | ||
1 / this === -Infinity ? '-0' : this.toString(10); | ||
}; | ||
} | ||
// Number$prototype$equals :: Number ~> Number -> Boolean | ||
var Number$prototype$equals = function(other) { | ||
function Number$prototype$equals(other) { | ||
return typeof other === 'object' ? | ||
@@ -511,17 +526,17 @@ typeof this === 'object' && | ||
other === this && 1 / other === 1 / this; | ||
}; | ||
} | ||
// Date$prototype$toString :: Date ~> () -> String | ||
var Date$prototype$toString = function() { | ||
function Date$prototype$toString() { | ||
var x = isNaN(this.valueOf()) ? NaN : this.toISOString(); | ||
return 'new Date(' + toString(x) + ')'; | ||
}; | ||
} | ||
// Date$prototype$equals :: Date ~> Date -> Boolean | ||
var Date$prototype$equals = function(other) { | ||
function Date$prototype$equals(other) { | ||
return equals(this.valueOf(), other.valueOf()); | ||
}; | ||
} | ||
// RegExp$prototype$equals :: RegExp ~> RegExp -> Boolean | ||
var RegExp$prototype$equals = function(other) { | ||
function RegExp$prototype$equals(other) { | ||
return other.source === this.source && | ||
@@ -533,11 +548,11 @@ other.global === this.global && | ||
other.unicode === this.unicode; | ||
}; | ||
} | ||
// String$empty :: () -> String | ||
var String$empty = function() { | ||
function String$empty() { | ||
return ''; | ||
}; | ||
} | ||
// String$prototype$toString :: String ~> () -> String | ||
var String$prototype$toString = function() { | ||
function String$prototype$toString() { | ||
return typeof this === 'object' ? | ||
@@ -554,32 +569,30 @@ 'new String(' + toString(this.valueOf()) + ')' : | ||
.replace(/"/g, '\\"') + '"'; | ||
}; | ||
} | ||
// String$prototype$equals :: String ~> String -> Boolean | ||
var String$prototype$equals = function(other) { | ||
function String$prototype$equals(other) { | ||
return typeof other === typeof this && other.valueOf() === this.valueOf(); | ||
}; | ||
} | ||
// String$prototype$concat :: String ~> String -> String | ||
var String$prototype$concat = function(other) { | ||
function String$prototype$concat(other) { | ||
return this + other; | ||
}; | ||
} | ||
// Array$empty :: () -> Array a | ||
var Array$empty = function() { | ||
function Array$empty() { | ||
return []; | ||
}; | ||
} | ||
// Array$of :: a -> Array a | ||
var Array$of = function(x) { | ||
function Array$of(x) { | ||
return [x]; | ||
}; | ||
} | ||
// Array$chainRec :: ((a -> c, b -> c, a) -> Array c, a) -> Array b | ||
var Array$chainRec = function(f, x) { | ||
var next = function(x) { return {value: x, done: false}; }; | ||
var done = function(x) { return {value: x, done: true}; }; | ||
function Array$chainRec(f, x) { | ||
var $todo = [x]; | ||
var $done = []; | ||
while ($todo.length > 0) { | ||
var xs = f(next, done, $todo.shift()); | ||
var xs = f(iterationNext, iterationDone, $todo.shift()); | ||
var $more = []; | ||
@@ -592,11 +605,11 @@ for (var idx = 0; idx < xs.length; idx += 1) { | ||
return $done; | ||
}; | ||
} | ||
// Array$zero :: () -> Array a | ||
var Array$zero = function() { | ||
function Array$zero() { | ||
return []; | ||
}; | ||
} | ||
// Array$prototype$toString :: Array a ~> () -> String | ||
var Array$prototype$toString = function() { | ||
function Array$prototype$toString() { | ||
var reprs = this.map(toString); | ||
@@ -611,6 +624,6 @@ var keys = Object.keys(this).sort(); | ||
return '[' + reprs.join(', ') + ']'; | ||
}; | ||
} | ||
// Array$prototype$equals :: Array a ~> Array a -> Boolean | ||
var Array$prototype$equals = function(other) { | ||
function Array$prototype$equals(other) { | ||
if (other.length !== this.length) return false; | ||
@@ -621,16 +634,16 @@ for (var idx = 0; idx < this.length; idx += 1) { | ||
return true; | ||
}; | ||
} | ||
// Array$prototype$concat :: Array a ~> Array a -> Array a | ||
var Array$prototype$concat = function(other) { | ||
function Array$prototype$concat(other) { | ||
return this.concat(other); | ||
}; | ||
} | ||
// Array$prototype$map :: Array a ~> (a -> b) -> Array b | ||
var Array$prototype$map = function(f) { | ||
function Array$prototype$map(f) { | ||
return this.map(function(x) { return f(x); }); | ||
}; | ||
} | ||
// Array$prototype$ap :: Array a ~> Array (a -> b) -> Array b | ||
var Array$prototype$ap = function(fs) { | ||
function Array$prototype$ap(fs) { | ||
var result = []; | ||
@@ -643,10 +656,10 @@ for (var idx = 0; idx < fs.length; idx += 1) { | ||
return result; | ||
}; | ||
} | ||
// Array$prototype$chain :: Array a ~> (a -> Array b) -> Array b | ||
var Array$prototype$chain = function(f) { | ||
function Array$prototype$chain(f) { | ||
var result = []; | ||
this.forEach(function(x) { Array.prototype.push.apply(result, f(x)); }); | ||
return result; | ||
}; | ||
} | ||
@@ -657,54 +670,62 @@ // Array$prototype$alt :: Array a ~> Array a -> Array a | ||
// Array$prototype$reduce :: Array a ~> ((b, a) -> b, b) -> b | ||
var Array$prototype$reduce = function(f, initial) { | ||
function Array$prototype$reduce(f, initial) { | ||
return this.reduce(function(acc, x) { return f(acc, x); }, initial); | ||
}; | ||
} | ||
// Array$prototype$traverse :: Applicative f => Array a ~> (a -> f b, c -> f c) -> f (Array b) | ||
var Array$prototype$traverse = function(f, of) { | ||
var applicative = of([]); | ||
for (var idx = this.length - 1; idx >= 0; idx -= 1) { | ||
applicative = ap(map(prepend, f(this[idx])), applicative); | ||
function Array$prototype$traverse(f, of) { | ||
var xs = this; | ||
function go(idx, n) { | ||
switch (n) { | ||
case 0: return of([]); | ||
case 2: return lift2(pair, f(xs[idx]), f(xs[idx + 1])); | ||
default: | ||
var m = Math.floor(n / 4) * 2; | ||
return lift2(concat_, go(idx, m), go(idx + m, n - m)); | ||
} | ||
} | ||
return applicative; | ||
}; | ||
return this.length % 2 === 1 ? | ||
lift2(concat_, map(Array$of, f(this[0])), go(1, this.length - 1)) : | ||
go(0, this.length); | ||
} | ||
// Array$prototype$extend :: Array a ~> (Array a -> b) -> Array b | ||
var Array$prototype$extend = function(f) { | ||
function Array$prototype$extend(f) { | ||
return [f(this)]; | ||
}; | ||
} | ||
// Arguments$prototype$toString :: Arguments ~> String | ||
var Arguments$prototype$toString = function() { | ||
function Arguments$prototype$toString() { | ||
var args = Array.prototype.map.call(this, toString).join(', '); | ||
return '(function () { return arguments; }(' + args + '))'; | ||
}; | ||
} | ||
// Arguments$prototype$equals :: Arguments ~> Arguments -> Boolean | ||
var Arguments$prototype$equals = function(other) { | ||
function Arguments$prototype$equals(other) { | ||
return Array$prototype$equals.call(this, other); | ||
}; | ||
} | ||
// Error$prototype$toString :: Error ~> () -> String | ||
var Error$prototype$toString = function() { | ||
function Error$prototype$toString() { | ||
return 'new ' + this.name + '(' + toString(this.message) + ')'; | ||
}; | ||
} | ||
// Error$prototype$equals :: Error ~> Error -> Boolean | ||
var Error$prototype$equals = function(other) { | ||
function Error$prototype$equals(other) { | ||
return equals(this.name, other.name) && | ||
equals(this.message, other.message); | ||
}; | ||
} | ||
// Object$empty :: () -> StrMap a | ||
var Object$empty = function() { | ||
function Object$empty() { | ||
return {}; | ||
}; | ||
} | ||
// Object$zero :: () -> StrMap a | ||
var Object$zero = function() { | ||
function Object$zero() { | ||
return {}; | ||
}; | ||
} | ||
// Object$prototype$toString :: StrMap a ~> () -> String | ||
var Object$prototype$toString = function() { | ||
function Object$prototype$toString() { | ||
var reprs = []; | ||
@@ -717,6 +738,6 @@ var keys = Object.keys(this).sort(); | ||
return '{' + reprs.join(', ') + '}'; | ||
}; | ||
} | ||
// Object$prototype$equals :: StrMap a ~> StrMap a -> Boolean | ||
var Object$prototype$equals = function(other) { | ||
function Object$prototype$equals(other) { | ||
var self = this; | ||
@@ -726,6 +747,6 @@ var keys = Object.keys(this).sort(); | ||
keys.every(function(k) { return equals(self[k], other[k]); }); | ||
}; | ||
} | ||
// Object$prototype$concat :: StrMap a ~> StrMap a -> StrMap a | ||
var Object$prototype$concat = function(other) { | ||
function Object$prototype$concat(other) { | ||
var result = {}; | ||
@@ -735,10 +756,10 @@ for (var k in this) result[k] = this[k]; | ||
return result; | ||
}; | ||
} | ||
// Object$prototype$map :: StrMap a ~> (a -> b) -> StrMap b | ||
var Object$prototype$map = function(f) { | ||
function Object$prototype$map(f) { | ||
var result = {}; | ||
for (var k in this) result[k] = f(this[k]); | ||
return result; | ||
}; | ||
} | ||
@@ -749,41 +770,52 @@ // Object$prototype$alt :: StrMap a ~> StrMap a -> StrMap a | ||
// Object$prototype$reduce :: StrMap a ~> ((b, a) -> b, b) -> b | ||
var Object$prototype$reduce = function(f, initial) { | ||
function Object$prototype$reduce(f, initial) { | ||
var result = initial; | ||
for (var k in this) result = f(result, this[k]); | ||
return result; | ||
}; | ||
} | ||
// Function$of :: b -> (a -> b) | ||
var Function$of = function(x) { | ||
function Function$of(x) { | ||
return function(_) { return x; }; | ||
}; | ||
} | ||
// Function$chainRec :: ((a -> c, b -> c, a) -> (z -> c), a) -> (z -> b) | ||
function Function$chainRec(f, x) { | ||
return function(a) { | ||
var step = iterationNext(x); | ||
while (!step.done) { | ||
step = f(iterationNext, iterationDone, step.value)(a); | ||
} | ||
return step.value; | ||
}; | ||
} | ||
// Function$prototype$equals :: Function ~> Function -> Boolean | ||
var Function$prototype$equals = function(other) { | ||
function Function$prototype$equals(other) { | ||
return other === this; | ||
}; | ||
} | ||
// Function$prototype$map :: (a -> b) ~> (b -> c) -> (a -> c) | ||
var Function$prototype$map = function(f) { | ||
function Function$prototype$map(f) { | ||
var functor = this; | ||
return function(x) { return f(functor(x)); }; | ||
}; | ||
} | ||
// Function$prototype$promap :: (b -> c) ~> (a -> b, c -> d) -> (a -> d) | ||
var Function$prototype$promap = function(f, g) { | ||
function Function$prototype$promap(f, g) { | ||
var profunctor = this; | ||
return function(x) { return g(profunctor(f(x))); }; | ||
}; | ||
} | ||
// Function$prototype$ap :: (a -> b) ~> (a -> b -> c) -> (a -> c) | ||
var Function$prototype$ap = function(f) { | ||
function Function$prototype$ap(f) { | ||
var apply = this; | ||
return function(x) { return f(x)(apply(x)); }; | ||
}; | ||
} | ||
// Function$prototype$chain :: (a -> b) ~> (b -> a -> c) -> (a -> c) | ||
var Function$prototype$chain = function(f) { | ||
function Function$prototype$chain(f) { | ||
var chain = this; | ||
return function(x) { return f(chain(x))(x); }; | ||
}; | ||
} | ||
@@ -879,2 +911,3 @@ /* eslint-disable key-spacing */ | ||
'fantasy-land/of': Function$of, | ||
'fantasy-land/chainRec': Function$chainRec, | ||
prototype: { | ||
@@ -920,6 +953,6 @@ 'fantasy-land/equals': Function$prototype$equals, | ||
var call = function(method, x) { | ||
function call(method, x) { | ||
$seen.push(x); | ||
try { return method.call(x); } finally { $seen.pop(); } | ||
}; | ||
} | ||
@@ -1012,5 +1045,5 @@ return function toString(x) { | ||
//. ``` | ||
var concat = function concat(x, y) { | ||
function concat(x, y) { | ||
return Semigroup.methods.concat(x)(y); | ||
}; | ||
} | ||
@@ -1037,5 +1070,5 @@ //# empty :: Monoid m => TypeRep m -> m | ||
//. ``` | ||
var empty = function empty(typeRep) { | ||
function empty(typeRep) { | ||
return Monoid.methods.empty(typeRep)(); | ||
}; | ||
} | ||
@@ -1068,5 +1101,5 @@ //# map :: Functor f => (a -> b, f a) -> f b | ||
//. ``` | ||
var map = function map(f, functor) { | ||
function map(f, functor) { | ||
return Functor.methods.map(functor)(f); | ||
}; | ||
} | ||
@@ -1081,5 +1114,5 @@ //# bimap :: Bifunctor f => (a -> b, c -> d, f a c) -> f b d | ||
//. ``` | ||
var bimap = function bimap(f, g, bifunctor) { | ||
function bimap(f, g, bifunctor) { | ||
return Bifunctor.methods.bimap(bifunctor)(f, g); | ||
}; | ||
} | ||
@@ -1097,5 +1130,5 @@ //# promap :: Profunctor p => (a -> b, c -> d, p b c) -> p a d | ||
//. ``` | ||
var promap = function promap(f, g, profunctor) { | ||
function promap(f, g, profunctor) { | ||
return Profunctor.methods.promap(profunctor)(f, g); | ||
}; | ||
} | ||
@@ -1122,5 +1155,5 @@ //# ap :: Apply f => (f (a -> b), f a) -> f b | ||
//. ``` | ||
var ap = function ap(applyF, applyX) { | ||
function ap(applyF, applyX) { | ||
return Apply.methods.ap(applyX)(applyF); | ||
}; | ||
} | ||
@@ -1143,5 +1176,5 @@ //# lift2 :: Apply f => (a -> b -> c, f a, f b) -> f c | ||
//. ``` | ||
var lift2 = function lift2(f, x, y) { | ||
function lift2(f, x, y) { | ||
return ap(map(f, x), y); | ||
}; | ||
} | ||
@@ -1164,5 +1197,5 @@ //# lift3 :: Apply f => (a -> b -> c -> d, f a, f b, f c) -> f d | ||
//. ``` | ||
var lift3 = function lift3(f, x, y, z) { | ||
function lift3(f, x, y, z) { | ||
return ap(ap(map(f, x), y), z); | ||
}; | ||
} | ||
@@ -1185,5 +1218,5 @@ //# apFirst :: Apply f => (f a, f b) -> f a | ||
//. ``` | ||
var apFirst = function apFirst(x, y) { | ||
function apFirst(x, y) { | ||
return lift2(constant, x, y); | ||
}; | ||
} | ||
@@ -1206,5 +1239,5 @@ //# apSecond :: Apply f => (f a, f b) -> f b | ||
//. ``` | ||
var apSecond = function apSecond(x, y) { | ||
function apSecond(x, y) { | ||
return lift2(constant(identity), x, y); | ||
}; | ||
} | ||
@@ -1228,5 +1261,5 @@ //# of :: Applicative f => (TypeRep f, a) -> f a | ||
//. ``` | ||
var of = function of(typeRep, x) { | ||
function of(typeRep, x) { | ||
return Applicative.methods.of(typeRep)(x); | ||
}; | ||
} | ||
@@ -1250,5 +1283,5 @@ //# chain :: Chain m => (a -> m b, m a) -> m b | ||
//. ``` | ||
var chain = function chain(f, chain) { | ||
function chain(f, chain) { | ||
return Chain.methods.chain(chain)(f); | ||
}; | ||
} | ||
@@ -1271,5 +1304,5 @@ //# join :: Chain m => m (m a) -> m a | ||
//. ``` | ||
var join = function join(chain_) { | ||
function join(chain_) { | ||
return chain(identity, chain_); | ||
}; | ||
} | ||
@@ -1292,5 +1325,5 @@ //# chainRec :: ChainRec m => (TypeRep m, (a -> c, b -> c, a) -> m c, a) -> m b | ||
//. ``` | ||
var chainRec = function chainRec(typeRep, f, x) { | ||
function chainRec(typeRep, f, x) { | ||
return ChainRec.methods.chainRec(typeRep)(f, x); | ||
}; | ||
} | ||
@@ -1313,3 +1346,3 @@ //# filter :: (Applicative f, Foldable f, Monoid (f a)) => (a -> Boolean, f a) -> f a | ||
//. ``` | ||
var filter = function filter(pred, m) { | ||
function filter(pred, m) { | ||
var M = m.constructor; | ||
@@ -1319,3 +1352,3 @@ return reduce(function(m, x) { return pred(x) ? concat(m, of(M, x)) : m; }, | ||
m); | ||
}; | ||
} | ||
@@ -1338,7 +1371,7 @@ //# filterM :: (Monad m, Monoid (m a)) => (a -> Boolean, m a) -> m a | ||
//. ``` | ||
var filterM = function filterM(pred, m) { | ||
function filterM(pred, m) { | ||
var M = m.constructor; | ||
var e = empty(M); | ||
return chain(function(x) { return pred(x) ? of(M, x) : e; }, m); | ||
}; | ||
} | ||
@@ -1365,5 +1398,5 @@ //# alt :: Alt f => (f a, f a) -> f a | ||
//. ``` | ||
var alt = function alt(x, y) { | ||
function alt(x, y) { | ||
return Alt.methods.alt(x)(y); | ||
}; | ||
} | ||
@@ -1387,5 +1420,5 @@ //# zero :: Plus f => TypeRep f -> f a | ||
//. ``` | ||
var zero = function zero(typeRep) { | ||
function zero(typeRep) { | ||
return Plus.methods.zero(typeRep)(); | ||
}; | ||
} | ||
@@ -1406,5 +1439,5 @@ //# reduce :: Foldable f => ((b, a) -> b, b, f a) -> b | ||
//. ``` | ||
var reduce = function reduce(f, x, foldable) { | ||
function reduce(f, x, foldable) { | ||
return Foldable.methods.reduce(foldable)(f, x); | ||
}; | ||
} | ||
@@ -1427,5 +1460,5 @@ //# traverse :: (Applicative f, Traversable t) => (a -> f a, b -> f c, t b) -> f (t c) | ||
//. ``` | ||
var traverse = function traverse(of, f, traversable) { | ||
function traverse(of, f, traversable) { | ||
return Traversable.methods.traverse(traversable)(f, of); | ||
}; | ||
} | ||
@@ -1445,5 +1478,5 @@ //# sequence :: (Applicative f, Traversable t) => (a -> f a, t (f b)) -> f (t b) | ||
//. ``` | ||
var sequence = function sequence(of, traversable) { | ||
function sequence(of, traversable) { | ||
return traverse(of, identity, traversable); | ||
}; | ||
} | ||
@@ -1461,5 +1494,5 @@ //# extend :: Extend w => (w a -> b, w a) -> w b | ||
//. ``` | ||
var extend = function extend(f, extend) { | ||
function extend(f, extend) { | ||
return Extend.methods.extend(extend)(f); | ||
}; | ||
} | ||
@@ -1474,5 +1507,5 @@ //# extract :: Comonad w => w a -> a | ||
//. ``` | ||
var extract = function extract(comonad) { | ||
function extract(comonad) { | ||
return Comonad.methods.extract(comonad)(); | ||
}; | ||
} | ||
@@ -1479,0 +1512,0 @@ return { |
{ | ||
"name": "sanctuary-type-classes", | ||
"version": "1.2.0", | ||
"version": "1.3.0", | ||
"description": "Standard library for Fantasy Land", | ||
@@ -21,5 +21,5 @@ "license": "MIT", | ||
"remember-bower": "0.1.x", | ||
"sanctuary-style": "0.3.x", | ||
"sanctuary-style": "0.4.x", | ||
"transcribe": "0.5.x", | ||
"xyz": "1.1.x" | ||
"xyz": "2.0.x" | ||
}, | ||
@@ -26,0 +26,0 @@ "files": [ |
@@ -56,3 +56,3 @@ # sanctuary-type-classes | ||
<h4 name="TypeClass"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.2.0/index.js#L115">TypeClass :: (String, Array TypeClass, a -> Boolean) -> TypeClass</a></code></h4> | ||
<h4 name="TypeClass"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.3.0/index.js#L130">TypeClass :: (String, Array TypeClass, a -> Boolean) -> TypeClass</a></code></h4> | ||
@@ -93,3 +93,3 @@ The arguments are: | ||
<h4 name="Setoid"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.2.0/index.js#L226">Setoid :: TypeClass</a></code></h4> | ||
<h4 name="Setoid"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.3.0/index.js#L241">Setoid :: TypeClass</a></code></h4> | ||
@@ -103,3 +103,3 @@ `TypeClass` value for [Setoid][]. | ||
<h4 name="Semigroup"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.2.0/index.js#L236">Semigroup :: TypeClass</a></code></h4> | ||
<h4 name="Semigroup"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.3.0/index.js#L251">Semigroup :: TypeClass</a></code></h4> | ||
@@ -116,3 +116,3 @@ `TypeClass` value for [Semigroup][]. | ||
<h4 name="Monoid"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.2.0/index.js#L249">Monoid :: TypeClass</a></code></h4> | ||
<h4 name="Monoid"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.3.0/index.js#L264">Monoid :: TypeClass</a></code></h4> | ||
@@ -129,3 +129,3 @@ `TypeClass` value for [Monoid][]. | ||
<h4 name="Functor"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.2.0/index.js#L262">Functor :: TypeClass</a></code></h4> | ||
<h4 name="Functor"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.3.0/index.js#L277">Functor :: TypeClass</a></code></h4> | ||
@@ -142,3 +142,3 @@ `TypeClass` value for [Functor][]. | ||
<h4 name="Bifunctor"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.2.0/index.js#L275">Bifunctor :: TypeClass</a></code></h4> | ||
<h4 name="Bifunctor"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.3.0/index.js#L290">Bifunctor :: TypeClass</a></code></h4> | ||
@@ -155,3 +155,3 @@ `TypeClass` value for [Bifunctor][]. | ||
<h4 name="Profunctor"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.2.0/index.js#L288">Profunctor :: TypeClass</a></code></h4> | ||
<h4 name="Profunctor"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.3.0/index.js#L303">Profunctor :: TypeClass</a></code></h4> | ||
@@ -168,3 +168,3 @@ `TypeClass` value for [Profunctor][]. | ||
<h4 name="Apply"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.2.0/index.js#L301">Apply :: TypeClass</a></code></h4> | ||
<h4 name="Apply"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.3.0/index.js#L316">Apply :: TypeClass</a></code></h4> | ||
@@ -181,3 +181,3 @@ `TypeClass` value for [Apply][]. | ||
<h4 name="Applicative"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.2.0/index.js#L314">Applicative :: TypeClass</a></code></h4> | ||
<h4 name="Applicative"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.3.0/index.js#L329">Applicative :: TypeClass</a></code></h4> | ||
@@ -194,3 +194,3 @@ `TypeClass` value for [Applicative][]. | ||
<h4 name="Chain"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.2.0/index.js#L327">Chain :: TypeClass</a></code></h4> | ||
<h4 name="Chain"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.3.0/index.js#L342">Chain :: TypeClass</a></code></h4> | ||
@@ -207,3 +207,3 @@ `TypeClass` value for [Chain][]. | ||
<h4 name="ChainRec"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.2.0/index.js#L340">ChainRec :: TypeClass</a></code></h4> | ||
<h4 name="ChainRec"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.3.0/index.js#L355">ChainRec :: TypeClass</a></code></h4> | ||
@@ -220,3 +220,3 @@ `TypeClass` value for [ChainRec][]. | ||
<h4 name="Monad"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.2.0/index.js#L353">Monad :: TypeClass</a></code></h4> | ||
<h4 name="Monad"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.3.0/index.js#L368">Monad :: TypeClass</a></code></h4> | ||
@@ -233,3 +233,3 @@ `TypeClass` value for [Monad][]. | ||
<h4 name="Alt"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.2.0/index.js#L366">Alt :: TypeClass</a></code></h4> | ||
<h4 name="Alt"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.3.0/index.js#L381">Alt :: TypeClass</a></code></h4> | ||
@@ -246,3 +246,3 @@ `TypeClass` value for [Alt][]. | ||
<h4 name="Plus"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.2.0/index.js#L379">Plus :: TypeClass</a></code></h4> | ||
<h4 name="Plus"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.3.0/index.js#L394">Plus :: TypeClass</a></code></h4> | ||
@@ -259,3 +259,3 @@ `TypeClass` value for [Plus][]. | ||
<h4 name="Alternative"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.2.0/index.js#L392">Alternative :: TypeClass</a></code></h4> | ||
<h4 name="Alternative"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.3.0/index.js#L407">Alternative :: TypeClass</a></code></h4> | ||
@@ -272,3 +272,3 @@ `TypeClass` value for [Alternative][]. | ||
<h4 name="Foldable"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.2.0/index.js#L405">Foldable :: TypeClass</a></code></h4> | ||
<h4 name="Foldable"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.3.0/index.js#L420">Foldable :: TypeClass</a></code></h4> | ||
@@ -285,3 +285,3 @@ `TypeClass` value for [Foldable][]. | ||
<h4 name="Traversable"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.2.0/index.js#L418">Traversable :: TypeClass</a></code></h4> | ||
<h4 name="Traversable"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.3.0/index.js#L433">Traversable :: TypeClass</a></code></h4> | ||
@@ -298,3 +298,3 @@ `TypeClass` value for [Traversable][]. | ||
<h4 name="Extend"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.2.0/index.js#L431">Extend :: TypeClass</a></code></h4> | ||
<h4 name="Extend"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.3.0/index.js#L446">Extend :: TypeClass</a></code></h4> | ||
@@ -311,3 +311,3 @@ `TypeClass` value for [Extend][]. | ||
<h4 name="Comonad"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.2.0/index.js#L444">Comonad :: TypeClass</a></code></h4> | ||
<h4 name="Comonad"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.3.0/index.js#L459">Comonad :: TypeClass</a></code></h4> | ||
@@ -324,3 +324,3 @@ `TypeClass` value for [Comonad][]. | ||
<h4 name="toString"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.2.0/index.js#L870">toString :: a -> String</a></code></h4> | ||
<h4 name="toString"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.3.0/index.js#L903">toString :: a -> String</a></code></h4> | ||
@@ -351,3 +351,3 @@ Returns a useful string representation of its argument. | ||
<h4 name="equals"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.2.0/index.js#L918">equals :: (a, b) -> Boolean</a></code></h4> | ||
<h4 name="equals"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.3.0/index.js#L951">equals :: (a, b) -> Boolean</a></code></h4> | ||
@@ -381,3 +381,3 @@ Returns `true` if its arguments are of the same type and equal according | ||
<h4 name="concat"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.2.0/index.js#L970">concat :: Semigroup a => (a, a) -> a</a></code></h4> | ||
<h4 name="concat"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.3.0/index.js#L1003">concat :: Semigroup a => (a, a) -> a</a></code></h4> | ||
@@ -403,3 +403,3 @@ Function wrapper for [`fantasy-land/concat`][]. | ||
<h4 name="empty"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.2.0/index.js#L994">empty :: Monoid m => TypeRep m -> m</a></code></h4> | ||
<h4 name="empty"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.3.0/index.js#L1027">empty :: Monoid m => TypeRep m -> m</a></code></h4> | ||
@@ -425,3 +425,3 @@ Function wrapper for [`fantasy-land/empty`][]. | ||
<h4 name="map"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.2.0/index.js#L1018">map :: Functor f => (a -> b, f a) -> f b</a></code></h4> | ||
<h4 name="map"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.3.0/index.js#L1051">map :: Functor f => (a -> b, f a) -> f b</a></code></h4> | ||
@@ -453,3 +453,3 @@ Function wrapper for [`fantasy-land/map`][]. | ||
<h4 name="bimap"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.2.0/index.js#L1048">bimap :: Bifunctor f => (a -> b, c -> d, f a c) -> f b d</a></code></h4> | ||
<h4 name="bimap"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.3.0/index.js#L1081">bimap :: Bifunctor f => (a -> b, c -> d, f a c) -> f b d</a></code></h4> | ||
@@ -463,3 +463,3 @@ Function wrapper for [`fantasy-land/bimap`][]. | ||
<h4 name="promap"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.2.0/index.js#L1060">promap :: Profunctor p => (a -> b, c -> d, p b c) -> p a d</a></code></h4> | ||
<h4 name="promap"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.3.0/index.js#L1093">promap :: Profunctor p => (a -> b, c -> d, p b c) -> p a d</a></code></h4> | ||
@@ -476,3 +476,3 @@ Function wrapper for [`fantasy-land/promap`][]. | ||
<h4 name="ap"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.2.0/index.js#L1075">ap :: Apply f => (f (a -> b), f a) -> f b</a></code></h4> | ||
<h4 name="ap"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.3.0/index.js#L1108">ap :: Apply f => (f (a -> b), f a) -> f b</a></code></h4> | ||
@@ -498,3 +498,3 @@ Function wrapper for [`fantasy-land/ap`][]. | ||
<h4 name="lift2"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.2.0/index.js#L1099">lift2 :: Apply f => (a -> b -> c, f a, f b) -> f c</a></code></h4> | ||
<h4 name="lift2"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.3.0/index.js#L1132">lift2 :: Apply f => (a -> b -> c, f a, f b) -> f c</a></code></h4> | ||
@@ -516,3 +516,3 @@ Lifts `a -> b -> c` to `Apply f => f a -> f b -> f c` and returns the | ||
<h4 name="lift3"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.2.0/index.js#L1119">lift3 :: Apply f => (a -> b -> c -> d, f a, f b, f c) -> f d</a></code></h4> | ||
<h4 name="lift3"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.3.0/index.js#L1152">lift3 :: Apply f => (a -> b -> c -> d, f a, f b, f c) -> f d</a></code></h4> | ||
@@ -534,3 +534,3 @@ Lifts `a -> b -> c -> d` to `Apply f => f a -> f b -> f c -> f d` and | ||
<h4 name="apFirst"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.2.0/index.js#L1139">apFirst :: Apply f => (f a, f b) -> f a</a></code></h4> | ||
<h4 name="apFirst"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.3.0/index.js#L1172">apFirst :: Apply f => (f a, f b) -> f a</a></code></h4> | ||
@@ -552,3 +552,3 @@ Combines two effectful actions, keeping only the result of the first. | ||
<h4 name="apSecond"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.2.0/index.js#L1159">apSecond :: Apply f => (f a, f b) -> f b</a></code></h4> | ||
<h4 name="apSecond"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.3.0/index.js#L1192">apSecond :: Apply f => (f a, f b) -> f b</a></code></h4> | ||
@@ -570,3 +570,3 @@ Combines two effectful actions, keeping only the result of the second. | ||
<h4 name="of"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.2.0/index.js#L1179">of :: Applicative f => (TypeRep f, a) -> f a</a></code></h4> | ||
<h4 name="of"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.3.0/index.js#L1212">of :: Applicative f => (TypeRep f, a) -> f a</a></code></h4> | ||
@@ -589,3 +589,3 @@ Function wrapper for [`fantasy-land/of`][]. | ||
<h4 name="chain"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.2.0/index.js#L1200">chain :: Chain m => (a -> m b, m a) -> m b</a></code></h4> | ||
<h4 name="chain"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.3.0/index.js#L1233">chain :: Chain m => (a -> m b, m a) -> m b</a></code></h4> | ||
@@ -608,3 +608,3 @@ Function wrapper for [`fantasy-land/chain`][]. | ||
<h4 name="join"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.2.0/index.js#L1221">join :: Chain m => m (m a) -> m a</a></code></h4> | ||
<h4 name="join"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.3.0/index.js#L1254">join :: Chain m => m (m a) -> m a</a></code></h4> | ||
@@ -626,3 +626,3 @@ Removes one level of nesting from a nested monadic structure. | ||
<h4 name="chainRec"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.2.0/index.js#L1241">chainRec :: ChainRec m => (TypeRep m, (a -> c, b -> c, a) -> m c, a) -> m b</a></code></h4> | ||
<h4 name="chainRec"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.3.0/index.js#L1274">chainRec :: ChainRec m => (TypeRep m, (a -> c, b -> c, a) -> m c, a) -> m b</a></code></h4> | ||
@@ -644,3 +644,3 @@ Function wrapper for [`fantasy-land/chainRec`][]. | ||
<h4 name="filter"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.2.0/index.js#L1261">filter :: (Applicative f, Foldable f, Monoid (f a)) => (a -> Boolean, f a) -> f a</a></code></h4> | ||
<h4 name="filter"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.3.0/index.js#L1294">filter :: (Applicative f, Foldable f, Monoid (f a)) => (a -> Boolean, f a) -> f a</a></code></h4> | ||
@@ -662,3 +662,3 @@ Filters its second argument in accordance with the given predicate. | ||
<h4 name="filterM"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.2.0/index.js#L1284">filterM :: (Monad m, Monoid (m a)) => (a -> Boolean, m a) -> m a</a></code></h4> | ||
<h4 name="filterM"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.3.0/index.js#L1317">filterM :: (Monad m, Monoid (m a)) => (a -> Boolean, m a) -> m a</a></code></h4> | ||
@@ -680,3 +680,3 @@ Filters its second argument in accordance with the given predicate. | ||
<h4 name="alt"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.2.0/index.js#L1306">alt :: Alt f => (f a, f a) -> f a</a></code></h4> | ||
<h4 name="alt"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.3.0/index.js#L1339">alt :: Alt f => (f a, f a) -> f a</a></code></h4> | ||
@@ -702,3 +702,3 @@ Function wrapper for [`fantasy-land/alt`][]. | ||
<h4 name="zero"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.2.0/index.js#L1330">zero :: Plus f => TypeRep f -> f a</a></code></h4> | ||
<h4 name="zero"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.3.0/index.js#L1363">zero :: Plus f => TypeRep f -> f a</a></code></h4> | ||
@@ -721,3 +721,3 @@ Function wrapper for [`fantasy-land/zero`][]. | ||
<h4 name="reduce"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.2.0/index.js#L1351">reduce :: Foldable f => ((b, a) -> b, b, f a) -> b</a></code></h4> | ||
<h4 name="reduce"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.3.0/index.js#L1384">reduce :: Foldable f => ((b, a) -> b, b, f a) -> b</a></code></h4> | ||
@@ -737,3 +737,3 @@ Function wrapper for [`fantasy-land/reduce`][]. | ||
<h4 name="traverse"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.2.0/index.js#L1369">traverse :: (Applicative f, Traversable t) => (a -> f a, b -> f c, t b) -> f (t c)</a></code></h4> | ||
<h4 name="traverse"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.3.0/index.js#L1402">traverse :: (Applicative f, Traversable t) => (a -> f a, b -> f c, t b) -> f (t c)</a></code></h4> | ||
@@ -755,3 +755,3 @@ Function wrapper for [`fantasy-land/traverse`][]. | ||
<h4 name="sequence"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.2.0/index.js#L1389">sequence :: (Applicative f, Traversable t) => (a -> f a, t (f b)) -> f (t b)</a></code></h4> | ||
<h4 name="sequence"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.3.0/index.js#L1422">sequence :: (Applicative f, Traversable t) => (a -> f a, t (f b)) -> f (t b)</a></code></h4> | ||
@@ -770,3 +770,3 @@ Inverts the given `t (f b)` to produce an `f (t b)`. | ||
<h4 name="extend"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.2.0/index.js#L1406">extend :: Extend w => (w a -> b, w a) -> w b</a></code></h4> | ||
<h4 name="extend"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.3.0/index.js#L1439">extend :: Extend w => (w a -> b, w a) -> w b</a></code></h4> | ||
@@ -783,3 +783,3 @@ Function wrapper for [`fantasy-land/extend`][]. | ||
<h4 name="extract"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.2.0/index.js#L1421">extract :: Comonad w => w a -> a</a></code></h4> | ||
<h4 name="extract"><code><a href="https://github.com/sanctuary-js/sanctuary-type-classes/blob/v1.3.0/index.js#L1454">extract :: Comonad w => w a -> a</a></code></h4> | ||
@@ -786,0 +786,0 @@ Function wrapper for [`fantasy-land/extract`][]. |
73691
1421