list - 使用所有可能性在 Haskell 中旋转列表
问题描述
解决方案
您可以避免对 的任何调用length
,以及对 的重复调用cycle
和更大的参数drop
,而是将任何其他无限列表压缩到有限输入列表,以将它们修剪为您期望的大小,丢弃后面的元素:
circle xs = let trim ys = zipWith const ys xs
in trim . map trim . iterate tail . cycle $ xs
*Main> circle "abc"
["abc","bca","cab"]
推荐阅读
- html - 如何居中元素?
- php - 如何在自定义循环中获得 woocommerce 可变产品的最低和最高价格?
- c - 从 C 项目中提取所有枚举的最佳方法
- javascript - Web Components: Is there an equivalent to attributeChangedCallback for properties?
- swift - 具有圆形背景的自定义分段控件
- javascript - 有没有办法将 Firefox 的窗口宽度调整为 100 像素?或者有没有其他浏览器可以让我的窗口宽度低于 100 像素?
- android - 将 viewModelScope 与 LiveData 一起使用时出现问题
- r - 在 Shiny App 的 Filter dplyr 中将函数作为参数传递
- javascript - 添加自定义图像以在材质 ui 底部导航中制作图标
- autocomplete - Algolia 自动完成 - 如何以英语显示自动完成建议?