Haskell初学者问题,定义对

时间:2019-10-17 10:24:11

标签: list haskell combinations cartesian-product

所以我对Haskell真的很陌生,有一个定义叫做:

 x :: [(char,Int)]

x需要定义为一个函数,该函数只是将字符(x,y,z)(1,2,3)放在各个方面。

因此,当我呼叫x时,我只想获取[x,1], [x,2], [x,3], [y,1], [y,2]的输出,依此类推。

可能是一个简单的问题,但是我很困惑x函数中没有实际输入。它只需要输出列表。

我尝试创建两个列表(数字和字符列表),但是如何将它们放到函数中?

1 个答案:

答案 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产生创意的地方。

相关问题