UNPKG

derw

Version:

An Elm-inspired language that transpiles to TypeScript

83 lines (82 loc) 1.96 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.emptyList = void 0; exports.map = map; exports.indexedMap = indexedMap; exports.filter = filter; exports.foldl = foldl; exports.statefulFold = statefulFold; exports.foldr = foldr; exports.filterMap = filterMap; exports.append = append; exports.reverse = reverse; exports.length = length; exports.take = take; exports.drop = drop; exports.sort = sort; exports.sortBy = sortBy; const List_kernel_1 = require("./List_kernel"); const emptyList = []; exports.emptyList = emptyList; function map(fn, xs) { return xs.map(fn); } function indexedMap(fn, xs) { return xs.map(fn); } function filter(fn, xs) { return xs.filter(fn); } function foldl(fn, init, xs) { return xs.reduce(function (a, b) { return fn(b, a); }, init); } function statefulFold(fn, init, xs) { return (0, List_kernel_1.kernelStatefulFold)(fn, init, xs); } function foldr(fn, init, xs) { return xs.reduceRight(function (a, b) { return fn(b, a); }, init); } 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); } function append(xs, ys) { return (function (x) { return x.concat(xs, ys); })((0, List_kernel_1.kernelEmptyList)()); } function reverse(xs) { return xs.slice().reverse(); } function length(xs) { return (0, List_kernel_1.kernelLength)(xs); } function take(n, xs) { return xs.slice(0, n); } function drop(n, xs) { return xs.slice(n, xs.length); } function sort(xs) { return (0, List_kernel_1.kernelSort)(xs); } function sortBy(fn, xs) { return (0, List_kernel_1.kernelSortBy)(fn, xs); }