declare Length Take Drop Append Member Position fun {Length List} case List of _|Tail then (1 + {Length Tail}) else 0 end end fun {Take (Head|Tail) Count} if Count > 0 then (Head|{Take Tail (Count - 1)}) else nil end end fun {Drop (Head|Tail) Count} if Count > 0 then {Drop Tail (Count - 1)} else Head|Tail end end fun {Append List Other} case List of X|nil then X|Other [] Head|Tail then Head|{Append Tail Other} else nil end end fun {Member (Head|Tail) Element} if Tail == nil then false else if Head == Element then true else {Member Tail Element} end end end fun {Position (Head|Tail) Element} if Head == Element then 0 % 0-indexed else 1 + {Position Tail Element} end end