genericsf#value-restriction

Keeping partially applied function generic


Is it possible to partially apply a function such as bprintf and prevent it from being restricted based on its initial use?

I'd like to do the following:

let builder = new System.Text.StringBuilder()
let append = Printf.bprintf builder
append "%i" 10
append "%s" string_value

Solution

  • you can add explicit format argument

    let builder = new System.Text.StringBuilder()
    let append format = Printf.bprintf builder format
    append "%i" 10
    append "%s" "1"