Como funciona a 'derivação' em Haskell?
Primeiro de tudo, derivar won't funciona para um tipo de dado arbitrário. Por exemplo, você pode't comparar funções para igualdade.
Funciona para todos os tipos de dados algébricos. Isso's porque existem regras muito simples para construir tipos de dados algébricos. Você os constrói a partir de tipos de dados primitivos usando produtos e somas.
O compilador conhece todos os tipos de dados primitivos, como unidade (), Int, etc., e sabe como implementar igualdade, mostrar, e alguns outros métodos de classe tipográfica para eles.
Estes tipos primitivos podem ser combinados usando produtos -- ou seja, tuples ou registros nomeados. Se você sabe como implementar, digamos, igualdade para tipos primitivos, você pode facilmente derivar igualdade para tuplos ou registros. O mesmo com show, etc.
Or eles são combinados usando somas, que são as barras verticais nas definições dos dados. Mais uma vez, você pode facilmente implementar comparações, mostrar, etc., para somas -- você apenas usa a combinação de padrões.
Simplesmente, existem regras para tipos de dados parametrizados e tipos de dados recursivos. Tente implementar Eq ou Show para um monte de tipos de dados algébricos, e você'vai descobrir as regras. Elas são inteiramente mecânicas e podem ser automatizadas.
It's também podem ser implementados derivando para classes de digitação definidas pelo usuário, mas it's é mais difícil. Você tem que dizer ao compilador como implementar os métodos da sua classe tipográfica para todos os tipos primitivos e para produtos genéricos e somas. Mas isso pode ser feito.
Artigos semelhantes
- Quais são as várias perdas em um motor de derivação DC?
- Como funciona o GPS de um smartphone? Funciona apenas com a Internet?
- Há um aplicativo que não funciona com o Android 9 ou 10, mas funciona bem com as versões anteriores do Android. Como posso corrigir isso?
- Como funciona o GPS nos telemóveis? Como é que serviços como a navegação no Google são gratuitos?