23 lines
592 B
Forth
23 lines
592 B
Forth
namespace Degenz
|
|
|
|
[<Microsoft.FSharp.Core.AutoOpen>]
|
|
module ResultHelpers =
|
|
let (>>=) x f = Result.bind f x
|
|
let (<!>) x f = Result.map f x
|
|
|
|
[<Microsoft.FSharp.Core.AutoOpen>]
|
|
[<RequireQualifiedAccess>]
|
|
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
|
|
|