UNPKG

derw

Version:

An Elm-inspired language that transpiles to TypeScript

83 lines (82 loc) 2.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.sortBy = exports.sort = exports.drop = exports.take = exports.length = exports.reverse = exports.append = exports.filterMap = exports.foldr = exports.statefulFold = exports.foldl = exports.filter = exports.indexedMap = exports.map = exports.emptyList = void 0; const List_kernel_1 = require("./List_kernel"); const emptyList = []; exports.emptyList = emptyList; function map(fn, xs) { return xs.map(fn); } exports.map = map; function indexedMap(fn, xs) { return xs.map(fn); } exports.indexedMap = indexedMap; function filter(fn, xs) { return xs.filter(fn); } exports.filter = filter; function foldl(fn, init, xs) { return xs.reduce(function (a, b) { return fn(b, a); }, init); } exports.foldl = foldl; function statefulFold(fn, init, xs) { return (0, List_kernel_1.kernelStatefulFold)(fn, init, xs); } exports.statefulFold = statefulFold; function foldr(fn, init, xs) { return xs.reduceRight(function (a, b) { return fn(b, a); }, init); } exports.foldr = foldr; function filterMapHelp(fn, a, xs) { const maybe = fn(a); switch (maybe.kind) { case "Just": { const { value } = maybe; return append(xs, [value]); } case "Nothing": { return xs; } } } function filterMap(fn, xs) { return foldl(function (y, ys) { return filterMapHelp(fn, y, ys); }, [], xs); } exports.filterMap = filterMap; function append(xs, ys) { return (function (x) { return x.concat(xs, ys); })((0, List_kernel_1.kernelEmptyList)()); } exports.append = append; function reverse(xs) { return xs.slice().reverse(); } exports.reverse = reverse; function length(xs) { return (0, List_kernel_1.kernelLength)(xs); } exports.length = length; function take(n, xs) { return xs.slice(0, n); } exports.take = take; function drop(n, xs) { return xs.slice(n, xs.length); } exports.drop = drop; function sort(xs) { return (0, List_kernel_1.kernelSort)(xs); } exports.sort = sort; function sortBy(fn, xs) { return (0, List_kernel_1.kernelSortBy)(fn, xs); } exports.sortBy = sortBy;