Vas*_*h K 2 scheme haskell functional-programming pseudocode
如何为Scheme或Haskell等功能性编程语言编写伪代码?我搜索的所有内容都显示了C样式或Python样式的伪代码。
在SICP和其他教程中,您可能会称之为乐观编程。不用伪代码,您只需命名事物并提供它们可能采用的参数即可。因此,假设您想从频率最低到频率最高的排序节点列表中创建霍夫曼树:
(define (huffman nodes)
(if (single-node? nodes)
(first nodes)
(let ([new-node
(make-node (first nodes)
(second nodes))])
(huffman (insert-sorted new-node
(cddr nodes))))))
Run Code Online (Sandbox Code Playgroud)
这是完整的算法,甚至会成为生成的实际代码的一部分,因此也不是实际的伪代码。single-node?
,make-node
,insert-sorted
没有定义和方案,你会得到一个错误,但在CL你实际上可以利用这一点,它会跳进你在哪里问调试器,如果你想确定其中的一些,所以你基本上会再落实缺少零件,继续执行直到一切完成。
我猜想在Haskell或任何其他编程语言中,不仅是功能性语言,还可以使用您正在实现的语言进行这种乐观编程。最终结果可能会有微小的变化,但是它并不比其他重构中的变化大。