39 lines
784 B
Plaintext
39 lines
784 B
Plaintext
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 |