Обычные размеченные объединения F# являются ссылочными типами. Как создать простой (нерекурсивный и только с полями типа значения) тип объединения в F#, который является типом значения?
Основываясь на некоторых поисках в Интернете, моя текущая (нерабочая) попытка выглядит следующим образом:
[<StructLayout(LayoutKind.Explicit)>]
type Float =
[<DefaultValue>] [<FieldOffset 0>] val mutable Val1 : float
[<DefaultValue>] [<FieldOffset 0>] val mutable Int1 : int
new (a:float) = {Val1 = a}
В следующем сообщении в блоге показаны возможности C#
Я знаю, что приведенное выше НЕ является идиоматическим использованием F #, но я пытаюсь оптимизировать производительность части моего приложения, и профилирование ясно показало, что стоимость распределения кучи (JIT_new) является причиной моего узкого места в производительности. , Простой тип объединения — идеальная структура данных для моих нужд, но не выделенная куча.