{-# LANGUAGE DataKinds #-}

module Unison.KindInference.UVar
  ( UVar (..),
  )
where

import Unison.Symbol
import Unison.Type qualified as T

data UVar v loc = UVar
  { forall v loc. UVar v loc -> Symbol
_uvarSymbol :: Symbol,
    forall v loc. UVar v loc -> Type v loc
uvarType :: T.Type v loc
  }
  deriving stock (UVar v loc -> UVar v loc -> Bool
(UVar v loc -> UVar v loc -> Bool)
-> (UVar v loc -> UVar v loc -> Bool) -> Eq (UVar v loc)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall v loc. Var v => UVar v loc -> UVar v loc -> Bool
$c== :: forall v loc. Var v => UVar v loc -> UVar v loc -> Bool
== :: UVar v loc -> UVar v loc -> Bool
$c/= :: forall v loc. Var v => UVar v loc -> UVar v loc -> Bool
/= :: UVar v loc -> UVar v loc -> Bool
Eq, Eq (UVar v loc)
Eq (UVar v loc) =>
(UVar v loc -> UVar v loc -> Ordering)
-> (UVar v loc -> UVar v loc -> Bool)
-> (UVar v loc -> UVar v loc -> Bool)
-> (UVar v loc -> UVar v loc -> Bool)
-> (UVar v loc -> UVar v loc -> Bool)
-> (UVar v loc -> UVar v loc -> UVar v loc)
-> (UVar v loc -> UVar v loc -> UVar v loc)
-> Ord (UVar v loc)
UVar v loc -> UVar v loc -> Bool
UVar v loc -> UVar v loc -> Ordering
UVar v loc -> UVar v loc -> UVar v loc
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
forall v loc. Var v => Eq (UVar v loc)
forall v loc. Var v => UVar v loc -> UVar v loc -> Bool
forall v loc. Var v => UVar v loc -> UVar v loc -> Ordering
forall v loc. Var v => UVar v loc -> UVar v loc -> UVar v loc
$ccompare :: forall v loc. Var v => UVar v loc -> UVar v loc -> Ordering
compare :: UVar v loc -> UVar v loc -> Ordering
$c< :: forall v loc. Var v => UVar v loc -> UVar v loc -> Bool
< :: UVar v loc -> UVar v loc -> Bool
$c<= :: forall v loc. Var v => UVar v loc -> UVar v loc -> Bool
<= :: UVar v loc -> UVar v loc -> Bool
$c> :: forall v loc. Var v => UVar v loc -> UVar v loc -> Bool
> :: UVar v loc -> UVar v loc -> Bool
$c>= :: forall v loc. Var v => UVar v loc -> UVar v loc -> Bool
>= :: UVar v loc -> UVar v loc -> Bool
$cmax :: forall v loc. Var v => UVar v loc -> UVar v loc -> UVar v loc
max :: UVar v loc -> UVar v loc -> UVar v loc
$cmin :: forall v loc. Var v => UVar v loc -> UVar v loc -> UVar v loc
min :: UVar v loc -> UVar v loc -> UVar v loc
Ord, Int -> UVar v loc -> ShowS
[UVar v loc] -> ShowS
UVar v loc -> String
(Int -> UVar v loc -> ShowS)
-> (UVar v loc -> String)
-> ([UVar v loc] -> ShowS)
-> Show (UVar v loc)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall v loc. Show v => Int -> UVar v loc -> ShowS
forall v loc. Show v => [UVar v loc] -> ShowS
forall v loc. Show v => UVar v loc -> String
$cshowsPrec :: forall v loc. Show v => Int -> UVar v loc -> ShowS
showsPrec :: Int -> UVar v loc -> ShowS
$cshow :: forall v loc. Show v => UVar v loc -> String
show :: UVar v loc -> String
$cshowList :: forall v loc. Show v => [UVar v loc] -> ShowS
showList :: [UVar v loc] -> ShowS
Show)