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