Re[16]: The future of programming languages by Хейлсберг
От: q__q  
Дата: 16.11.08 10:28
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Я тебе говорил о языковом уровне. Меня просто не интересует реализация чего-то в прошлом. О том, что это принципиально возможно говорят имеющиеся реализации. Если тебе интересны подробности, то иди и копай.


Пользуясь тем, что все равно нахожусь в бане, пошел и копнул. Результат не сильно впечатлил:

using System.Console;

public class Test {
  private static x1(i: int) : int { i; }
  private static x2(i: string) : string { i; }
  
  public static Main() : void {
    mutable x = x1;
    WriteLine("calling x1:");
    WriteLine(x(100));
    WriteLine("assign x2 to x:");
    x = (x2 : object) :> int -> int;
    WriteLine("assigned");
    WriteLine("calling x2:");
    WriteLine(x(100));
  }
}


Вывод программы:

calling x1:
100
assign x2 to x:
assigned
calling x2:

Необработанное исключение: System.InvalidCastException: Не удалось привести тип
объекта "System.Int32" к типу "System.String".
в Test._N_static_proxy734.apply(Object _N_sp_parm735)
в Test.Main()


Как видно из примера, решение, реализованное в N не является типобезопасным.
Называть это более правильной реализацией?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.