циклический тип какой-то
От: _Claus_  
Дата: 11.03.12 00:26
Оценка:
  public abstract class Limit[T]       
    ...      
                   
  public abstract class Fuzzy[T] : Limit[T] 
  
    ...
  
  public class LowEq[T]: Fuzzy[T] where T: IComparable[T]
    
    public override suit(par: Limit[T]) : double      //ошибка: CheckSTV for System.IComparable[System.IComparable[System.IComparable[System.IComparable[...]]]] failed: cyclic type found
    
      ...


кто неправ, я или компилятор?
Re: циклический тип какой-то
От: _Claus_  
Дата: 11.03.12 01:44
Оценка:
на всякий случай — готовый пример, демонстрирующий ошибку


#pragma indent

using Nemerle;
using System
using System.Collections.Generic
using System.Linq

namespace xlib
  
  public abstract class Limit[T]       
  
    public value: T
    
    public virtual suit(par: Limit[T]) : bool
      
      false
          
  public abstract class Fuzzy[T] : Limit[T] {}      
            
  public class LowEq[T]: Fuzzy[T] where T: IComparable[T]
    
    public override suit(par: Limit[T]) : bool
            
      | BigEq => (value.CompareTo(par.value) >= 0)
      
      | _ => true              
            
  public class BigEq[T]: Fuzzy[T] where T: IComparable[T]
    
    public override suit(par: Limit[T]) : bool
      
      | LowEq => par.suit(this)
      
      | _ => true
  module Test    

    Main() : void
      {}
Re[2]: циклический тип какой-то
От: WolfHound  
Дата: 11.03.12 06:44
Оценка:
Здравствуйте, _Claus_, Вы писали:

_C_>на всякий случай — готовый пример, демонстрирующий ошибку

Похоже на баг в типизации сравнения с образцом.

В качестве временной меры можно так.
| _ is BigEq[T] => (value.CompareTo(par.value) >= 0)


Кстати почему в сравнении нельзя указать тип генерика явно?
Ни так:
| BigEq[T] =>

Ни так:
| BigEq.[T] =>

Не работает.
error : invalid pattern
говорит.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[3]: циклический тип какой-то
От: CodingUnit Россия  
Дата: 11.03.12 08:52
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, _Claus_, Вы писали:


_C_>>на всякий случай — готовый пример, демонстрирующий ошибку

WH>Похоже на баг в типизации сравнения с образцом.

WH>Кстати почему в сравнении нельзя указать тип генерика явно?

WH>Ни так:
WH>
WH>| BigEq[T] => 
WH>

WH>Ни так:
WH>
WH>| BigEq.[T] => 
WH>

WH>Не работает.
WH>error : invalid pattern
WH>говорит.

Интересно это работало когда то? Или это вызвано моими изменениями?
Re[4]: циклический тип какой-то
От: WolfHound  
Дата: 11.03.12 08:58
Оценка:
Здравствуйте, CodingUnit, Вы писали:

CU>Интересно это работало когда то? Или это вызвано моими изменениями?

Не знаю. Скорей всего нет.

Следи за тем сколько цитируешь. Это я как модератор говорю.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.