在Haskell控制台中使用编辑器中的变量和列表

mwkjh3gx  于 2023-08-06  发布在  其他
关注(0)|答案(2)|浏览(114)

程序应该检查数字2是否属于集合A。但是x(2)的值和集合A(1,2,4,5)我想在编辑器中定义,而不是在控制台中定义。我有这个代码:

x = 2
let A = [1, 2, 4, 5];

checkIfElem :: Nat -> Bool
checkIfElem x A
          |x`elem` A =True
          |otherwise = False

字符串
它告诉我不正确的缩进,我不知道为什么我只是想让它返回一个true或false,我不想也不必要求一个数字或列表。

3wabscal

3wabscal1#

  • 不能在顶层使用let。只需定义不带前导码的变量,就像对x所做的那样。
  • A是非法的变量名。变量必须以小写字母开头。
  • checkIfElem类型声明它有一个参数,但它的定义有两个。
r1wp621o

r1wp621o2#

1.正如用户amalloy正确地提到的,在Haskell中,变量的名称(无论其类型和数据如何)和列表必须以小写形式定义,因为大写字母是为类型定义的。
变量和列表的内容可以在.hs文件中声明,没有问题(没有错误)。
在上面的例子中,它将是:

x = 2
a = [1, 2, 4, 5]

字符串
接下来,函数的定义

checkIfElem :: Integer -> [Integer] -> Bool
checkIfElem x (a:xs) 
         |x`elem` (a:xs)=True
         |otherwise=False


函数checkIfElem接收一个整数,一个整数列表,并返回一个布尔值
现在,要使用编辑器中定义的变量和列表调用函数,并让Haskell使用存储在其中的相应值执行函数,您必须根据您需要的函数编写函数的名称,然后编写该函数所需的变量。
注意:变量,即使它们是列表,也总是被放置为“没有进一步的麻烦”,也就是说,只有没有直括号的变量,而没有其他印刷的变量。
在Haskell控制台中键入:

Prelude> checkIfElem x a


然后,Haskell将回答我们True,因为存储在变量x中的值(为2)在列表a中(由值1,2,4,5组成)

相关问题