Portability | XXX |
---|---|
Stability | experimental |
Maintainer | Stephanie Weirich <sweirich@cis.upenn.edu> |
XXX write me
- data Name a = Nm (R a) (String, Integer)
- data AnyName = forall a . Rep a => AnyName (Name a)
- rAnyName1 :: forall ctx[a2w3]. R1 ctx[a2w3] AnyName
- rAnyName :: R AnyName
- name2 :: Rep a => Name a
- name3 :: Rep a => Name a
- name4 :: Rep a => Name a
- name5 :: Rep a => Name a
- name6 :: Rep a => Name a
- name7 :: Rep a => Name a
- name8 :: Rep a => Name a
- name9 :: Rep a => Name a
- name10 :: Rep a => Name a
- name11 :: Rep a => Name a
- name1 :: Rep a => Name a
- name2Integer :: Name a -> Integer
- name2String :: Name a -> String
- anyName2Integer :: AnyName -> Integer
- anyName2String :: AnyName -> String
- toSortedName :: Rep a => AnyName -> Maybe (Name a)
- integer2Name :: Rep a => Integer -> Name a
- string2Name :: Rep a => String -> Name a
- s2n :: Rep a => String -> Name a
- makeName :: Rep a => String -> Integer -> Name a
- getR :: Name a -> R a
- translate :: Rep b => Name a -> Name b
Documentation
Name
s are things that get bound. This type is intentionally
abstract; to create a Name
you can use string2Name
or
integer2Name
. The type parameter is a tag, or sort, which tells
us what sorts of things this name may stand for. The sort must
be an instance of the Rep
type class.
A name with a hidden (existentially quantified) sort.
name2Integer :: Name a -> IntegerSource
Get the integer index of a Name
.
name2String :: Name a -> StringSource
Get the string part of a Name
.
anyName2Integer :: AnyName -> IntegerSource
Get the integer index of an AnyName
.
anyName2String :: AnyName -> StringSource
Get the string part of an AnyName
.