moniker
moniker copied to clipboard
Suppport multiple identifier namespaces
This would be useful for languages where the are multiple namespaces. Examples would be Rust, Haskell, or Elm, where values and types can share names, but point to different things. Eg:
data Foo a = Foo a Int
Foo
points to either:
- the type constructor
Foo :: Type -> Type
- the value constructor
Foo :: forall a . a -> Int -> Foo a
Unbound manages this by adding a phantom type parameter to its Name
type. So you could have either Name Type
or Name Expr
.