{
var make_str2list =
fn_next=>
list =>
str => (str.length > 0)
? fn_next(lib.PAIR(str.substr(-1))(list))(str.slice(0,-1))
: list;
var str2list = str => lib.Y(make_str2list)(lib.EMPTY)(str);
var make_array2list =
fn_next=>
list =>
array => (array.length === 0)
? list
: fn_next(lib.PAIR(array[array.length-1])(list))
(array.slice(0,-1));
var array2list = lib.Y(make_array2list)(lib.EMPTY);
var make_list2array =
fn_next=>
arr =>
list => lib.is_last(list)
? push(arr)(lib.HEAD(list))
: fn_next(push(arr)(lib.HEAD(list)))(lib.TAIL(list));
var list2array = list => lib.Y(make_list2array)([])(list);
var list_of_nums = array2list([1,2,3,4]);
var list_of_chars = str2list("Hello");
return {
list_of_nums : list_of_nums,
list_of_nums_1st : lib.HEAD(list_of_nums),
list_of_nums_2nd : lib.HEAD(lib.TAIL(list_of_nums)),
list_of_nums_3rd : lib.HEAD(lib.TAIL(lib.TAIL(list_of_nums))),
list_of_chars : list_of_chars,
list_of_chars_2_array : list2array(list_of_chars)
}
}