Вложенное объединение вводит в F#

Я делаю много математики в моей работе, тестирующей смешанные полупроводники сигнала на Оборудовании автоматического тестирования от Teradyne (c, vba), Advantest (C++ .NET), и т.п..

Два защитных маневра, которые я использую:

  • предотвращают деление на нуль, если (x! =0) {z=y/x;} еще {/* дают z распознаваемое поддельное число, продолжаются, программа */}

  • не передают нулевые или отрицательные числа для входа вычислений. Это характерно для вычислений усиления, CMRR и PSRR. если (x> 0) {psrr = 20 * журнал (x);} еще {psrr =-999; число/*fake */}

Некоторые могут привести доводы против использования поддельных чисел, но эти программы используются в полупроводниковом производстве очень большого объема. Если ошибка происходит при тестировании плохой части, лучше продолжить тестировать и сохранять целостность формата данных. Поддельные числа легко разделяются как выбросы во время последующей обработки данных тестирования.

- микрофон

5
задан Max 4 September 2009 в 19:20
поделиться

2 ответа

Нет, вам придется разделять типы (как в сообщении kvb). Я слышал о планах добавить полиморфную дисперсию (как в ocaml) в F # , что позволит вам делать нечто подобное.

In ocaml,

type mainType =
    | A of [ `AA of int | `AB of float ]
    | B of int   
1
ответ дан 15 December 2019 в 01:07
поделиться

Нет, я так не думаю. Кажется, не имеет большого преимущества перед созданием двух отдельных типов объединения, например:

type NestedType =
| AA of int
| AB of float

type MainType =
| A of NestedType
| B of int

let mainValue = A (AA 1)
3
ответ дан 15 December 2019 в 01:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: