Files
TDT4165/assignment1/List.oz
2025-09-18 05:54:58 +02:00

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