Кто-нибудь знает, почему sub
выдает исключение, когда add
нет? И является ли это ошибкой?
open Microsoft.FSharp.Linq.QuotationEvaluation
let inline add x = x + x
let inline sub x = x - x
let answer = <@ add 1 @>.Eval() // 2, as expected
let answer2 = <@ sub 1 @>.Eval() // NotSupportedException
Обратите внимание, без ключевого слова inline исключение не генерируется (но код не является общим) Кроме того, исключение генерируется только при использовании цитат. Нормальная оценка работает нормально.
Спасибо
Изменить: упрощенный пример кода