Current section

Files

Jump to
gossamer src utils list.ffi.mjs
Raw

src/utils/list.ffi.mjs

// src/utils/list.ffi.ts
import {
List$Empty,
List$isNonEmpty,
List$NonEmpty,
List$NonEmpty$first,
List$NonEmpty$rest
} from "../../prelude.mjs";
function fromArray(array) {
let list = List$Empty();
for (let i = array.length - 1; i >= 0; --i) {
list = List$NonEmpty(array[i], list);
}
return list;
}
function fromArrayMapped(array, map) {
let list = List$Empty();
for (let i = array.length - 1; i >= 0; --i) {
list = List$NonEmpty(map(array[i], i), list);
}
return list;
}
function toArray(list) {
const array = [];
let current = list;
while (List$isNonEmpty(current)) {
array.push(List$NonEmpty$first(current));
current = List$NonEmpty$rest(current);
}
return array;
}
export {
fromArray,
fromArrayMapped,
toArray
};