finos/morphir-ir/versions/v3 does not have a README file

    AccessControlled

    Constructors

    Mutable linked hash map that maintains the order of insertion, not thread safe.

    Example

    test {
    let map = { 3: "three", 8: "eight", 1: "one" }
    @test.assert_eq(map.get(2), None)
    @test.assert_eq(map.get(3), Some("three"))
    map.set(3, "updated")
    @test.assert_eq(map.get(3), Some("updated"))
    }

    Dependencies

    Mutable linked hash map that maintains the order of insertion, not thread safe.

    Example

    test {
    let map = { 3: "three", 8: "eight", 1: "one" }
    @test.assert_eq(map.get(2), None)
    @test.assert_eq(map.get(3), Some("three"))
    map.set(3, "updated")
    @test.assert_eq(map.get(3), Some("updated"))
    }

    ModuleName

    using @finos/morphir-ir/common { type Path as ModuleName }

    Name

    Immutable storage keeps names safe as map keys.

    NameError

    NameSegment

    A word and an initialism remain distinct in the semantic name.

    PackageName

    using @finos/morphir-ir/common { type Path as PackageName }

    RawValue

    type RawValue = Value[Unit, Unit]

    TypedValue

    type TypedValue = Value[Unit, Type[Unit]]

    DerivedTypeDetails

    pub(all) struct DerivedTypeDetails[A] {
    base_type : Type[A]
    from_base_type :
    FQName

    to_base_type :
    FQName

    } derive(Eq,
    Debug
    )

    DerivedTypeDetails::equal

    DerivedTypeDetails::not_equal

    fn[A : Eq] DerivedTypeDetails::not_equal(x : DerivedTypeDetails[A], y : DerivedTypeDetails[A]) -> Bool

    Documented

    pub(all) struct Documented[A] {
    doc : String
    value : A
    } derive(Eq,
    Debug
    )

    Elm documentation defaults to the empty string when its wrapper is absent.

    Documented::equal

    fn[A : Eq] Documented::equal(Documented[A], Documented[A]) -> Bool

    Documented::not_equal

    fn[A : Eq] Documented::not_equal(x : Documented[A], y : Documented[A]) -> Bool

    Field

    pub(all) struct Field[A] {
    name :
    Name

    tpe : Type[A]
    } derive(Eq,
    Debug
    )

    Field::equal

    fn[A : Eq] Field::equal(Field[A], Field[A]) -> Bool

    Field::not_equal

    fn[A : Eq] Field::not_equal(x : Field[A], y : Field[A]) -> Bool

    IRFile

    An envelope cannot be constructed with a mismatching format family.

    IRFile::equal

    fn IRFile::equal(IRFile, IRFile) -> Bool

    IRFile::not_equal

    fn IRFile::not_equal(x : IRFile, y : IRFile) -> Bool

    IRFile::to_repr

    Literal

    pub(all) enum Literal {
    BoolLiteral(Bool)
    CharLiteral(Char)
    StringLiteral(String)
    WholeNumberLiteral(String)
    FloatLiteral(Double)
    DecimalLiteral(String)
    } derive(Eq,
    Debug
    )

    Integer and decimal lexemes retain their precision and decimal scale.

    Literal::equal

    fn Literal::equal(Literal, Literal) -> Bool

    Literal::not_equal

    fn Literal::not_equal(x : Literal, y : Literal) -> Bool

    Literal::to_repr

    ModuleDefinition

    ModuleDefinition::equal

    fn[TA : Eq, VA : Eq] ModuleDefinition::equal(ModuleDefinition[TA, VA], ModuleDefinition[TA, VA]) -> Bool

    ModuleDefinition::not_equal

    fn[TA : Eq, VA : Eq] ModuleDefinition::not_equal(x : ModuleDefinition[TA, VA], y : ModuleDefinition[TA, VA]) -> Bool

    ModuleSpecification

    ModuleSpecification::equal

    ModuleSpecification::not_equal

    fn[TA : Eq] ModuleSpecification::not_equal(x : ModuleSpecification[TA], y : ModuleSpecification[TA]) -> Bool

    PackageDefinition

    PackageDefinition::equal

    fn[TA : Eq, VA : Eq] PackageDefinition::equal(PackageDefinition[TA, VA], PackageDefinition[TA, VA]) -> Bool

    PackageDefinition::not_equal

    fn[TA : Eq, VA : Eq] PackageDefinition::not_equal(x : PackageDefinition[TA, VA], y : PackageDefinition[TA, VA]) -> Bool

    PackageSpecification

    pub(all) struct PackageSpecification[TA] {
    modules : Map[
    Path
    , ModuleSpecification[TA]]
    } derive(Eq,
    Debug
    )

    PackageSpecification::equal

    PackageSpecification::not_equal

    fn[TA : Eq] PackageSpecification::not_equal(x : PackageSpecification[TA], y : PackageSpecification[TA]) -> Bool

    Pattern

    pub(all) enum Pattern[A] {
    WildcardPattern(A)
    AsPattern(A, Pattern[A],
    Name
    )
    TuplePattern(A, Array[Pattern[A]])
    ConstructorPattern(A,
    FQName
    , Array[Pattern[A]])
    EmptyListPattern(A)
    HeadTailPattern(A, Pattern[A], Pattern[A])
    LiteralPattern(A, Literal)
    UnitPattern(A)
    } derive(Eq,
    Debug
    )

    Pattern::equal

    fn[A : Eq] Pattern::equal(Pattern[A], Pattern[A]) -> Bool

    Pattern::not_equal

    fn[A : Eq] Pattern::not_equal(x : Pattern[A], y : Pattern[A]) -> Bool

    Type

    pub(all) enum Type[A] {
    Variable(A,
    Name
    )
    Reference(A,
    FQName
    , Array[Type[A]])
    Tuple(A, Array[Type[A]])
    Record(A, Array[Field[A]])
    ExtensibleRecord(A,
    Name
    , Array[Field[A]])
    Function(A, Type[A], Type[A])
    Unit(A)
    } derive(Eq,
    Debug
    )

    Type::equal

    fn[A : Eq] Type::equal(Type[A], Type[A]) -> Bool

    Type::map_attributes

    fn[A, B] Type::map_attributes(self : Type[A], f : (A) -> B) -> Type[B]

    Type::not_equal

    fn[A : Eq] Type::not_equal(x : Type[A], y : Type[A]) -> Bool

    TypeDefinition

    TypeDefinition::equal

    fn[A : Eq] TypeDefinition::equal(TypeDefinition[A], TypeDefinition[A]) -> Bool

    TypeDefinition::not_equal

    fn[A : Eq] TypeDefinition::not_equal(x : TypeDefinition[A], y : TypeDefinition[A]) -> Bool

    TypeDefinition::to_specification

    fn[A] TypeDefinition::to_specification(self : TypeDefinition[A]) -> TypeSpecification[A]

    Public constructors appear in the specification; private ones become opaque.

    TypeSpecification

    TypeSpecification::equal

    TypeSpecification::not_equal

    fn[A : Eq] TypeSpecification::not_equal(x : TypeSpecification[A], y : TypeSpecification[A]) -> Bool

    Value

    pub(all) enum Value[TA, VA] {
    Literal(VA, Literal)
    Constructor(VA,
    FQName
    )
    Tuple(VA, Array[Value[TA, VA]])
    List(VA, Array[Value[TA, VA]])
    Record(VA, Map[
    Name
    , Value[TA, VA]])
    Variable(VA,
    Name
    )
    Reference(VA,
    FQName
    )
    Field(VA, Value[TA, VA],
    Name
    )
    FieldFunction(VA,
    Name
    )
    Apply(VA, Value[TA, VA], Value[TA, VA])
    Lambda(VA, Pattern[VA], Value[TA, VA])
    LetDefinition(VA,
    Name
    , ValueDefinition[TA, VA], Value[TA, VA])
    LetRecursion(VA, Map[
    Name
    , ValueDefinition[TA, VA]], Value[TA, VA])
    Destructure(VA, Pattern[VA], Value[TA, VA], Value[TA, VA])
    IfThenElse(VA, Value[TA, VA], Value[TA, VA], Value[TA, VA])
    PatternMatch(VA, Value[TA, VA], Array[(Pattern[VA], Value[TA, VA])])
    UpdateRecord(VA, Value[TA, VA], Map[
    Name
    , Value[TA, VA]])
    Unit(VA)
    } derive(Eq,
    Debug
    )

    Value::equal

    fn[TA : Eq, VA : Eq] Value::equal(Value[TA, VA], Value[TA, VA]) -> Bool

    Value::not_equal

    fn[TA : Eq, VA : Eq] Value::not_equal(x : Value[TA, VA], y : Value[TA, VA]) -> Bool

    ValueDefinition

    pub(all) struct ValueDefinition[TA, VA] {
    input_types : Array[(
    Name
    , VA, Type[TA])]
    output_type : Type[TA]
    body : Value[TA, VA]
    } derive(Eq,
    Debug
    )

    ValueDefinition::equal

    fn[TA : Eq, VA : Eq] ValueDefinition::equal(ValueDefinition[TA, VA], ValueDefinition[TA, VA]) -> Bool

    ValueDefinition::not_equal

    fn[TA : Eq, VA : Eq] ValueDefinition::not_equal(x : ValueDefinition[TA, VA], y : ValueDefinition[TA, VA]) -> Bool

    ValueDefinition::to_specification

    fn[TA, VA] ValueDefinition::to_specification(self : ValueDefinition[TA, VA]) -> ValueSpecification[TA]

    ValueSpecification

    pub(all) struct ValueSpecification[TA] {
    inputs : Array[(
    Name
    , Type[TA])]
    output : Type[TA]
    } derive(Eq,
    Debug
    )

    ValueSpecification::equal

    ValueSpecification::not_equal

    fn[TA : Eq] ValueSpecification::not_equal(x : ValueSpecification[TA], y : ValueSpecification[TA]) -> Bool