Я пытаюсь создать различный метод расширения для универсального типа , связанного с определенными параметрами универсального типа в F #, но язык не кажется, что позволяет мне:методы расширения для конкретных родовых типов
Я хочу сделать что-то вроде следующего:
type IEnumerable<int> with
member this.foo =
this.ToString()
Но это дает мне ошибку компилятора (подчеркивающую int
ключевое слово):
Неожиданный идентификатор в имени типа. Ожидаемый оператор инфикса, символ цитаты или другой токен.
Следующая делает работы, хотя это конкретно не связывает параметр универсального типа для int
, как я хочу:
type IEnumerable<'a> with
member this.foo =
this.ToString()
Есть ли способ для достижения этой цели в F # - это я возможно, просто используя неправильный синтаксис? Если нет, я был бы признателен, если бы кто-нибудь мог предложить обходное решение, возможно, используя ограничения типа где-то.
Кажется, вы действительно правы. Спасибо, в любом случае. – Noldorin
Эта функция отслеживается предложением во внутренней базе данных ошибок F # «4548: методы поддержки расширения для конкретных экземпляров типа», но вряд ли это сделает сокращение для версии VS2010. – Brian