2
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

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

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

4

1 回答 1

1

这里的问题是您想要类型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

在线尝试!

于 2019-04-03T12:11:21.080 回答