作为功能语言的新手(几周前,我开始接触Erlang,这是我能接触到的第一种功能语言)。
我开始写一些小的算法(例如left_rotate_list
,bubble_sort,
merge_sort
等)。我发现自己经常迷失在诸如“我应该使用辅助列表存储中间结果吗?”之类的决策中。和“我应该创建一个辅助函数来做到这一点吗?”
过了一会儿,我发现函数式编程(如果我说的根本没有意义,请与我同在)会鼓励“自上而下”的设计:即,当我执行merge_sort时,您首先写下所有的归类排序步骤,并将其命名为个人助手功能;然后您可以一一实现这些帮助器功能(如果需要进一步划分这些帮助器功能,请使用相同的方法进行操作)。
这似乎与OO设计有些矛盾,在该设计中,您可以从底部开始构建基本数据结构,然后将数据结构和算法组装成所需的结构。
感谢您的评论。是的,我想获得有关如何“以函数式语言进行思考”的建议(就像“以Java进行思考”,“以C++进行思考”一样)。
最佳答案
我不确定这是正确的说法。最近,我一直在尝试自学函数式编程,并且发现一种“自下而上”的编程风格确实对我有帮助。要使用您的合并排序示例:
:)
我可能会误用该术语,但对我来说,这感觉就像是自下而上的设计。函数式编程与面向对象的编程不同,但是在两者之间进行切换时,您不必完全放弃现有的设计技术。
关于functional-programming - 有关学习 "How to Think Functional"的建议?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1549017/