1
34
使用
Applicative Notation
. 这是有点不愉快的使用,因为新型的包装/拆解,但如果你正在做一些不能用
类型是
使用部分应用程序将其归纳为任意数量和类型的函数:
看看这里是如何部分应用(+)的? 如果您不喜欢在任何地方添加ziplist和getziplist,您可以很容易地重新创建符号:
那么符号
应用符号是一种非常强大和通用的技术,其范围比一般的压缩要宽得多。见 Typeclassopedia 更多关于应用符号的信息。 |
2
21
可以转置列表:
|
3
9
看起来还有一个
|
4
6
GHC also supports parallel list comprehensions :
我刚测试了26个并行变量,这对于所有的实际用途来说都是足够的。 不过这有点老土(而且不标准),所以如果你写的东西很严重,ziplist可能是更好的方式。 |
5
4
我认为这可能是建议的最不优雅的解决方案,但是为了完整起见,应该添加这样的内容,模板haskell应该可以实现。 这实际上包含在我认为的原始模板haskell paper(在文本中搜索zipn)中: http://research.microsoft.com/en-us/um/people/simonpj/Papers/meta-haskell/meta-haskell.pdf 但我认为代码实际上从未起作用,请看: http://www.haskell.org/pipermail/template-haskell/2003-July/000126.html (未实现模式切片)。 这在2003年没有实施,但今天仍然没有实施: http://www.haskell.org/ghc/docs/7.6.1/html/users_guide/template-haskell.html (不支持模式切片) 但是,使用模板haskell实现zipwithn: http://www.haskell.org/haskellwiki/Template_Haskell#zipWithN 我已经证实它与此测试程序一起工作:
在zipn模块中,我粘贴了zipn,为了清晰起见,将其重命名为zipn(记住在顶部添加pragma templatehaskell)。注意,N实际上在这里被编码了两次,因为我必须给出
我想有一个拥有良好模板haskell技能的人(这不是我现在的情况)可以使用模板haskell直接创建一个zipn。 |
6
3
这是不平凡的,但它是可行的。见 this blog post . 我不知道这是不是变成了图书馆。 这里是 another version 更简单。这个可以剪切粘贴在这里:
如果你刚刚开始学习哈斯克尔,推迟一段时间去理解它。 |
7
3
概括压缩实际上很容易。您只需编写
现在,您可以压缩任意多个列表:
或者:
|
8
1
对于特定数量的列表,可以这样做:
它不是一个通用函数,而是一个可以应用于不同数量列表的模式。 |
9
0
如果所有数据都是相同的类型,则可以执行以下操作:
例子:
|
danial · 如何在多个字符串的每个位置找到最频繁的字符 2 年前 |
shekharsabale · 从列表元素捕获子字符串 2 年前 |
The Great · 拆分并存储数据帧,但名称基于特定列中的唯一值 2 年前 |
Klimt865 · Python中的列表列表 2 年前 |
Klimt865 · 在Python中将数组列表转换为列表列表 2 年前 |