`

[转]Erlang匿名函数的递归

 
阅读更多

来自:http://zfsgeek.blog.163.com/blog/static/20400908020121012104457436/

 

 

使用或者返回一个匿名函数的函数被称为高阶函数(Higer-order function)。普通的函数,它们递归是容易编写的,因为它们有个名字,你引用这个名字就可以了,而匿名函数没有名字,如何编写递归呢?

 

例子:

下面是一个计算一个list的累加和的匿名函数:

F = fun(This, [], Total) -> Total;
       (This, [H|T], Total) -> This(This, T, H+Total) end.

 

在erl的shell中输入:

1> F = fun(This, [], Total) -> Total;
1>        (This, [H|T], Total) -> This(This, T, H+Total) end.
#Fun<erl_eval.18.82930912>
2> F(F, [1,2,3], 0).
6

 诀窍就是把匿名函数赋给F,然后在调用这个匿名函数时,把F作为参数传入进去。你可能会问,为什么在匿名函数里面无法使用符号F?那是因为定义这个函数时,F还不存在。

 

如果你觉的上面的函数还需要你知道如何调用递归的匿名函数,不是很方便,不妨多写一层,我在shell里输入:

1> G=fun(L) ->
1>    F=fun(This, [], Total) -> Total;
1>         (This, [H|T], Total) -> This(This, T, H+Total) end,
1>    F(F, L, 0) end.
#Fun<erl_eval.6.82930912>
2> G([1,2,3]).
6
3>

 

这里G引用的匿名函数内嵌一个匿名函数,内部是递归调用。

分享到:
评论

相关推荐

    基于ErlangC函数的Oracle性能预测和分析.pdf

    基于ErlangC函数的Oracle性能预测和分析.pdf

    erlang入门级练习:LeetCode OJ问题的部分erlang 源码

    我自己在新学erlang,在LeetCode OJ上找了题目练习,题目很适合新手熟悉语言,但是LeetCode OJ里面只有几门主流语言的答案,下面是已完成的...个人认为dungeon_game这个题目解题逻辑很体现erlang的函数式的思维逻辑

    python基础(十八):函数式、递归调用

    文章目录一、函数式1、函数式简介2、匿名函数与lambda二、递归调用1、递归调用要点透析2、递归调用的两个过程:回溯与递推3、递归经典例题练习(1)嵌套多层的列表,要求打印出所有的元素(2)二分法递归实现 ...

    Erlang趣学指南

    (494页带目录的高清扫描版) 这是一本讲解Erlang编程语言的入门指南,内容通俗...内容涉及模块、函数、类型、递归、错误和异常、常用数据结构、并行编程、多处理、OTP、事件处理,以及所有Erlang的重要特性和强大功能。

    erlang编程 Introducing Erlang

    erlang入门电子书 erlang编程 Introducing Erlang,作者Simon.St.Laurent

    erlang api 最新资源

    在 Erlang的函数中 某些语法中 我们可以使用 Pattern匹配 这是一个非常好的特性 我们可以让代码自己去决定如何执行: 比如 我们定义一个函数 其告诉我们某种水果的价格 : price apple &gt; 2 0; price banana &gt...

    erlang_版本24.3.4.4

    erlang 安装包

    windows下安装Erlang环境

    Erlang 里面的函数是数学里面的函数:必须有返回值。 只要是函数必然有返回值,函数是一个过程,以英文的句号为函数结束符。 函数结束之前的表达式就是该函数的返回值。 所以这也是在 Erlang 里面的函数不会看到任何...

    Erlang及其应用Erlang及其应用

    Erlang及其应用Erlang及其应用Erlang及其应用

    ErlangB和ErlangC计算工具(exe可执行文件+excel两个)

    ErlangB和ErlangC计算工具(exe可执行文件+excel两个) ErlangB和ErlangC计算工具(exe可执行文件+excel两个)

    erlang25.0 windows版本

    erlang25.0 windows版本

    erlang otp25 win安装包

    erlang otp25 win安装包

    erlang22最新下载包

    erlang22最新下载包 erlang22.1.tar.gz erlang22最新下载包 erlang22最新下载包

    Erlang编程指南

    《erlang编程指南》是对erlang语言的深入介绍。erlang是任何必须并发、容错和快速响应的环境的理想编程...本书的重点集中在解释erlang的语法和语义,并且介绍了其模式匹配、规范列表、递归、调试、网络和并发性等内容。

    Erlang并发编程,Erlang程序设计,Erlang中文手册

    Erlang并发编程,Erlang程序设计,Erlang中文手册。 学习erlang的好资料。  Erlang是一个结构化,动态类型编程语言,内建并行计算支持。最初是由爱立信专门为通信应用设计的,比如控制交换机或者变换协议等,因此...

    rustler:用于创建Erlang NIF函数的Safe Rust桥

    rustler:用于创建Erlang NIF函数的Safe Rust桥

    erlang r17官方api及stdlib手册

    我是搬运工,官方下载的手册,包含所有erlang官方函数的介绍。英文的。给一分辛苦费,我也想下载东西。无奈他们都要分

    introducing erlang

    Erlang特性: ● 并发性 - Erlang支持超大量级的并发进程,并且不需要操作系统具有并发机制。 ● 分布式 - 一个分布式Erlang系统是多个Erlang节点组成...●函数式编程 ●动态类型 ●及早求值或严格求值 ●支持脚本运行

Global site tag (gtag.js) - Google Analytics