gpt4 book ai didi

haskell - 关于列表及其声明的问题(haskell)

转载 作者:行者123 更新时间:2023-12-02 16:19:51 24 4
gpt4 key购买 nike

我是 Haskell 的新手,我有一个程序有问题。主要问题在声明中,但我不知道如何正确编写。我需要检查矩阵是否为实际矩阵,我的想法是检查第一个列表中的元素数是否等于其他列表中的元素数。
提前致谢!

isMatrix ::[[Int]] -> Bool
isMatrix [] _ = False
isMatrix xs ys | ((len xs) == (len ys)) = True
| otherwise = False

len :: [Int] -> Int
len [] = @
len (_:zs) = 1+ len zs

最佳答案

在您的代码中,您在 isMatrix 函数中传递了两个参数而不是一个参数,这就是您的代码不起作用的原因。

你可以这样写:

isMatrix :: [[Int]] -> Bool
isMatrix [] = True
isMatrix [_] = True
isMatrix (r1:r2:rs) = len r1 == len r2 && isMatrix (r2:rs)

所以,空矩阵和向量是矩阵。否则,您将逐行“删除”行并检查它们是否具有相同的长度。

P. S. 您可以使用标准函数 length 而不是 len

关于haskell - 关于列表及其声明的问题(haskell),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65762632/

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