所以我有一个等式,它返回一个给定int的列表。我想把它放到另一个等式中,看看长度是1还是2,如果长度是1,则返回True,如果长度不是,则返回False。
con :: Int -> [Int] -> Bool
con getList x
| length x == 1 = True
| otherwise = False
这是我能得到的最接近的结果,但它抛出了错误
ERROR - Cannot find "show" function for:
*** Expression : con 3
*** Of type : [Int] -> Bool
我同意另一种解释,即您可能只需要一个直接与列表一起工作的函数,但如果您打算将con
的第一个参数作为Int类型的函数-
con :: (Int -> [Int]) -> Int -> Bool
con f = (== 1) . length . f
现在假设您有一个不同的函数,它从给定的
Int
生成一个Int
列表。根据输入是偶数还是奇数,输出的长度可能不同:
getList :: Int -> [Int]
getList x
| odd x = [x, x, x]
| otherwise = [x]
然后我们可以使用
con
检查输出的长度是否为1:
con getList 3 -- Will be False
con getList 2 -- Will be True
该错误是由您的con
类型导致的:
Int -> [Int] -> Bool
这意味着它需要两个参数(分别为Int
类型和Int
s列表)来返回布尔值。
现在,表达式con 3
只是将3
应用于con
(提供一个参数),返回一个函数,该函数接受Int
s的列表并返回Bool
。
此函数的类型为[Int]-
您似乎不需要
getST
,所以您可以使用:
con :: [a] -> Bool
con = (== 1) . length
现场演示
要使给定列表的函数返回布尔值,则:如果列表的长度为
1
,则返回值为True
,否则返回值为False
。
如果你只想通过列表的长度,那么事情就变得更简单了:
con :: Int -> Bool
con = (== 1)
现场演示
我想写一个函数来检查第一个列表是否比第二个列表长,并且其中一个列表可以是无限的。但是我找不到一个工作的解决方案。
我是一名Java程序员初学者。我试图在类交通中访问类车中的两个列表,这样我就可以执行while循环,循环直到主类中的列表为空 这就是我现在掌握的代码,我试着从普通车上扩展流量,但没有成功,我被卡住了。我该怎么解决这个问题?
问题内容: 我有看起来像的数据框: 为了进一步处理数据,我需要拆分该列,然后将其替换为如下所示的多列: 因此,这些列可以追加到初始数据帧。我不知道该怎么做,因为像 不能解决我的问题,因为我不仅需要基于列表中位置的列,还需要基于列表中每个唯一值的列。您知道我该如何处理吗? 问题答案: 您可以使用和: 如果需要计数值,则可以使用(我添加一个字符串进行测试):
我正在练习计算let表达式的问题,但我不理解这个表达式的输出。 下面是一个表达: 输出应该是[1,2,4,8]。有人能一步一步地解释为什么这是输出吗
我在课堂上创建了两个列表。 其中一个称为预算,包含元素section、month和sum,返回以下内容: [Budzet{sec='AGD/RTV',月='01',和=96},Budzet{sec='AGD/RTV',月='03',和=30},Budzet{sec='食品',月='04',和=23},Budzet{sec='游戏',月='09',和=1084}...] 这是SQL查询 第二个是元素
问题内容: 我有2个表,一个包含我需要的最终结果,另一个包含我需要根据设定级别选择的列列表。 例如 : 所以,如果我做以下 然后,基本上我需要使用此select语句中的列名来确定从另一条语句中选择了哪些列。 香港专业教育学院尝试过的方法,我当然知道这是错的,但可以让我对我试图做的事情有所了解。 我试图以一种动态方式构建一个sql查询,该查询可以通过我放在表中的任何列进行更改。 从理论上讲,这应与以