Как проверить, была ли переменная построена с помощью конструктора? - PullRequest
3 голосов
/ 10 июля 2019

Учитывая

type Bla = A Int | B Int

valA1 = A 1
valA2 = A 2

, могу ли я проверить, был ли valA1 построен с помощью конструктора valA2?

1 Ответ

6 голосов
/ 10 июля 2019

Универсального способа сравнения конструкторов не существует, но вы можете легко собрать свою собственную функцию:

isSameBlaConstructor : Bla -> Bla -> Bool
isSameBlaConstructor x y =
    case (x, y) of
        (A _, A _) -> True
        (B _, B _) -> True
        _ -> False
...