unison-core1-0.0.0
Safe HaskellSafe-Inferred
LanguageHaskell2010

Unison.Reference

Synopsis

Documentation

type Reference = Reference' Text Hash #

This is the canonical representation of Reference

data Reference' t h #

Either a builtin or a user defined (hashed) top-level declaration. Used for both terms and types.

Bundled Patterns

pattern Builtin :: t -> Reference' t h 
pattern DerivedId :: Id' h -> Reference' t h 
pattern Derived :: h -> Pos -> Reference' t h 

Instances

Instances details
Bifoldable Reference' 
Instance details

Defined in U.Codebase.Reference

Methods

bifold :: Monoid m => Reference' m m -> m #

bifoldMap :: Monoid m => (a -> m) -> (b -> m) -> Reference' a b -> m #

bifoldr :: (a -> c -> c) -> (b -> c -> c) -> c -> Reference' a b -> c #

bifoldl :: (c -> a -> c) -> (c -> b -> c) -> c -> Reference' a b -> c #

Bifunctor Reference' 
Instance details

Defined in U.Codebase.Reference

Methods

bimap :: (a -> b) -> (c -> d) -> Reference' a c -> Reference' b d #

first :: (a -> b) -> Reference' a c -> Reference' b c #

second :: (b -> c) -> Reference' a b -> Reference' a c #

Bitraversable Reference' 
Instance details

Defined in U.Codebase.Reference

Methods

bitraverse :: Applicative f => (a -> f c) -> (b -> f d) -> Reference' a b -> f (Reference' c d) #

Functor (Reference' t) 
Instance details

Defined in U.Codebase.Reference

Methods

fmap :: (a -> b) -> Reference' t a -> Reference' t b #

(<$) :: a -> Reference' t b -> Reference' t a #

Generic (Reference' t h) 
Instance details

Defined in U.Codebase.Reference

Associated Types

type Rep (Reference' t h) :: Type -> Type #

Methods

from :: Reference' t h -> Rep (Reference' t h) x #

to :: Rep (Reference' t h) x -> Reference' t h #

(Show t, Show h) => Show (Reference' t h) 
Instance details

Defined in U.Codebase.Reference

Methods

showsPrec :: Int -> Reference' t h -> ShowS #

show :: Reference' t h -> String #

showList :: [Reference' t h] -> ShowS #

(Eq t, Eq h) => Eq (Reference' t h) 
Instance details

Defined in U.Codebase.Reference

Methods

(==) :: Reference' t h -> Reference' t h -> Bool #

(/=) :: Reference' t h -> Reference' t h -> Bool #

(Ord t, Ord h) => Ord (Reference' t h) 
Instance details

Defined in U.Codebase.Reference

Methods

compare :: Reference' t h -> Reference' t h -> Ordering #

(<) :: Reference' t h -> Reference' t h -> Bool #

(<=) :: Reference' t h -> Reference' t h -> Bool #

(>) :: Reference' t h -> Reference' t h -> Bool #

(>=) :: Reference' t h -> Reference' t h -> Bool #

max :: Reference' t h -> Reference' t h -> Reference' t h #

min :: Reference' t h -> Reference' t h -> Reference' t h #

type Rep (Reference' t h) 
Instance details

Defined in U.Codebase.Reference

type Rep (Reference' t h) = D1 ('MetaData "Reference'" "U.Codebase.Reference" "unison-core-0.0.0-7TTEaGpY3e79hYDTKjX5dL" 'False) (C1 ('MetaCons "ReferenceBuiltin" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 t)) :+: C1 ('MetaCons "ReferenceDerived" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Id' h))))

type Id = Id' Hash #

data Id' h #

Pos is a position into a cycle, as cycles are hashed together.

Constructors

Id h Pos 

Instances

Instances details
Foldable Id' 
Instance details

Defined in U.Codebase.Reference

Methods

fold :: Monoid m => Id' m -> m #

foldMap :: Monoid m => (a -> m) -> Id' a -> m #

foldMap' :: Monoid m => (a -> m) -> Id' a -> m #

foldr :: (a -> b -> b) -> b -> Id' a -> b #

foldr' :: (a -> b -> b) -> b -> Id' a -> b #

foldl :: (b -> a -> b) -> b -> Id' a -> b #

foldl' :: (b -> a -> b) -> b -> Id' a -> b #

foldr1 :: (a -> a -> a) -> Id' a -> a #

foldl1 :: (a -> a -> a) -> Id' a -> a #

toList :: Id' a -> [a] #

null :: Id' a -> Bool #

length :: Id' a -> Int #

elem :: Eq a => a -> Id' a -> Bool #

maximum :: Ord a => Id' a -> a #

minimum :: Ord a => Id' a -> a #

sum :: Num a => Id' a -> a #

product :: Num a => Id' a -> a #

Traversable Id' 
Instance details

Defined in U.Codebase.Reference

Methods

traverse :: Applicative f => (a -> f b) -> Id' a -> f (Id' b) #

sequenceA :: Applicative f => Id' (f a) -> f (Id' a) #

mapM :: Monad m => (a -> m b) -> Id' a -> m (Id' b) #

sequence :: Monad m => Id' (m a) -> m (Id' a) #

Functor Id' 
Instance details

Defined in U.Codebase.Reference

Methods

fmap :: (a -> b) -> Id' a -> Id' b #

(<$) :: a -> Id' b -> Id' a #

Show h => Show (Id' h) 
Instance details

Defined in U.Codebase.Reference

Methods

showsPrec :: Int -> Id' h -> ShowS #

show :: Id' h -> String #

showList :: [Id' h] -> ShowS #

Eq h => Eq (Id' h) 
Instance details

Defined in U.Codebase.Reference

Methods

(==) :: Id' h -> Id' h -> Bool #

(/=) :: Id' h -> Id' h -> Bool #

Ord h => Ord (Id' h) 
Instance details

Defined in U.Codebase.Reference

Methods

compare :: Id' h -> Id' h -> Ordering #

(<) :: Id' h -> Id' h -> Bool #

(<=) :: Id' h -> Id' h -> Bool #

(>) :: Id' h -> Id' h -> Bool #

(>=) :: Id' h -> Id' h -> Bool #

max :: Id' h -> Id' h -> Id' h #

min :: Id' h -> Id' h -> Id' h #

type TermReference = Reference #

A term reference.

type TermReferenceId = Id #

A term reference id.

type TypeReference = Reference #

A type declaration reference.

type TypeReferenceId = Id #

A type declaration reference id.

component :: Hash -> [k] -> [(k, Id)] Source #

components :: [(Hash, [k])] -> [(k, Id)] Source #

componentFor :: Hash -> [a] -> [(Id, a)] Source #

fromText :: Text -> Either String Reference Source #

todo: take a (Reference -> CycleSize) so that readSuffix doesn't have to parse the size from the text. examples:

builtins don’t have cycles >>> fromText "##Text.take" Right ##Text.take

derived, no cycle >>> fromText "#dqp2oi4iderlrgp2h11sgkff6drk92omo4c84dncfhg9o0jn21cli4lhga72vlchmrb2jk0b3bdc2gie1l06sqdli8ego4q0akm3au8" Right #dqp2o

derived, part of cycle >>> fromText "#dqp2oi4iderlrgp2h11sgkff6drk92omo4c84dncfhg9o0jn21cli4lhga72vlchmrb2jk0b3bdc2gie1l06sqdli8ego4q0akm3au8.12345" Right #dqp2o.12345

Errors with Left on invalid hashes >>> fromText "#invalid_hash.12345" Left "Invalid hash: "invalid_hash""