Unifiable
public enum Unifiable<Element: Equatable>
Recursively unifiable type that allows for representation of both variables and constant values. May be used as a building block to build tree-like unification types.
-
A value that cannot be changed.
Declaration
Swift
case Constant(Element)
-
A value that is determined by unification.
Declaration
Swift
case Variable(Binding<Element>)
-
The current value otherwise
nilif it is undetermined.Declaration
Swift
public var value: Element?
-
A textual representation of the value or the binding if no value exists.
Declaration
Swift
public var description: String
-
Unifies
lhswithrhs, otherwise throws aUnificationError.Declaration
Swift
public static func unify(lhs: Unifiable, _ rhs: Unifiable) throws -
Performs
actionas an operation onselfsuch that theselfpreserves its initialgluevalue if the operation fails.Declaration
Swift
public static func attempt(value: Unifiable, _ action: () throws -> ()) throws
-
Recursively unifies
lhswithrhs, otherwise throws aUnificationError.Declaration
Swift
public static func unify(lhs: Unifiable, _ rhs: Unifiable) throws -
Performs
actionas an operation onselfsuch that theselfpreserves its initialgluevalue if the operation fails.Declaration
Swift
public static func attempt(value: Unifiable, _ action: () throws -> ()) throws
-
Copies
thisreusing any substructure that has already been copied within this context, and storing any newly generated substructure into the context.Declaration
Swift
public static func copy(this: Unifiable, withContext context: CopyContext) -> Unifiable
-
Copies
thisreusing any substructure that has already been copied within this context, and storing any newly generated substructure into the context.Declaration
Swift
public static func copy(this: Unifiable, withContext context: CopyContext) -> Unifiable
View on GitHub
Unifiable Enum Reference