-
Erlang 可移植函数为 pfun
资源介绍
乐趣
提供跨多个节点的可移植功能对象和代码加载的库
__可移植函数__的缩写
概述
目标是解决常规 Erlang 函数对象的以下问题:
无法跨多个代码加载生存
如果一个函数对象所属的模块被更新两次,持有该对象的进程就会崩溃以完全限定形式引用的函数的例外( fun Mod:Fun/Arity )
参考:
难以在多个节点之间安全轻松地传递函数对象
函数对象所属的模块(特定版本)也必须加载到目的节点上
上述两个问题都是由于匿名函数的实体(字节码字符串)与模块实例的特定版本相关联。如果该版本的模块被破坏(或不存在),则无法执行
pfun是
提供一种创建不绑定到特定模块实例的功能对象的方法
【示例】可移植匿名函数: pfun:lambda(fun () -> io:format("hello") end, [])
【示例】便携式偏应用函数: pfun:bind(erlang, '+', 2, [1