[R-br] [Dúvida] Uso de linguagem funcional para estatística.

Mauricio Cardeal mcardeal2010 em gmail.com
Domingo Fevereiro 26 15:31:35 BRT 2012


Benilton, por curiosidade testei os códigos e o primeiro funcionou certo,
mas o segundo acusou erro:

> factorial = function(x){+   stopifnot(x>=0)+   produto=1+   for (i in 1:x) produto = i* produto+   produto+ }> factorial(3)[1] 6> f2 = function(x){+   stopifnot(x>=0)+   If(x<=1){Erro: '{' inesperado em:
"  stopifnot(x>=0)
  If(x<=1){">     1[1] 1>   }else{Erro: '}' inesperado em "  }">
x*f2(x-1)Erro: objeto 'x' não encontrado>   }Erro: '}' inesperado em "
 }"> }Erro: '}' inesperado em "}">

Mauricio Cardeal

UFBA

Em 26 de fevereiro de 2012 14:37, Pedro Rafael <
pedro.rafael.marinho em gmail.com> escreveu:

> Em linguagens de programação imperativas você pensa nas coisas
> seguindo uma sequência computacional de tarefas sendo executadas,
> embora durante possam mudar de estado. Por exemplo, você define uma
> variável como 5 e então faz alguma coisa e em seguida a define como
> sendo alguma outra coisa qualquer. Você possui o controle do fluxo da
> estrutura podendo fazer uma determinada ação diversas vezes. Na
> programação puramente funcional você não diz para o computador o que
> fazer, porém você diz muitas vezes em qual coisa está. O fatorial de
> um número é o produto de todos os números sobre 1 deste número, a soma
> de uma lista de números é o primeiro mais a soma de todos os outros
> números e assim por diante. Você expressa isto na forma de funções.
> Você também não pode definir uma variável como sendo alguma coisa e em
> seguida defini-lá como sendo alguma outra coisa mais tarde. Se você
> dizer a ela que é 5, você não poderá dizer que é outra coisa mais
> tarde porque você já disse que era 5.  Então, em linguagens puramente
> funcionais, uma função não tem efeitos colaterais. A única coisa que
> podemos fazer com uma função é calcular algo e devolvê-lo como um
> resultado. Inicialmente, eu vi isto como uma limitação porém isto
> realmente tem algumas consequências interessantes: se a função é
> chamada duas vezes com os mesmos parâmetros, isto garantirá o retorno
> de um mesmo resultado. Isto se chama transparência referencial e não
> só permite que o compilador raciocine sobre o comportamento do
> programa, como também permite que você deduza facilmente (e até mesmo
> prove) que uma função está correta e, em seguida, construa funções
> mais complexas juntando diversas funções simples por colagem.
>
> A sequência de Fibonacci em Haskell é implementada assim:
>
> fib 0 = 0
> fib 1 = 1
> fib n = fib (n - 2) + fib (n - 1)
>
> Fatorial em Haskell:
>
> fatorial 0 = 1
> fatorial n = n * fatorial (n - 1)
>
> Hoje o software Mathematica trabalha com linguagem funcional apesar de
> ainda permitir outros paradigmas de programação.
>
>
>
> Em 26 de fevereiro de 2012 12:58, beniltoncarvalho [via R-br]
> <ml-node+s2285057n4422365h92 em n4.nabble.com> escreveu:
> > De fato, FH, nao e' um conceito trivial de entender.
> >
> > A estoria toda gira em torno do fato de que "nosso metodo usual de
> > programacao" depende basicamente em mudar dados de alguma forma... Por
> > exemplo, no exemplo que dei, o primeiro caso sempre muda o acumulador
> > 'produto'. Em funcional, os dados sao vistos como algo imutavel e,
> > dai', loops como o for() que usei inicialmente sao substituidos por
> > recursoes de *funcoes* (dai' o termo funcional - a unidade basica na
> > programacao sao as funcoes e nao os dados).
> >
> > Eu estou bem desatualizado nisso, talvez o Pedro possa ser mais
> > preciso nas definicoes. Mas acho que (pelo menos a maioria de)
> > linguagens puramente funcionais tenham natureza de linguagens
> > interpretadas, mas podem ser sempre compiladas em algum nivel (por
> > exemplo, via byte-compilers).
> >
> > b
> >
> > 2012/2/26 FHRB Toledo <[hidden email]>:
> >
> >> Benilton,
> >>
> >> Entendi em partes sua argumentação... !
> >>
> >> Li seu código, mas também não testei.
> >>
> >> Minha pergunta veio apenas no gancho da explicação do Pedro sobre as
> >> linguagens funcionais, não entendo o suficiente de programação, sou
> >> apenas curioso, vi no texto dele falando de linguagens como lisp que
> >> me classificaram como "interpretada", por isso, por "reflexo"
> >> perguntei se linguagem funcional era sinônimo de linguagem
> >> interpretada, talvés tenha sido mal interpretado!
> >>
> >> OBS: ainda continuo com a dúvida e "um pouco" a deriva com sua
> explicação.
> >>
> >> abraço,
> >> FH
> >>
> >> 2012/2/25 Benilton Carvalho <[hidden email]>:
> >>> FH, a maioria de programas tem dados como argumento. Prof funcionais
> tem
> >>> funções como argumentos. Por exemplo, em R:
> >>>
> >>> factorial = funtion(x){
> >>> stopifnot(x>=0)
> >>> produto=1
> >>>  for (i in1:x) produto = i* produto
> >>> produto
> >>> }
> >>>
> >>> Vs
> >>>
> >>> f2 = funtion(x){
> >>> stopifnot(x>=0)
> >>> If(x<=1){
> >>> 1
> >>> }else{
> >>> x*f2(x-1)
> >>> }
> >>> }
> >>>
> >>> Resumindo, se em  r vc pode fazer ambos, tem mesmo pq se preocupar?
> >>>
> >>> b
> >>>
> >>> Ps: códigos não testados
> >>>
> >>> On Sunday, 26 February 2012, FHRB Toledo wrote:
> >>>>
> >>>> Pedro,
> >>>>
> >>>> Aproveitando o gancho da explicação:
> >>>>
> >>>> Seria por acaso linguegem funcional sinônimo de linguegem
> interpretada?
> >>>>
> >>>> att,
> >>>> FH
> >>>>
> >>>> 2012/2/25 Pedro Rafael <[hidden email]>:
> >>>> > "Em ciência da computação, programação funcional é um paradigma de
> >>>> > programação que trata a computação como uma avaliação de funções
> >>>> > matemáticas e que evita estados ou dados mutáveis. Ela enfatiza a
> >>>> > aplicação de funções, em contraste da programação imperativa, que
> >>>> > enfatiza mudanças no estado do programa.
> >>>> >
> >>>> > Uma função, neste sentido, pode ter ou não ter parâmetros e um
> simples
> >>>> > valor de retorno. Os parâmetros são os valores de entrada da
> função, e
> >>>> > o valor de retorno é o resultado da função. A definição de uma
> função
> >>>> > descreve como a função será avaliada em termos de outras funções.
> Por
> >>>> > exemplo, a função f(x) = x2 + 2 é definida em termos de funções de
> >>>> > exponenciação e adição. Do mesmo modo, a linguagem deve oferecer
> >>>> > funções básicas que não requerem definições adicionais.
> >>>> >
> >>>> > Linguagens de programação funcionais, especialmente as puramente
> >>>> > funcionais, tem sido mais usadas academicamente que
> no desenvolvimento
> >>>> > comercial de software. Entretanto, algumas linguagens notáveis
> usadas
> >>>> > na indústria e no comércio incluem Erlang (aplicações
> >>>> > concorrentes)[2], R (estatística), Mathematica (matemática
> >>>> > simbólica)[3] J, K (análise financeira) e XSLT.[4][5]Importantes
> >>>> > influências na programação funcional foram o cálculo lambda, as
> >>>> > linguagens de programação APL e Lisp, e mais
> recentemente ML, Haskell,
> >>>> > OCaml e F#."
> >>>> >
> >>>> > Um bom link sobre a linguagem funcional que mais me chama a atenção
> >>>> > (Haskell): http://haskell.tailorfontela.com.br/chapters
> >>>> >
> >>>> > Em 25 de fevereiro de 2012 20:03, Gilbert Queiroz [via R-br]
> >>>> > <[hidden email]> escreveu:
> >>>> >>
> >>>> >> linguagem de programação funcional? O q é isso?????
> >>>> >>
> >>>> >>
> >>>> >> ________________________________
> >>>> >> De: Pedro Rafael <[hidden email]>
> >>>> >> Para: [hidden email]
> >>>> >> Enviadas: Sábado, 25 de Fevereiro de 2012 20:20
> >>>> >> Assunto: [R-br] [Dúvida] Uso de linguagem funcional para
> estatística.
> >>>> >>
> >>>> >> Alguem aqui domina alguma linguagem de programação funcional?
> Existe
> >>>> >> alguma vantagem de quem é da estatística ou matemática também
> >>>> >> aprender
> >>>> >> profundamente alguma linguagem funcional como é o caso de Haskell?
> >>>> >> Atualmente tudo que preciso consigo em R e C mas ultimamente venho
> >>>> >> lendo
> >>>> >> sobre linguagem funcional e cálculo lambda e me parece bem
> >>>> >> interessante para
> >>>> >> quem trabalha matemática....
> >>>> >>
> >>>> >> --
> >>>> >> Saudações,
> >>>> >> Pedro Rafael Diniz Marinho.
> >>>> >> Estatístico - Secretaria de Estado da Saúde - PB.
> >>>> >>
> >>>> >>
> >>>> >>
> >>>> >> _______________________________________________
> >>>> >> R-br mailing list
> >>>> >> [hidden email]
> >>>> >> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> >>>> >> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e
> forneça
> >>>> >> código mínimo reproduzível.
> >>>> >>
> >>>> >>
> >>>> >> _______________________________________________
> >>>> >> R-br mailing list
> >>>> >> [hidden email]
> >>>> >> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> >>>> >> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e
> forneça
> >>>> >> código mínimo reproduzível.
> >>>> >>
> >>>> >> ________________________________
> >>>> >> If you reply to this email, your message will be added to the
> >>>> >> discussion below:
> >>>> >>
> >>>> >>
> >>>> >>
> http://r-br.2285057.n4.nabble.com/R-br-Duvida-Uso-de-linguagem-funcional-para-estatistica-tp4421166p4421229.html
> >>>> >> To unsubscribe from R-br, click here.
> >>>> >> NAML
> >>>> >
> >>>> >
> >>>> >
> >>>> >
> >>>> > --
> >>>> > Saudações,
> >>>> > Pedro Rafael Diniz Marinho.
> >>>> > Estatístico - Secretaria de Estado da Saúde - PB.
> >>>> > _______________________________________________
> >>>> > R-br mailing list
> >>>> >
> >>>
> >>>
> >>> _______________________________________________
> >>> R-br mailing list
> >>> [hidden email]
> >>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> >>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
> >>> código
> >>> mínimo reproduzível.
> >> _______________________________________________
> >> R-br mailing list
> >> [hidden email]
> >> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> >> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
> >> código mínimo reproduzível.
> > _______________________________________________
> > R-br mailing list
> > [hidden email]
> > https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> > Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
> código
> > mínimo reproduzível.
> >
> >
> > ________________________________
> > If you reply to this email, your message will be added to the discussion
> > below:
> >
> http://r-br.2285057.n4.nabble.com/R-br-Duvida-Uso-de-linguagem-funcional-para-estatistica-tp4421166p4422365.html
> > To unsubscribe from R-br, click here.
> > NAML
>
>
>
> --
> Saudações,
> Pedro Rafael Diniz Marinho.
> Estatístico - Secretaria de Estado da Saúde - PB.
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
> código mínimo reproduzível.
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20120226/c389959c/attachment.html>


Mais detalhes sobre a lista de discussão R-br