来自: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
我自己在新学erlang,在LeetCode OJ上找了题目练习,题目很适合新手熟悉语言,但是LeetCode OJ里面只有几门主流语言的答案,下面是已完成的...个人认为dungeon_game这个题目解题逻辑很体现erlang的函数式的思维逻辑
文章目录一、函数式1、函数式简介2、匿名函数与lambda二、递归调用1、递归调用要点透析2、递归调用的两个过程:回溯与递推3、递归经典例题练习(1)嵌套多层的列表,要求打印出所有的元素(2)二分法递归实现 ...
(494页带目录的高清扫描版) 这是一本讲解Erlang编程语言的入门指南,内容通俗...内容涉及模块、函数、类型、递归、错误和异常、常用数据结构、并行编程、多处理、OTP、事件处理,以及所有Erlang的重要特性和强大功能。
erlang入门电子书 erlang编程 Introducing Erlang,作者Simon.St.Laurent
在 Erlang的函数中 某些语法中 我们可以使用 Pattern匹配 这是一个非常好的特性 我们可以让代码自己去决定如何执行: 比如 我们定义一个函数 其告诉我们某种水果的价格 : price apple > 2 0; price banana >...
erlang 安装包
Erlang 里面的函数是数学里面的函数:必须有返回值。 只要是函数必然有返回值,函数是一个过程,以英文的句号为函数结束符。 函数结束之前的表达式就是该函数的返回值。 所以这也是在 Erlang 里面的函数不会看到任何...
Erlang及其应用Erlang及其应用Erlang及其应用
ErlangB和ErlangC计算工具(exe可执行文件+excel两个) ErlangB和ErlangC计算工具(exe可执行文件+excel两个)
erlang25.0 windows版本
erlang otp25 win安装包
erlang22最新下载包 erlang22.1.tar.gz erlang22最新下载包 erlang22最新下载包
《erlang编程指南》是对erlang语言的深入介绍。erlang是任何必须并发、容错和快速响应的环境的理想编程...本书的重点集中在解释erlang的语法和语义,并且介绍了其模式匹配、规范列表、递归、调试、网络和并发性等内容。
Erlang并发编程,Erlang程序设计,Erlang中文手册。 学习erlang的好资料。 Erlang是一个结构化,动态类型编程语言,内建并行计算支持。最初是由爱立信专门为通信应用设计的,比如控制交换机或者变换协议等,因此...
rustler:用于创建Erlang NIF函数的Safe Rust桥
我是搬运工,官方下载的手册,包含所有erlang官方函数的介绍。英文的。给一分辛苦费,我也想下载东西。无奈他们都要分
Erlang特性: ● 并发性 - Erlang支持超大量级的并发进程,并且不需要操作系统具有并发机制。 ● 分布式 - 一个分布式Erlang系统是多个Erlang节点组成...●函数式编程 ●动态类型 ●及早求值或严格求值 ●支持脚本运行