所以我对Haskell真的很陌生,有一个定义叫做:
x :: [(char,Int)]
x
需要定义为一个函数,该函数只是将字符(x,y,z)
与(1,2,3)
放在各个方面。
因此,当我呼叫x
时,我只想获取[x,1], [x,2], [x,3], [y,1], [y,2]
的输出,依此类推。
可能是一个简单的问题,但是我很困惑x
函数中没有实际输入。它只需要输出列表。
我尝试创建两个列表(数字和字符列表),但是如何将它们放到函数中?
答案 0 :(得分:2)
x
不是函数;这是一个元组列表。您可以直接定义它,也可以定义类型为foo :: [Char] -> [Int] -> [(Char, Int)]
的函数,然后通过调用带有两个适当列表的x
来设置foo
。
foo :: [Char] -> [Int] -> [(Char, Int)]
foo chars ints = ... -- You define this
x :: [(Char, Int)]
x = foo ['x', 'y', 'z'] [1, 2, 3]
关于如何定义foo
,建议您先阅读list comprehensions。它们不是定义foo
的唯一方法,但它们可能是最简单的。如果您熟悉像Python这样的语言中的列表推导,那么您应该不会有问题。 Haskell是Python产生创意的地方。