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