проблема с выводом типа
От: _Claus_  
Дата: 04.01.12 20:54
Оценка:
module managerExtensions     
    
    perst_hash = HashSet.[string]()                
    
    public isPersist(this ti : FixedType) : bool                               
      
      (ti :> FixedType.Class :: ti.TypeInfo.GetSuperTypes()).Map(_.ToString()).Exists(perst_hash.Contains(_))
       // ^ это приведение представляется лишним, однако без него ошибка


error : in argument #2 (tl), needed a list[Nemerle.Compiler.FixedType-], got list[Nemerle.Compiler.FixedType.Class]: Nemerle.Compiler

GetSuperTypes имеет тип результата list[FixedType.Class].

нетрудно заметить, что в итоге "ti :: ti.TypeInfo.GetSuperTypes()" должен быть получен тип list[FixedType] , однако компилятор отказывается. на упрощенных примерах проблема не наблюдается


    def c = [Var.A(2.0)]
    
    mutable g : Var
    
    def d = g :: c    //компиляция ок



оформить как исью?
Re: проблема с выводом типа
От: WolfHound  
Дата: 04.01.12 21:09
Оценка:
Здравствуйте, _Claus_, Вы писали:

_C_>оформить как исью?

Никак. Тут все нормально.
Если изменишь свой упрощенный пример так:
def c : list[Var.A] = [Var.A(2.0)];
То получишь ту же ошибку.
Просто у тебя тип "c" выводится как list[Var].
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[2]: проблема с выводом типа
От: _Claus_  
Дата: 04.01.12 21:21
Оценка:
WH>Просто у тебя тип "c" выводится как list[Var].

в ошибочном примере :: оператор разве не должен приводить второй аргумент list[FixedType.Class] к list[FixedType]?
ковариантность здесь уместна, насколько я понимаю..
Re[3]: проблема с выводом типа
От: WolfHound  
Дата: 04.01.12 21:23
Оценка:
Здравствуйте, _Claus_, Вы писали:

_C_>в ошибочном примере :: оператор разве не должен приводить второй аргумент list[FixedType.Class] к list[FixedType]?

_C_>ковариантность здесь уместна, насколько я понимаю..
Но ее нет.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[4]: проблема с выводом типа
От: _Claus_  
Дата: 04.01.12 21:36
Оценка:
_C_>>ковариантность здесь уместна, насколько я понимаю..
WH>Но ее нет.

Она не реализована для этого случая или.. она неприменима в данном случае по каким-то соображениям?
мне не удалось найти определение :: , поэтому спрашиваю.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.