Hacker News new | ask | show | jobs
by saosebastiao 4090 days ago
Wait...mono doesn't do tail call optimization with f#???
1 comments

It is (or was) complicated, you could stack overflow on two mutually recursive functions or tail calling inside continuations.
I'm getting constant memory on this (mono v3.12.1)

    let rec beep x =
        if x = 0 then x else boop (x - 1)
    and boop y =
        if y = 0 then y else beep (y - 1)
    
    let main argv =
        printfn "%A" (beep 999999999)
        0
Those are mutually recursive functions, but they're not using continuations.