let rec reduce fn acc lst =
    match lst with
    | [] -> acc
    | x::xs ->
        let accu = fn acc x
        reduce fn accu xs

[<EntryPoint>]
let main argv =
    let nums = [1..5]
    printfn "%A" nums
    printfn "%A" (reduce (+) 0 nums)
    printfn "%A" (reduce (*) 1 nums)
    0 // return an integer exit code

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: