Если вы пытаетесь вложить обобщенную функцию между < @@ и @@> символов, говорятF # Код Котировки и общие функции
<@@ let f x = x in f 1 @@>
вы получите следующее сообщение об ошибке компиляции:
Inner generic functions are not permitted in quoted expressions. Consider adding some type constraints until this function is no longer generic.
Это ограничение реализации (недостающая функция еще не реализована) или концептуальная проблема (или, возможно, и то и другое)?
EDIT: просто для уточнения, та же ошибка возникает даже при типизированной цитате с использованием символов < @ и @>.
EDIT 2: Вы можете, однако, аннотировать общую функцию с помощью ReflectedDefinitionAttribute
, чей АСТ должен быть доступен через отражение.
делает <@ let f x = x in f 1 @> работать? -><@[email protected]> Исключает введенную кодовую цитату. –
Нет, вы получите ту же ошибку. – MSX
Это только пример? Если ошибка не говорит об этом, вы можете не использовать внутренние функции для генерации котировок ген' –
Carsten