-->

Frameworks, continuações e Factor MS + IronPython = Bah!

3 / 2 = 1 ? Definitivamente, está errado!

March 26th, 2005

Bem, eu estou vivendo no ano de 2005. Linguagens novas surgem diariamente e, a maioria insiste no erro. 3 / 2 não é igual a 1 e sim igual a 3/2. Acho que aprendi isto no primário.

Infelizmente, muitas linguagens acham que devem deixar as coisas erradas pois outras também estão erradas. Para linguagens que possuem tipos de dados estáticos, até existe uma certa tolerância. Mas acho que já está na hora das linguagens dinâmicas mudarem a filosofia. Em Ruby, por exemplo, uma variável que possui um valor inteiro, dependendo das operações, poderá ser promovida a um tipo inteiro gigante (Bignum) automaticamente.

Mas porque a divisão de dois inteiros não gera automaticamente um número racional? Em Ruby, a situação pode ser facilmente contornada utilizando-se:

require ‘mathn’.

De qualquer forma, eu acharia mais interessante se a linguagem provesse o processo automaticamente. Da mesma forma, uma linguagem acusar um erro quando o usuário pretende extrair a raiz quadrada de um número negativo, está errado. :-)

Frescuras? Sim. Até que a gente entra em contato. Primeiro causa uma sensação de segurança. Depois vira uma necessidade. Mas se Lisp, Smalltalk, Factor, etc possuem estas facilidades, acho que seria bem interessante Ruby prover (ou será que já está previsto?).

Depois vejo se existe alguma RCR por lá.

Atualização:

http://rcrchive.net/rcr/show/260
O Gavin Sinclair solicitou a implementação de racionais como uma classe da linguagem. Não fala nada em conversão direta, mas eu já votei. ( garanto que ninguém sabe qual foi o meu voto ;-)

http://rcrchive.net/rcr/show/195
Implementação em C dos números complexos como uma classe do Ruby. Também já tem o meu voto. Mas pô, a RCR é de 17 de janeiro de 2004 e ainda não foi feito nada? Ah, depende da RCR 194. Ok. Já votei também. :-)

Acho que fiz a minha parte. Se eu fosse um ‘expert’ em C eu mandava a solução também.

Entry Filed under: Ruby

7 Comments