T4 - это «официальный» механизм генерации кода для C # / VB.NET. Но F # не поддерживает (это с апреля, но я не смог найти более новые упоминания). Так что же является хорошим способом для генерации кода F #?
EDIT:
Я хочу реализовать 2-3 пальца в F #. Я уже реализовал их в C #, так что это должно быть хорошее сравнение. «Цифры» и узлы дерева могут быть представлены как массивы, поэтому
type 't FingerTree = Empty | Single of 't | Deep of 't array * (('t FingerTree) array) lazy * 't array
Однако максимальный размер этих массивов очень мал, поэтому было бы неплохо иметь
type 't Digit = Digit1 of 't | Digit2 of 't*'t | Digit3 of 't*'t*'t | Digit4 of 't*'t*'t*'t
type 't Node = Node2 of 't FingerTree * 't FingerTree | Node3 of 't FingerTree * 't FingerTree * 't FingerTree
type 't FingerTree = Empty | Single of 't | Deep of 't Digit * ('t Node) lazy * 't Digit
чтобы избежать проверки границ и т. Д.
Но тогда написание всех функций на Digit и Node вручную становится более сложным, и их лучше создавать. И T4-подобный подход выглядит идеально для этого ...