Несогласованное поведение между (+) и (-) при использовании 'inline' и цитатной оценки

Кто-нибудь знает, почему 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 исключение не генерируется (но код не является общим) Кроме того, исключение генерируется только при использовании цитат. Нормальная оценка работает нормально.

Спасибо

Изменить: упрощенный пример кода

13
задан TimC 19 September 2011 в 13:54
поделиться