Почему это не работает? При компиляции выдается ошибка ниже:
Тип 'string' несовместим с типом 'Printf.TextWriterFormat <' a > '
Это отлично работает:
printfn "aString"
Ответ 1
Это потому, что параметр format на самом деле не является string. Он TextWriterFormat<'T>, а компилятор F # преобразует формат строки в этот тип. Но он не работает с переменными string, потому что компилятор не может преобразовать string в TextWriterFormat<'T> во время выполнения.
Если вы хотите распечатать содержимое переменной, вы не должны даже пытаться использовать printfn таким образом, потому что переменная может содержать спецификации формата.
Вы можете использовать формат %s:
printfn "%s" test
Или используйте .Net Console.WriteLine():
Console.WriteLine test
Не забудьте добавить open System в начало файла, если вы хотите использовать класс Console.
Ответ 2
В соответствии с тем, что сказал svick, вы также можете попробовать следующее:
let test = "aString"
let callMe = printfn (Printf.TextWriterFormat<_> test)
callMe