clash-lib-1.8.1: Clash: a functional hardware description language - As a library
Copyright(C) 2012-2016 University of Twente
2021 QBayLogic B.V.
LicenseBSD2 (see the file LICENSE)
MaintainerQBayLogic B.V. <devops@qbaylogic.com>
Safe HaskellNone
LanguageHaskell2010

Clash.Core.TyCon

Description

Type Constructors in CoreHW

Synopsis

Documentation

data TyCon Source #

Type Constructor

Constructors

AlgTyCon

Algorithmic DataCons

Fields

PromotedDataCon 

Fields

FunTyCon

Function TyCons (e.g. type families)

Fields

PrimTyCon

Primitive TyCons

Fields

Instances

Instances details
Eq TyCon Source # 
Instance details

Defined in Clash.Core.TyCon

Methods

(==) :: TyCon -> TyCon -> Bool Source #

(/=) :: TyCon -> TyCon -> Bool Source #

Show TyCon Source # 
Instance details

Defined in Clash.Core.TyCon

Generic TyCon Source # 
Instance details

Defined in Clash.Core.TyCon

Associated Types

type Rep TyCon :: Type -> Type Source #

Methods

from :: TyCon -> Rep TyCon x Source #

to :: Rep TyCon x -> TyCon Source #

Binary TyCon Source # 
Instance details

Defined in Clash.Core.TyCon

NFData TyCon Source # 
Instance details

Defined in Clash.Core.TyCon

Methods

rnf :: TyCon -> () Source #

Uniquable TyCon Source # 
Instance details

Defined in Clash.Core.TyCon

PrettyPrec TyCon Source # 
Instance details

Defined in Clash.Core.Pretty

HasType TyCon Source # 
Instance details

Defined in Clash.Core.HasType

type Rep TyCon Source # 
Instance details

Defined in Clash.Core.TyCon

type Rep TyCon = D1 ('MetaData "TyCon" "Clash.Core.TyCon" "clash-lib-1.8.1-inplace" 'False) ((C1 ('MetaCons "AlgTyCon" 'PrefixI 'True) ((S1 ('MetaSel ('Just "tyConUniq") 'SourceUnpack 'SourceStrict 'DecidedStrict) (Rec0 Unique) :*: (S1 ('MetaSel ('Just "tyConName") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TyConName) :*: S1 ('MetaSel ('Just "tyConKind") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Kind))) :*: (S1 ('MetaSel ('Just "tyConArity") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Int) :*: (S1 ('MetaSel ('Just "algTcRhs") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 AlgTyConRhs) :*: S1 ('MetaSel ('Just "isClassTc") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Bool)))) :+: C1 ('MetaCons "PromotedDataCon" 'PrefixI 'True) ((S1 ('MetaSel ('Just "tyConUniq") 'SourceUnpack 'SourceStrict 'DecidedStrict) (Rec0 Unique) :*: S1 ('MetaSel ('Just "tyConName") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TyConName)) :*: (S1 ('MetaSel ('Just "tyConKind") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Kind) :*: (S1 ('MetaSel ('Just "tyConArity") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Int) :*: S1 ('MetaSel ('Just "tyConData") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 DataCon))))) :+: (C1 ('MetaCons "FunTyCon" 'PrefixI 'True) ((S1 ('MetaSel ('Just "tyConUniq") 'SourceUnpack 'SourceStrict 'DecidedStrict) (Rec0 Unique) :*: S1 ('MetaSel ('Just "tyConName") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TyConName)) :*: (S1 ('MetaSel ('Just "tyConKind") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Kind) :*: (S1 ('MetaSel ('Just "tyConArity") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Int) :*: S1 ('MetaSel ('Just "tyConSubst") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [([Type], Type)])))) :+: C1 ('MetaCons "PrimTyCon" 'PrefixI 'True) ((S1 ('MetaSel ('Just "tyConUniq") 'SourceUnpack 'SourceStrict 'DecidedStrict) (Rec0 Unique) :*: S1 ('MetaSel ('Just "tyConName") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TyConName)) :*: (S1 ('MetaSel ('Just "tyConKind") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Kind) :*: S1 ('MetaSel ('Just "tyConArity") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Int)))))

type TyConName = Name TyCon Source #

TyCon reference

data AlgTyConRhs Source #

The RHS of an Algebraic Datatype

Constructors

DataTyCon 

Fields

NewTyCon 

Fields

  • dataCon :: !DataCon

    The newtype DataCon

  • ntEtadRhs :: ([TyVar], Type)

    The argument type of the newtype DataCon in eta-reduced form, which is just the representation of the TyCon. The TyName's are the type-variables from the corresponding TyCon.

Instances

Instances details
Show AlgTyConRhs Source # 
Instance details

Defined in Clash.Core.TyCon

Generic AlgTyConRhs Source # 
Instance details

Defined in Clash.Core.TyCon

Associated Types

type Rep AlgTyConRhs :: Type -> Type Source #

Binary AlgTyConRhs Source # 
Instance details

Defined in Clash.Core.TyCon

NFData AlgTyConRhs Source # 
Instance details

Defined in Clash.Core.TyCon

Methods

rnf :: AlgTyConRhs -> () Source #

type Rep AlgTyConRhs Source # 
Instance details

Defined in Clash.Core.TyCon

type Rep AlgTyConRhs = D1 ('MetaData "AlgTyConRhs" "Clash.Core.TyCon" "clash-lib-1.8.1-inplace" 'False) (C1 ('MetaCons "DataTyCon" 'PrefixI 'True) (S1 ('MetaSel ('Just "dataCons") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [DataCon])) :+: C1 ('MetaCons "NewTyCon" 'PrefixI 'True) (S1 ('MetaSel ('Just "dataCon") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 DataCon) :*: S1 ('MetaSel ('Just "ntEtadRhs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ([TyVar], Type))))

mkKindTyCon :: TyConName -> Kind -> TyCon Source #

Create a Kind out of a TyConName

isTupleTyConLike :: TyConName -> Bool Source #

Does the TyCon look like a tuple TyCon

tyConDataCons :: TyCon -> [DataCon] Source #

Get the DataCons belonging to a TyCon