Efeitos colaterais, programação funcional e ruby

20 de outubro de 2010

Durante a última turma de formação Rails, surgiu uma dúvida relativa a algumas idéias do mundo funcional que Ruby utiliza. É comum o uso do método returning em Rails para dar uma mão e permitir acessar um objeto, além de retorná-lo:

É uma idéia comum no mundo funcional, podendo ser pensada da seguinte maneira: precisamos executar diversos processos com efeito colateral mas estamos interessados em um único retorno.

Uma implementação comum nesse mundo seria:

Implementação de k_comb em uma linguagem funcional qualquer

Ao invocarmos k_comb com uma série de funções, somente a primeira possuirá seu valor retornado: todas as outras são executadas e seu retorno é ignorado. Por isso uma consequência direta é que ao usar tal padrão, estamos fazendo uso de efeitos colaterais.

O Ruby 1.9 já fazia:

Implementação usando o exemplo tap do Ruby 1.9

Com o tappie o ruído da variável extra pode ser removido, indo além da implementação do Ruby e do Rails, de uma maneira bem simples:

Implementação usando Tappie

Usar tais recursos de linguagens funcionais no mundo orientado a objetos de Ruby ajuda a diminuir o ruído semântico da linguagem, mas ao mesmo tempo é possível ir ainda além do que a linguagem Ruby nos fornece. Esse exemplo de implementação de k_combinator é uma possível extensão para o próprio Ruby.

Outras bibliotecas fornecem exemplos de funções como operadores.

Anúncios

2 Respostas to “Efeitos colaterais, programação funcional e ruby”

  1. Marilu Says:

    Now I feel stupid. That’s cerlead it up for me

    • Makara Says:

      Not really. While Rails is a frrmewoak and PHP a language, PHP’s frrmewoaks are a lot more bloated than Rails, especially Zend and Cake. Rails leaves a lot of that to plugins and gems, which makes it very lean. I do think Rails should be compared to PHP as I reckon most ppl who write PHP don’t use frrmewoaks, and perhaps rightfully so, because PHP isn’t geared towards complex application design. It’s probably the most simple language for creating a hello world .


Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: