F# fsi.AddPrinter: Есть ли у AddPrinter возможность разбирать список на части?
В нашем проекте мы используем fsi.AddPrinter
для печати типа formula<fol>.
Чтобы сделать это проще, мы включаем fsi.AddPrinter sprint_fol_formula
в наших файлах fsx, чтобы преобразовать результаты AST в удобочитаемые результаты.
val inline sprint_fol_formula : formula<fol> -> string
В процессе создания тестовых случаев мы также выводим как результат AST, так и результат, читаемый человеком.
Результат AST является результатом обработки формул. Чтобы преобразовать AST в удобочитаемый формат в модульном тесте, мы просто используем sprint_fol_formula astResult
,
Теперь, если результат formula<fol> list
вместо formula<fol>
, правильный результат будет выводиться при использовании FSI, но sprint_fol_formula
не принимает formula<fol> list
,
Единственный разумный ответ, который я могу сделать для разницы, заключается в том, что fsi.AddPrinter
имеет встроенную возможность разбирать список на части, а затем распечатывать каждый тип отдельно.
Это правда или я что-то упустил?
Если это правда, можете ли вы добавить ссылку, где это задокументировано.
1 ответ
То, что происходит, довольно просто. Есть принтер для 'a list
, который печатает каждый элемент в списке (или только первые, в зависимости от их длины текста и длины списка) и красиво форматирует его ([ _; _; _; ... ]
, Когда печатает элементы, он использует ваш принтер.