Как я могу ограничить функцию, чтобы она не принимала частично примененные функции

У меня есть функция сериализации, в которую я подаю данные, иногда я пропускаю аргумент функции генерации данных, и в результате я сериализую частично примененную функцию. Json.Net не заморачивается по этому поводу, а предоставляет хороший пустой объект {}

Я хотел бы ограничить мою функцию сериализации, чтобы она не принимала частично примененные аргументы:

let mySerializer<'a when : 'a isnotafunction> (data:'a) : string = 
    JsonConvert.SerializeObject(data)

До сих пор мне не повезло найти способ сделать это.


person Vidar    schedule 01.03.2016    source источник
comment
Вы можете проверить, является ли 'a экземпляром FSharpFunc<_,_>   -  person Fyodor Soikin    schedule 01.03.2016
comment
как мне сделать это ограничением? Т.е. 'a when : 'a not :> FSharpFunc<_,_>   -  person Vidar    schedule 01.03.2016
comment
Связанный ответ: как ограничить неработоспособность?   -  person Roujo    schedule 01.03.2016