gpt4 book ai didi

haskell - 此操作有标准名称吗?

转载 作者:行者123 更新时间:2023-12-02 21:18:52 26 4
gpt4 key购买 nike

因此,在开发 Haskell 项目时,我最终编写了以下函数

reGrid :: [[[a]]] -> [[a]]
reGrid [] = []
reGrid xs | any null xs = []
| otherwise = (concat $ map head xs) : reGrid (map tail xs)

对于那些不会说 Haskell 的人来说,这需要一个矩阵列表,并将相应的行连接到一个新矩阵中。

它在这个项目中出现了好几次,我感觉这是我错过的某种常见操作。

此操作有标准名称吗?搜索胡格尔

[[[a]]] -> [[a]

没有产生任何有用的结果。

最佳答案

您的功能与此非常相似(但不相同):

reGrid' = map concat . transpose

例如,我的 QuickCheck 属性 \xs -> reGrid xs == reGrid' xs 显示了以下差异:

*Main> reGrid [[[]],[]]
[]
*Main> reGrid' [[[]],[]]
[[]]

简而言之,您的版本将“切断”更多您可能真正关心(或不关心)的内容。更生动的例子:

*Main> reGrid [["abc"],[]]
[]
*Main> reGrid' [["abc"],[]]
["abc"]

您可以自己判断它们不同的情况对您是否重要。

关于haskell - 此操作有标准名称吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32851340/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com