clash-lib-0.99.3: CAES Language for Synchronous Hardware - As a Library

Copyright(C) 2012-2016 University of Twente
2017 Google Inc.
LicenseBSD2 (see the file LICENSE)
MaintainerChristiaan Baaij <christiaan.baaij@gmail.com>
Safe HaskellNone
LanguageHaskell2010

Clash.Core.Var

Description

Variables in CoreHW

Synopsis

Documentation

data Var a Source #

Variables in CoreHW

Constructors

TyVar

Constructor for type variables

Fields

Id

Constructor for term variables

Fields

Instances
Generic b => Subst Term (Var b) Source # 
Instance details

Methods

isvar :: Var b -> Maybe (SubstName (Var b) Term) #

isCoerceVar :: Var b -> Maybe (SubstCoerce (Var b) Term) #

subst :: Name Term -> Term -> Var b -> Var b #

substs :: [(Name Term, Term)] -> Var b -> Var b #

Generic b => Subst Type (Var b) Source # 
Instance details

Methods

isvar :: Var b -> Maybe (SubstName (Var b) Type) #

isCoerceVar :: Var b -> Maybe (SubstCoerce (Var b) Type) #

subst :: Name Type -> Type -> Var b -> Var b #

substs :: [(Name Type, Type)] -> Var b -> Var b #

Eq (Var a) Source # 
Instance details

Methods

(==) :: Var a -> Var a -> Bool #

(/=) :: Var a -> Var a -> Bool #

Show (Var a) Source # 
Instance details

Methods

showsPrec :: Int -> Var a -> ShowS #

show :: Var a -> String #

showList :: [Var a] -> ShowS #

Generic (Var a) Source # 
Instance details

Associated Types

type Rep (Var a) :: * -> * #

Methods

from :: Var a -> Rep (Var a) x #

to :: Rep (Var a) x -> Var a #

Hashable (Var a) Source # 
Instance details

Methods

hashWithSalt :: Int -> Var a -> Int #

hash :: Var a -> Int #

NFData (Var a) Source # 
Instance details

Methods

rnf :: Var a -> () #

(Typeable a, Alpha a) => Alpha (Var a) Source # 
Instance details

Methods

aeq' :: AlphaCtx -> Var a -> Var a -> Bool #

fvAny' :: (Contravariant f, Applicative f) => AlphaCtx -> (AnyName -> f AnyName) -> Var a -> f (Var a) #

close :: AlphaCtx -> NamePatFind -> Var a -> Var a #

open :: AlphaCtx -> NthPatFind -> Var a -> Var a #

isPat :: Var a -> DisjointSet AnyName #

isTerm :: Var a -> All #

isEmbed :: Var a -> Bool #

nthPatFind :: Var a -> NthPatFind #

namePatFind :: Var a -> NamePatFind #

swaps' :: AlphaCtx -> Perm AnyName -> Var a -> Var a #

lfreshen' :: LFresh m => AlphaCtx -> Var a -> (Var a -> Perm AnyName -> m b) -> m b #

freshen' :: Fresh m => AlphaCtx -> Var a -> m (Var a, Perm AnyName) #

acompare' :: AlphaCtx -> Var a -> Var a -> Ordering #

Pretty (Var Term) Source # 
Instance details

Methods

ppr :: LFresh m => Var Term -> m Doc Source #

pprPrec :: LFresh m => Rational -> Var Term -> m Doc Source #

Pretty (Var Type) Source # 
Instance details

Methods

ppr :: LFresh m => Var Type -> m Doc Source #

pprPrec :: LFresh m => Rational -> Var Type -> m Doc Source #

Pretty (Id, Term) Source # 
Instance details

Methods

ppr :: LFresh m => (Id, Term) -> m Doc Source #

pprPrec :: LFresh m => Rational -> (Id, Term) -> m Doc Source #

type Rep (Var a) Source # 
Instance details

type Id = Var Term Source #

Term variable

type TyVar = Var Type Source #

Type variable

modifyVarName :: (Name a -> Name a) -> Var a -> Var a Source #

Change the name of a variable