Tava de bobeira no fim de semana e fiz isso aqui:
http://github.com/ruliana/YoDaFunkta
Comentários são muito bem vindos. Críticas são especialmente bem vindas :)
[]s
Ronie
Na verdade o YoDaFunkta não é sobre esse tipo de functor aqui:
http://en.wikipedia.org/wiki/Functor, mas sim sobre esse aqui:
http://en.wikipedia.org/wiki/Function_object
Talvez o nome e a apresentação tenha realmente ficado confusa. Acho
melhor esclarecer mais. Dos "functor" puramente função não conheço
muito, é isso que estou estudando ainda. Mas o que já vi de trabalhar
com funções como first class citizens me motivou a fazer a lib. :)
Quem sabe na evolução da coisa como fica? :)
Qdo digo "power" vs "safety", não me refiro a nada específico.
Normalmente temos esses tipos de escolha na vida normal,
principalmente na vida de programador. "Segurança" e "poder" são às
vezes antagônicos, no caso específico dessa lib, tive que escolher.
"Not that safe" significa que na minha humilde opinião, tipagem
estática não previne uma quantidade de erros que valha o esforço. Tipo
certo é legal, mas pra mim o problema maior seria garantir que o
método "onePlusOne" retornasse "2" e não "30" :) (se bem que, se
"onePlusOne" retornar "abacate" vou ter um problemão)
[]s
Ronie
2009/9/29 Diego Souza <dso...@bitforest.org>:
Bom, conforme eu for estudando e aprendendo mais, quem sabe saí um
Functor objeto que funciona como Functor para tipos tb? Inda não sei o
quão convergente podem ser os conceitos :p
>> Quem sabe na evolução da coisa como fica? :)
>>
>> Qdo digo "power" vs "safety", não me refiro a nada específico.
>> Normalmente temos esses tipos de escolha na vida normal,
>> principalmente na vida de programador. "Segurança" e "poder" são às
>> vezes antagônicos, no caso específico dessa lib, tive que escolher.
>
> Ok. Provavelmente o sistema de tipos de Java não ajuda muito também.
>
>> "Not that safe" significa que na minha humilde opinião, tipagem
>> estática não previne uma quantidade de erros que valha o esforço. Tipo
>> certo é legal, mas pra mim o problema maior seria garantir que o
>> método "onePlusOne" retornasse "2" e não "30" :) (se bem que, se
>> "onePlusOne" retornar "abacate" vou ter um problemão)
>
> Mas daí já não é mais um problema de tipos, certo?
>
> Certamente vamos concordar que onePlusOne, neste caso, possui o tipo:
>
> onePlusOne :: Int
>
> Tão logo 30 seja uma instância de Int, assim como o é o 2, o programa
> está correto no que se refere à tipagem, muito embora não faça o que
> promete. Concordo que só ajuda em bugs triviais, mas daí extrapolar que
> não vale o esforço me parece um salto grande demais. Afinal, estamos
> considerando uma implementação específica:
> http://en.wikipedia.org/wiki/Template:Type_system_cross_reference_list
Pode ser o caso... A meu ver, essa história de tipagem é muito gosto
pessoal. Não sei de ninguém que tenha conseguido fazer um estudo que
indicasse se X é melhor que Y ou se compensa X sobre Y. Então vira um
negócio de "opinião devido experiência pessoal". e como cada um tem a
sua as opiniões divergem muito.
Talvez nem seja a questão de se uma coisa compensa ou não. Talvez a
questão seja, na verdade, "quando" a tipagem estática/dinâmica
ajuda/atrapalha. Pq é possível achar exemplos e contraexemplos para
ambos.
Mas o importante é conseguir fazer bons programas com poucos bugs,
pouco esforço e de fácil manutenção, seja lá o que for usado, né? ;)
[]s
Ronie