Erlang中列表的笛卡尔幂

fai*_*tes 5 erlang functional-programming

我正在尝试编写一个erlang Mastermind解算器作为练习(我是一个完整的新手,但我认为这是一个有趣的功能语言练习)

我希望它尽可能通用,所以我觉得我需要一个笛卡尔幂函数.就像是:

cart_pow([a,b],2) -> [[a,a],[a,b],[b,a],[b,b]]
cart_pow([a,b],3) -> [[a,a,a],[a,a,b],[a,b,a],[a,b,b],[b,a,a],[b,a,b],[b,b,a],[b,b,b]]
Run Code Online (Sandbox Code Playgroud)

我想不出纯粹的功能(递归,地图,折叠......)解决方案.有线索吗?奖金,如果它是懒惰的.

Cha*_*ski 1

您可能会发现这个 Stack Overflow 问题很有帮助,它涉及用函数语言生成列表的笛卡尔幂。该问题是针对 F# 的,但评论中也有一个 Haskell 示例:F#: how to find Cartesian power