Для игры на Haskell Tic Tac Toe я пытаюсь собрать две Розы.Я определил розовое дерево как
data Rose a = a :> [Rose a]
Я попробовал следующее:
zipTrees :: Rose Board -> Rose Int -> Rose (Board, Int)
zipTrees (b :> []) (i :> []) = (b,i) :> []
zipTrees (b :> chib) (i :> chii) = (b, i) :> zipTrees chib chii
, но возникает ошибка, поскольку он не может соответствовать ожидаемым типам Rose Int
и Rose Board
с [Rose Int]
и [Rose Board]
соответственно.Я не знаю, как сжать деревья любым другим способом.
Чтобы проиллюстрировать это, если я хочу сжать деревья
a :> [a :> [a :> []], a :> []]
и b :> [b :> [b :> []], b :> []]
, я хочу вернутьдерево
(a, b) :> [(a, b) :> [(a, b) :> []], (a,b) :> []]