Skip to content

Comment on Mono 4.0.0 Release Notesparent

Comments

Wait...mono doesn't do tail call optimization with f#???

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.

AboutSource Built by g1lg1l

Hackerly is an independent reader for Hacker News, built on the public HN API. Not affiliated with Y Combinator.