Im puzzled
let test = "aString"
let callMe =
printfn test
Why isn't this working? Throws below error at compile time:
The type 'string' is not compatible with the type 'Printf.TextWriterFormat<'a>'
This works fine:
printfn "aString"
That's because the format
parameter is not actually a string
. It's TextWriterFormat<'T>
and the F# compiler converts the string format into that type. But it doesn't work on string
variables, because the compiler can't convert the string
to TextWriterFormat<'T>
at runtime.
If you want to print the content of the variable, you shouldn't even try to use printfn
this way, because the variable could contain format specifications.
You can either use the %s
format:
printfn "%s" test
Or use the .Net Console.WriteLine()
:
Console.WriteLine test
Don't forget to add open System
at the top of the file if you want to use the Console
class.