我一直在使用更多函数式语言进行编程,并且已经开始欣赏元组之类的东西,以及地图和折叠/聚合之类的高阶函数。VHDL 或 Verilog 是否有任何这些结构?
看起来 HDL 将是这类纯组合器的完美应用——虽然这些组合器仅由 Haskell、F#、LINQ 等中的命令式进程模拟,但硬件实际上是时钟节拍之间的纯功能。
乍一看,这两种语言看起来都很奇怪。对我来说,命令式 CPU 应用程序开始用函数式语言编写,而函数式 HDL 代码以命令式风格编写,这似乎很奇怪。
无论如何,问题是,有没有办法做一些简单的事情,比如
divByThreeCount = count (\x -> x `mod` 3 == 0) myArray
或者
myArray2 = map (\x -> x `mod` 3) myArray
或者更好的是让我用这些语言中的任何一种递归地定义我自己的高级构造?如果不是,哪种语言最接近?
这两种语言似乎都计划朝着这个方向取得进展吗?或者这真的没有我作为 HDL 新手所想的那么有用吗?