js-slang
Version:
Javascript-based implementations of Source, written in Typescript
52 lines (51 loc) • 1.28 kB
TypeScript
import { List, Pair } from '../stdlib/list';
/**
* Low-level check for a list.
* @param value any value
* @returns whether the value is a list
*/
export declare function isList(value: any): value is List;
/**
* Turn a list into an array.
* @param value a list
* @returns
*/
export declare function flattenList(value: List): any[];
/**
* Convert an array into a list.
* @param arr
* @returns
*/
export declare function arrayToList(arr: any[]): List;
/**
* Convert an array into an improper list.
* @param arr
* @param last
* @returns
*/
export declare function arrayToImproperList(arr: any[], last: any): any;
/**
* Check if a value is an improper list.
* We force an improper list to be an array of two elements.
* @param value
* @returns
*/
export declare function isImproperList(value: any): value is Pair<any, any>;
/**
* Check if a value is a pair.
* @param value
* @returns
*/
export declare function isPair(value: any): value is Pair<any, any>;
/**
* Convert an improper list into an array and a terminator.
* @param value
* @returns
*/
export declare function flattenImproperList(value: any): [any[], any];
/**
* Get the length of an improper list.
* @param value
* @returns
*/
export declare function improperListLength(value: any): number;