如何正确使用 in Haskell zipWith 来创建 [ [ int int ] ] 列表?

How to use in Haskell zipWith correctly to create a [ [ int int ] ] list?

data Tegel = Teg Int Int
type RijTegels = [Tegel]


volleRijTegels :: RijTegels
volleRijTegels = ziptwee [21..36] (replicate 4 1 ++ replicate 4 2 ++ replicate 4 3 ++ replicate 4 4)

ziptwee :: [Int] -> [Int] -> RijTegels
ziptwee []      []    = []
ziptwee (x:xs) (y:ys) = Teg x y: ziptwee xs ys 

现在我使用两个函数,但我想用一个来完成。 我以为我可以使用 zipWith,但我似乎无法弄清楚如何。

volleRijTegels :: RijTegels
volleRijTegels = [zipWith (++) [1,2,3] [4,5,6]] -- here it is going wrong

我猜我把外括号放错了,但我不知道它们应该放在哪里。

谁能告诉我这项工作是如何完成的?

这里的问题是您想要 RijTegels 类型,但实际上您使用 zipWith (++) 创建的类型是 [[a]]。因此,要更改它,您可以使用类型构造函数而不是 (++):

data Tegel = Teg Int Int deriving (Show)
type RijTegels = [Tegel]

volleRijTegels :: RijTegels
volleRijTegels = zipWith Teg [1,2,3] [4,5,6] -- here it is going wrong

main = print volleRijTegels

Try it online!