Вы не совсем спрашивали об этом, но .. эта строка:
m (Q (C a) (C b) (C c) (C d)) (Q (C e) (C f) (C g) (C h))
Это просто ...
Много лет назад я и друг научились программировать на бейсике.Он создал очень классную игру космических кораблей.Я сказал ему, что он должен добавить больше космических кораблей, и это будет круче.Он сказал, что это тяжелая работа.Оказывается, он не знал о массивах и имел дублирование кода для каждого из 8 кораблей на экране.
Пожалуйста создайте более чистый код, что-то вроде этого:
data SplitTree a = Leaf a | SplitNode [SplitTree a]
deriving (Eq, Show)
mask :: Eq a => SplitTree a -> SplitTree a -> SplitTree Bool
mask (Leaf x) (Leaf y) = Leaf (x == y)
mask (SplitNode xs) (SplitNode ys)
| and $ zipWith (==) xs ys = Leaf False
| otherwise = SplitNode $ zipWith mask xs xs
(я не уверен на 100%, что это то, что вы пытались сделать, но я мог или не мог преднамеренно внести некоторые простые ошибки в этот код, поскольку мне не нравится делать домашнюю работу)
Написание хорошего кода облегчает его получение.Если это не правильно, то ошибки легче найти.
Трудно помочь вам с этим беспорядком.Самый простой способ исправить такой беспорядок - это переписать.Разве это не пустая трата времени?
Прежде чем вы решите небольшую проблему, связанную с неработающим кодом, пожалуйста, решите огромную проблему беспорядка.Я и другие испытывали много страданий, поддерживая не поддерживаемый код, , пожалуйста , попробуйте сделать хороший код.