Это похоже на ошибку для меня. Кто-то из команды F #, вероятно, даст четкий ответ на этот вопрос :-). Между тем, вот простой обходной путь, который вы можете использовать: проблема, похоже, заключается в компиляции оператора =
. Вы можете определить свой собственный оператор (или функцию) и вызвать этот оператор из приведенного кода:
let (><) a b = a = b
let quote =
<@ let value1 = { x = 1; y = 1; }
let value2 = { x = 1; y = 1; }
let result2 = value1 >< value2
result2 @>
print (quote.EvalUntyped())
Вместо того, чтобы генерировать неправильный вызов стандартного оператора =
, это сгенерирует код, который вызывает ваш пользовательский оператор (который затем выполняет сравнение как стандартный, правильно скомпилированный код F #), так что это дает ожидаемый результат.