【发布时间】:2016-08-24 15:53:10
【问题描述】:
在某种意义上,任何命令式代码都可以通过让每个操作接收和传递“世界状态”参数来转换为纯函数形式。
但是,假设您有一些几乎是纯函数形式的代码,除了深埋了许多函数调用层之外,是一些修改全局或至少广泛访问的状态的命令式操作,例如调用随机数生成器、更新计数器、打印一些调试信息,然后您希望通过算法将其转换为纯函数形式,并且更改最少。
有没有一种方法可以做到这一点,而无需将整个程序彻底翻转?
【问题讨论】:
-
你的意思是你的程序有副作用?
-
@OliverCharlesworth 是的。只有一小部分代码行有副作用,但它们被深埋了许多层的函数调用,我想自动将其转换为没有副作用的程序,同时尽可能多地保留原始结构。
-
你的意思是,找到执行副作用的行并删除它们?
-
@Bergi 不,转换必须保留程序的含义。
-
副作用是程序含义的一部分。举一个例子,在“打印一些调试信息”的情况下,您希望转换的最终结果是什么?
标签: functional-programming automated-refactoring