Баг типизации
От: _nn_ www.nemerleweb.com
Дата: 02.02.11 13:46
Оценка:
В lib\internal-numbered.n имеем следующий код:
public abstract class Function ['p1, 'r]
{
  public static @|> (a : 'p1, fac : 'p1 -> 'r) : 'r
  {
    fac(a)
  }    

  public static @|> (a : 'p1, fac : 'p1 -> void) : void
  {
    fac(a)
  }    
  ...
}


Следующий код работает
def f(a) { a }
def x = 1 |> f;


Однако с котрежами код не компилируется
def f(a, b) { a + b }
def x = (1, 2) |> f;

1:15:1:20: error: typing fails on finding the operator op_Addition(?, ?)


Но достаточно указать тип функции где-нибудь, то все собирается
def f(a, b) { a + b : int }
def x = (1, 2) |> f;
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re: Баг типизации
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.02.11 00:44
Оценка: :)
Здравствуйте, _nn_, Вы писали:

__>В lib\internal-numbered.n имеем следующий код:...


Я не сказал бы, что это баг. Скорее недоработка.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Баг типизации
От: _nn_ www.nemerleweb.com
Дата: 03.02.11 16:16
Оценка:
Здравствуйте, VladD2, Вы писали:

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


__>>В lib\internal-numbered.n имеем следующий код:...


VD>Я не сказал бы, что это баг. Скорее недоработка.


А как исправить ?
Добавить в каждый класс Function метод |> или все же это с выводом типов свяанно ?
http://rsdn.nemerleweb.com
http://nemerleweb.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.