Я полагаю, вы хотите, чтобы функции тестировали определенные конструкторы :
isA :: MyData -> Bool
isB :: MyData -> Bool
Если это так, то вы можете написать их самостоятельно или получить их. Реализация будет выглядеть так:
isA (A _) = True
isA _ = False
isB (B _) = True
isB _ = False
Чтобы получить их автоматически, просто используйте библиотеку производное и добавьте в свой исходный код:
{-# LANGUAGE TemplateHaskell #-}
import Data.DeriveTH
data MyData = ...
deriving (Eq, Ord, Show}
derive makeIs ''MyData
-- Older GHCs require more syntax: $( derive makeIs ''MyData)
Также обратите внимание: ваша декларация данных недействительна, имя должно быть заглавным, MyData
вместо myData
.
Наконец, весь этот ответ основан на предположении, что вы хотите тестировать конструкторы, а не типы данных, как вы сказали (которые статически проверяются во время компиляции, как сказал Тарраш).