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, который печатает каждый элемент в списке (или только первые, в зависимости от их длины текста и длины списка) и красиво форматирует его ([ _; _; _; ... ], Когда печатает элементы, он использует ваш принтер.

Другие вопросы по тегам