2.1.1 Exemplo: Operações Aritméticas para Números Racionais
Suponha que queremos fazer aritmética com números racionais. Queremos ser capazes de adicioná-los, subtraí-los, multiplicá-los e dividi-los, e testar se dois números racionais são iguais.
Vamos começar assumindo que já temos uma maneira de construir um número racional a partir de um numerador e um denominador. Também assumimos que, dado um número racional, temos uma maneira de extrair (ou selecionar) seu numerador e seu denominador. Vamos supor ainda que o construtor e os seletores estão disponíveis como funções:
make_rat(n, d)retorna o número racional cujo numerador é o inteiro n e cujo denominador é o inteiro d.numer(x)retorna o numerador do número racional x.denom(x)retorna o denominador do número racional x.
Estamos usando aqui uma estratégia poderosa de síntese: wishful thinking (pensamento positivo). Ainda não dissemos como um número racional é representado, ou como as funções numer, denom e make_rat devem ser implementadas. Mesmo assim, se tivéssemos essas três funções, poderíamos então adicionar, subtrair, multiplicar, dividir e testar a igualdade usando as seguintes relações: