Я чувствую себя полным noob за то, что мне пришлось спросить об этом, но это меня озадачило.
Я установил строку формата следующим образом:
let fs = "This is my format test %s"
Затем я пытаюсь использовать его так:
let s = sprintf fs "testing"
Когда я это сделаю, я получаю эту ошибку:
//stdin(26,17): error FS0001: The type 'string' is not compatible with the type 'Printf.StringFormat<('a -> 'b)>'
Итак, я тогда попробовал это:
let s = sprintf (Printf.StringFormat fs) "test"
на который ответил REPL:
//stdin(28,18): error FS1124: Multiple types exist called 'StringFormat', taking different numbers of generic parameters. Provide a type instantiation to disambiguate the type resolution, e.g. 'StringFormat<_>'.
Итак, я тогда попробовал это:
let s = sprintf (Printf.StringFormat<string> fs) "test"
И я получаю это:
//stdin(29,18): error FS0001: The type ''a -> 'b' does not match the type 'string'
Я пропустил что-то больно очевидное? Это использует F # 3.0 на Mac из интерактивного окна Xamarin Studio F #.