Матчинг кортежей
От: catbert  
Дата: 19.09.11 23:35
Оценка:
Я уже как-то привык писать подобный код:
Add(x : Foo, y : Foo) : Foo
{
| (null, _) => null
| _ => x.Add(y)
}


Если открыть это в рефлекторе ILSpy, видно, что создается кортеж, который затем анализируется.

// ILSpy: Basic.Fun
private static Fun.Foo Add(Fun.Foo x, Fun.Foo y)
{
    Tuple<Fun.Foo, Fun.Foo> tuple = new Tuple<Fun.Foo, Fun.Foo>(x, y);
    return ((object)tuple.Field0 == null) ? null : x.Add(y);
}


Это баг, фича или просто недооптимизация? В issues записывать?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.