如何为Scheme或Haskell等函数式编程语言编写伪代码? 我搜索的所有内容都显示了C风格或Python风格的伪代码。
答案 0 :(得分:4)
在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))))))
这是完整的算法,它甚至会成为生成的实际代码的一部分,因此它也不是实际的伪代码。 single-node?
,make-node
,insert-sorted
未定义,并且在Scheme中您会收到错误但在CL中您实际上可能会使用此错误,它会跳转到调试器中你会被问到是否要定义其中的一些,这样你就可以随时实现缺失的部分并继续执行直到一切都完成。
我想在Haskell或任何其他编程语言中,不仅仅是功能性编程语言,你可以用你正在实现的语言来做这种乐观的编程。最终结果可能会有微小的变化,但它并不比其他重构中的变化大。
答案 1 :(得分:1)
如果我在函数式的伪代码中编写算法,那么我可能会混合和匹配语言,但会一直使用:
以哈希函数为例:
hash data =
let blocks = chunksOf blockSize (preprocess data)
foldr updateContext initialContext blocks