Я прочитал большую часть Expert F# и работаю над созданием реального приложения. Во время отладки я привык передавать команды fsi, подобные этой, чтобы сделать вещи разборчивыми в окне repl:
fsi.AddPrinter(fun (x : myType) -> myType.ToString())
Я хотел бы расширить это для работы с форматером printf, чтобы я мог ввести, например.
printf "%A" instanceOfMyType
и управлять выводом для пользовательского типа. В книге подразумевается, что это можно сделать (стр. 93, «Универсальное структурное форматирование может быть расширено для работы с любыми определяемыми пользователем типами данных, тема рассматривается на веб-сайте F#»), но мне не удалось найти никаких ссылок на то, как на самом деле добиться этого. Кто-нибудь знает, как? Это вообще возможно?
Изменить:
Я должен был включить образец кода, это тип записи, с которым я имею дело, например.
type myType =
{a: int}
override m.ToString() = "hello"
let t = {a=5}
printfn "%A" t
printfn "%A" (box t)
оба оператора печати дают:
{a = 5;}