Numéricos polimórficos em .Net e em C #

É uma pena que em .Net não haja polimorfismo para números, ou seja, nenhuma interface numérica que unifique os diferentes tipos de tipos numéricos, como bool, byte, uint, int, etc. No extremo, você gostaria de um pacote completo de resumo tipos de álgebra.

Joe Duffy tem um artigo sobre o problema:

http://www.bluebytesoftware.com/blog/CommentView,guid,14b37ade-3110-4596-9d6e-bacdcd75baa8.aspx

Como você expressaria isso em C #, a fim de atualizá-lo, sem ter influência sobre .Net ou C #?

Eu tenho uma ideia que envolve definir primeiro um ou mais tipos abstratos (interfaces como INumeric - ou mais abstratos que isso) e depois definir estruturas que implementam esses tipos e agrupar tipos como int, fornecendo operações que retornam o novo tipo (por exemplo, Integer32: INumeric; onde adição seria definida como

public Integer32 Add(Integer32 other)
{
    return Return(Value + other.Value);
}

Eu tenho um pouco de medo da velocidade de execução desse código, mas pelo menos é abstrato.

Nenhum operador sobrecarrega a bondade ...

Alguma outra ideia?

O .net não parece uma plataforma viável de longo prazo se não puder ter esse tipo de abstração - e ser eficiente.

Abstração é reutilização.

atualizar:

Este é um exemplo de assinatura de tipo de implementação até agora:

public struct Integer32 : INumeric<Integer32, Int32>, IOrder<Integer32, Int32>

Compensando a falta de tipos de retorno covariantes.

questionAnswers(3)

yourAnswerToTheQuestion