Можно ли отлаживать сопоставление с образцом в функции Haskell?

Я определил тип

data Expr = 
    Const Double
    | Add Expr Expr
    | Sub Expr Expr

и объявил его экземпляром класса типов Eq:

instance Eq Expr where
    (Add (Const a1) (Const a2)) == Const b = a1+a2 == b
    (Add (Const a1) (Const a2)) == (Add (Const b1) (Const b2)) = a1+a2 == b1 + b2

. Конечно, вычисление выражения Sub (Const 1) (Const 1) == Const 0не удастся. Как я могу отладить во время выполнения процесс сопоставления с образцом, чтобы обнаружить его сбой? Я хотел бы посмотреть, как Haskell принимает аргументы ==и проходит по шаблонам. Это вообще возможно?

8
задан quant_dev 30 March 2012 в 19:42
поделиться