T4は、C#/VB.NETの「公式」コード生成エンジンです。しかし、F#はそれをサポートしていません(これは4月からですが、新しい言及は見つかりませんでした)。では、F#コードを生成するための良い方法は何ですか?
編集:
F#で2〜3本のフィンガーツリーを実装したいと思います。私はすでにそれらを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のようなアプローチはそれに最適に見えます...