如何编写功能性编程语言的伪代码?

Vas*_*h K 2 scheme haskell functional-programming pseudocode

如何为Scheme或Haskell等功能性编程语言编写伪代码?我搜索的所有内容都显示了C样式或Python样式的伪代码。

Syl*_*ter 5

在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-nodeinsert-sorted没有定义和方案,你会得到一个错误,但在CL你实际上可以利用这一点,它会跳进你在哪里问调试器,如果你想确定其中的一些,所以你基本上会再落实缺少零件,继续执行直到一切完成。

我猜想在Haskell或任何其他编程语言中,不仅是功能性语言,还可以使用您正在实现的语言进行这种乐观编程。最终结果可能会有微小的变化,但是它并不比其他重构中的变化大。