<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Nada de errado com tipagem estática</title>
	<atom:link href="http://blog.thiagoarrais.com.br/2006/12/19/nada-de-errado-com-tipagem-estatica/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.thiagoarrais.com.br/2006/12/19/nada-de-errado-com-tipagem-estatica/</link>
	<description>Pensamentos, idéias e devaneios sobre desenvolvimento de software e tecnologia em geral</description>
	<lastBuildDate>Fri, 16 Apr 2010 04:05:48 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
	<item>
		<title>By: Thiago Arrais</title>
		<link>http://blog.thiagoarrais.com.br/2006/12/19/nada-de-errado-com-tipagem-estatica/comment-page-1/#comment-51</link>
		<dc:creator>Thiago Arrais</dc:creator>
		<pubDate>Tue, 09 Jan 2007 12:03:56 +0000</pubDate>
		<guid isPermaLink="false">http://blog.thiagoarrais.com.br/2006/12/19/nada-de-errado-com-tipagem-estatica/#comment-51</guid>
		<description>Na definição do fatorial temos um exemplo disso. Veja que
defini o parâmetro n como um número (devido à utilização
interna da função de subtração). Não foi como um int,
float, ou Byte. Mesmo assim a função deverá funcionar
corretamente para qualquer um desses tipos.

Em Haskell isso é resolvido com classes de tipos, que são grosseiramente uma interface Java turbinada. O &#039;operador&#039;
de adição nada mais é que uma função que opera sobre dois
argumentos (e que é normalmente utilizado na forma
infixa). Os dois argumentos são objetos Summable. Isto não
existe em Java, mas meio que existe em Haskell na forma da
classe de tipos Num (que não abrange somente a adição).
Olha o que o verificador de tipo me diz:

Prelude&gt; :t (+)
(+) :: (Num a) =&gt; a -&gt; a -&gt; a

Traduzindo: a soma é uma operação sobre dois números do
mesmo tipo que resulta em um terceiro número do mesmo tipo.
E &quot;número&quot; pode ser muitas coisas diferentes. Esta mesma
função pode ser disponibilizada para números inteiros, de
ponto flutuante, números complexos e matrizes. Mesmo assim
o compilador consegue inferir os tipos.

Isto não é por acaso, é porque Haskell é uma dessas
linguagens feitas desde o início com inferência de tipos
em mente.</description>
		<content:encoded><![CDATA[<p>Na definição do fatorial temos um exemplo disso. Veja que<br />
defini o parâmetro n como um número (devido à utilização<br />
interna da função de subtração). Não foi como um int,<br />
float, ou Byte. Mesmo assim a função deverá funcionar<br />
corretamente para qualquer um desses tipos.</p>
<p>Em Haskell isso é resolvido com classes de tipos, que são grosseiramente uma interface Java turbinada. O &#8216;operador&#8217;<br />
de adição nada mais é que uma função que opera sobre dois<br />
argumentos (e que é normalmente utilizado na forma<br />
infixa). Os dois argumentos são objetos Summable. Isto não<br />
existe em Java, mas meio que existe em Haskell na forma da<br />
classe de tipos Num (que não abrange somente a adição).<br />
Olha o que o verificador de tipo me diz:</p>
<p>Prelude&gt; :t (+)<br />
(+) :: (Num a) =&gt; a -&gt; a -&gt; a</p>
<p>Traduzindo: a soma é uma operação sobre dois números do<br />
mesmo tipo que resulta em um terceiro número do mesmo tipo.<br />
E &#8220;número&#8221; pode ser muitas coisas diferentes. Esta mesma<br />
função pode ser disponibilizada para números inteiros, de<br />
ponto flutuante, números complexos e matrizes. Mesmo assim<br />
o compilador consegue inferir os tipos.</p>
<p>Isto não é por acaso, é porque Haskell é uma dessas<br />
linguagens feitas desde o início com inferência de tipos<br />
em mente.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Marcos Silva Pereira</title>
		<link>http://blog.thiagoarrais.com.br/2006/12/19/nada-de-errado-com-tipagem-estatica/comment-page-1/#comment-50</link>
		<dc:creator>Marcos Silva Pereira</dc:creator>
		<pubDate>Tue, 09 Jan 2007 03:26:32 +0000</pubDate>
		<guid isPermaLink="false">http://blog.thiagoarrais.com.br/2006/12/19/nada-de-errado-com-tipagem-estatica/#comment-50</guid>
		<description>E o que acontece quando se tem sobrecarga de operadores? Em Java, por exemplo, a = b + c tem resultados diferentes para tipos diferentes. Especialmente, vc pode mesclar tipos em expressão dessa natureza e obter resultados diferentes o que tornaria a inferência de tipos um pouco mais complicada, não impossível, mas mais complicada. Quando a linguagem permitir sobrecarga de operadores, pode ser mais complicado ainda realizar a inferência e aí duck typing começa a fazer sentido.

valeuz...</description>
		<content:encoded><![CDATA[<p>E o que acontece quando se tem sobrecarga de operadores? Em Java, por exemplo, a = b + c tem resultados diferentes para tipos diferentes. Especialmente, vc pode mesclar tipos em expressão dessa natureza e obter resultados diferentes o que tornaria a inferência de tipos um pouco mais complicada, não impossível, mas mais complicada. Quando a linguagem permitir sobrecarga de operadores, pode ser mais complicado ainda realizar a inferência e aí duck typing começa a fazer sentido.</p>
<p>valeuz&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: yguaratã</title>
		<link>http://blog.thiagoarrais.com.br/2006/12/19/nada-de-errado-com-tipagem-estatica/comment-page-1/#comment-52</link>
		<dc:creator>yguaratã</dc:creator>
		<pubDate>Tue, 19 Dec 2006 17:46:03 +0000</pubDate>
		<guid isPermaLink="false">http://blog.thiagoarrais.com.br/2006/12/19/nada-de-errado-com-tipagem-estatica/#comment-52</guid>
		<description>Depois que comecei a programar em Python conclui que realmente não preciso ficar declarando tipos. Porém, como trabalho com java, ainda preciso me submeter a esse tipo de coisa. Em Java não basta só especificar o tipo mas também fazer anotações do tipo &quot;@SuppressWarnings(&quot;unchecked&quot;)&quot;.
Veja só que irônico: você precisa declarar os tipos para ajudar o compilador a prever seus erros, e logo depois é preciso dizer que não é para se preocupar com os tipos. rsrsrsrsr
Apesar disso, Java é uma boa linguagem (milhares de pessoas não podem estar erradas), porém sem IDEs como Eclipse, Netbeans e etc, não dá para trabalhar com toda aquela gama de termos sintáticos.</description>
		<content:encoded><![CDATA[<p>Depois que comecei a programar em Python conclui que realmente não preciso ficar declarando tipos. Porém, como trabalho com java, ainda preciso me submeter a esse tipo de coisa. Em Java não basta só especificar o tipo mas também fazer anotações do tipo &#8220;@SuppressWarnings(&#8220;unchecked&#8221;)&#8221;.<br />
Veja só que irônico: você precisa declarar os tipos para ajudar o compilador a prever seus erros, e logo depois é preciso dizer que não é para se preocupar com os tipos. rsrsrsrsr<br />
Apesar disso, Java é uma boa linguagem (milhares de pessoas não podem estar erradas), porém sem IDEs como Eclipse, Netbeans e etc, não dá para trabalhar com toda aquela gama de termos sintáticos.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
