[Haskell] [Oz] Oz function that insert element to all possible positions in a list
function that insert X to all possible positions in the list L.
Mozart Oz Programming Language
Haskell Programming Language
Mozart Oz Programming Language
declare
fun {AllInsert X L}
IntFrom in
fun lazy {IntFrom K} K|{IntFrom K+1} end
{Map {List.take {IntFrom 0} {List.length L}+1}
fun {$ Pos}
{FoldR L (fun {$ Z Y}
case Y of nil then nil
[] S#I then
if I \= Pos-1 then
{Append [Z] S}#(1+I)
else
{Append [X Z] S}#(1+I)
end
end
end) ({List.drop [X] Pos}#0)
}.1
end}
end
{Browse {AllInsert 10 [a b c d]}} %shows [a b c d 10] [a b c 10 d]
%[a b 10 c d] [a 10 b c d]
%[10 a b c d]]
Haskell Programming Language
-- function that inserts an element at all possible positions in a list allInsert :: a -> [a] -> [[a]] allInsert x [] = [[x]] allInsert x xs = map f [0..(length xs)] where f s = insert x s xs -- allInsert "x" ["a","b","c","d","e"]
Comments
Post a Comment