你好学习Haskell我在Web上练习,它要求创建一个给定整数的列表,方法如下所述:
例如,如果integer为3,则应生成包含以下内容的列表:
[[3],[1,2],[2,1],[1,1,1]]
Run Code Online (Sandbox Code Playgroud)
注意
3=3
1+2=3
2+1=3
1+1+1=3
Run Code Online (Sandbox Code Playgroud)
如果整数是2那么它将是:
[[2],[1,1]]
Run Code Online (Sandbox Code Playgroud)
我不能想到实现这个的方法,所以你能给我提供任何提示吗?我相信我必须使用列表理解,但我想不出更多
Ben*_*esh 10
始终以类型签名开头:
sums :: Int -> [[Int]]
Run Code Online (Sandbox Code Playgroud)
现在,让我们考虑一下递归.
sums 9例如返回正确的答案.你会如何实施sums 10?在您回答这些问题之前,不要打扰自己的实施细节(例如列表理解与filter和map).
另一个提示:Haskell程序员喜欢炫耀并创建微小的免费功能,但不要让它混淆你.让事情发挥作用是重要的.拥有一个有点"丑陋"的解决方案比盯着屏幕寻找优雅的解决方案更好.
祝好运!