namespace Degenz [] module ResultHelpers = let (>>=) x f = Result.bind f x let () x f = Result.map f x [] [] module List = let cons xs x = x :: xs let consTo x xs = x :: xs let rec foldk f (acc:'TState) xs = match xs with | [] -> acc | x::xs -> f acc x (fun lacc -> foldk f lacc xs) let foldi (f : int -> 'Acc -> 'elem -> 'Acc) (acc : 'Acc) xs = let f' ( i , st ) acc = ( i + 1 , f i st acc ) List.fold f' ( 0 , acc ) xs |> snd