Ref

interface Ref : Atom

A Prolog Atom that also acts as a reflective handle onto some JVM/Kotlin entity -- either a live object (ObjectRef) or a type (TypeRef) -- letting Prolog code invoke members and assign properties on it without a hand-written it.unibo.tuprolog.solve.primitive.Primitive for each one.

This is the core abstraction :oop-lib uses to expose reflection to Prolog: predicates such as invoke_method/3 (it.unibo.tuprolog.solve.libs.oop.primitives.InvokeMethod) and assign/3 (it.unibo.tuprolog.solve.libs.oop.primitives.Assign) simply delegate to invoke and assign on whichever Ref they are given.

See also

Inheritors

Properties

Link copied to clipboard
open override val args: List<Term>
Link copied to clipboard
Link copied to clipboard
open override val arity: Int
Link copied to clipboard
abstract val functor: String
Link copied to clipboard
Link copied to clipboard
open override val isAtom: Boolean
Link copied to clipboard
open override val isBlock: Boolean
Link copied to clipboard
open override val isClause: Boolean
Link copied to clipboard
open override val isCons: Boolean
Link copied to clipboard
Link copied to clipboard
open override val isDirective: Boolean
Link copied to clipboard
open override val isEmptyBlock: Boolean
Link copied to clipboard
open override val isEmptyList: Boolean
Link copied to clipboard
open override val isFact: Boolean
Link copied to clipboard
open override val isFail: Boolean
Link copied to clipboard
Link copied to clipboard
open val isGround: Boolean
Link copied to clipboard
open override val isIndicator: Boolean
Link copied to clipboard
open val isInteger: Boolean
Link copied to clipboard
open override val isList: Boolean
Link copied to clipboard
open val isNumber: Boolean
Link copied to clipboard
open val isReal: Boolean
Link copied to clipboard
Link copied to clipboard
open override val isRule: Boolean
Link copied to clipboard
open override val isStruct: Boolean
Link copied to clipboard
open override val isTrue: Boolean
Link copied to clipboard
open val isTruth: Boolean
Link copied to clipboard
open override val isTuple: Boolean
Link copied to clipboard
open val isVar: Boolean
Link copied to clipboard
abstract val tags: Map<String, Any>
Link copied to clipboard
open override val value: String
Link copied to clipboard
open override val variables: Sequence<Var>

Functions

Link copied to clipboard
abstract fun <T> accept(visitor: TermVisitor<T>): T
Link copied to clipboard
abstract fun addFirst(argument: Term): Struct
Link copied to clipboard
abstract fun addLast(argument: Term): Struct
Link copied to clipboard
open fun append(argument: Term): Struct
Link copied to clipboard
abstract fun apply(substitution: Substitution): Term
open fun apply(substitution: Substitution, vararg substitutions: Substitution): Term
Link copied to clipboard
open override fun <T : Term> as(): T?
Link copied to clipboard
open override fun asAtom(): Atom
Link copied to clipboard
open fun asBlock(): Block?
Link copied to clipboard
open fun asClause(): Clause?
Link copied to clipboard
open fun asCons(): Cons?
Link copied to clipboard
open fun asConstant(): Constant
Link copied to clipboard
open fun asDirective(): Directive?
Link copied to clipboard
Link copied to clipboard
open fun asEmptyList(): EmptyList?
Link copied to clipboard
open fun asFact(): Fact?
Link copied to clipboard
open fun asIndicator(): Indicator?
Link copied to clipboard
open fun asInteger(): Integer?
Link copied to clipboard
open fun asList(): List?
Link copied to clipboard
open fun asNumeric(): Numeric?
Link copied to clipboard
open fun asReal(): Real?
Link copied to clipboard
open fun asRecursive(): Recursive?
Link copied to clipboard
open fun asRule(): Rule?
Link copied to clipboard
open fun assign(propertyName: String, value: Term): Boolean

Like assign, but converting value via TermToObjectConverter.default.

abstract fun assign(objectConverter: TermToObjectConverter, propertyName: String, value: Term): Boolean

Assigns value (converted via objectConverter) to the mutable property named propertyName on this reference, selecting the overload whose type best matches value.

Link copied to clipboard
open override fun asStruct(): Struct
Link copied to clipboard
open fun asTerm(): Term
Link copied to clipboard
open fun asTruth(): Truth?
Link copied to clipboard
open fun asTuple(): Tuple?
Link copied to clipboard
open fun asVar(): Var?
Link copied to clipboard
open override fun <T : Term> castTo(): T
Link copied to clipboard
open fun castToAtom(): Atom
Link copied to clipboard
open fun castToBlock(): Block
Link copied to clipboard
open fun castToClause(): Clause
Link copied to clipboard
open fun castToCons(): Cons
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun castToFact(): Fact
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun castToList(): List
Link copied to clipboard
Link copied to clipboard
open fun castToReal(): Real
Link copied to clipboard
Link copied to clipboard
open fun castToRule(): Rule
Link copied to clipboard
open fun castToStruct(): Struct
Link copied to clipboard
open fun castToTerm(): Term
Link copied to clipboard
open fun castToTruth(): Truth
Link copied to clipboard
open fun castToTuple(): Tuple
Link copied to clipboard
open fun castToVar(): Var
Link copied to clipboard
open operator override fun compareTo(other: Term): Int
Link copied to clipboard
open fun containsTag(name: String): Boolean
Link copied to clipboard
abstract operator override fun equals(other: Any?): Boolean
abstract fun equals(other: Term, useVarCompleteName: Boolean): Boolean
Link copied to clipboard
abstract override fun freshCopy(): Atom
abstract override fun freshCopy(scope: Scope): Atom
Link copied to clipboard
open operator fun get(substitution: Substitution, vararg substitutions: Substitution): Term
open operator fun get(index: Int): Term
Link copied to clipboard
open fun getArgAt(index: Int): Term
Link copied to clipboard
open fun <T : Any> getTag(name: String): T?
Link copied to clipboard
abstract override fun hashCode(): Int
Link copied to clipboard
abstract fun insertAt(index: Int, argument: Term): Struct
Link copied to clipboard
open fun invoke(methodName: String, arguments: Iterable<Term>): Result
open fun invoke(methodName: String, arguments: List<Term>): Result
open fun invoke(methodName: String, arguments: Sequence<Term>): Result
open fun invoke(objectConverter: TermToObjectConverter, methodName: String, arguments: Iterable<Term>): Result
abstract fun invoke(objectConverter: TermToObjectConverter, methodName: String, arguments: List<Term>): Result
open fun invoke(objectConverter: TermToObjectConverter, methodName: String, arguments: Sequence<Term>): Result

open fun invoke(methodName: String, vararg arguments: Term): Result
open fun invoke(objectConverter: TermToObjectConverter, methodName: String, vararg arguments: Term): Result

Invokes the (possibly overloaded) member named methodName on this reference, converting arguments to actual JVM/Kotlin values via objectConverter and picking the overload whose formal parameters best match them.

Link copied to clipboard
abstract fun replaceTags(tags: Map<String, Any>): Term
Link copied to clipboard
abstract fun setArgs(args: Iterable<Term>): Struct
abstract fun setArgs(args: Sequence<Term>): Struct
abstract fun setArgs(vararg args: Term): Struct
Link copied to clipboard
abstract fun setFunctor(functor: String): Struct
Link copied to clipboard
abstract infix fun structurallyEquals(other: Term): Boolean
Link copied to clipboard
abstract override fun toString(): String