Checkpoint
This commit is contained in:
parent
39c3af4ba5
commit
da21d890fb
39 changed files with 1166 additions and 48 deletions
30
src/prolog/components/terms/Variable.kt
Normal file
30
src/prolog/components/terms/Variable.kt
Normal file
|
@ -0,0 +1,30 @@
|
|||
package prolog.components.terms
|
||||
|
||||
import java.util.Optional
|
||||
|
||||
data class Variable(val name: String): Term {
|
||||
private var alias: Optional<Term> = Optional.empty()
|
||||
|
||||
fun alias(): Optional<Term> {
|
||||
return alias
|
||||
}
|
||||
|
||||
fun bind(term: Term): Optional<Term> {
|
||||
if (alias.isEmpty) {
|
||||
alias = Optional.of(term)
|
||||
}
|
||||
|
||||
return alias
|
||||
}
|
||||
|
||||
fun unbind() {
|
||||
alias = Optional.empty()
|
||||
}
|
||||
|
||||
override fun toString(): String {
|
||||
return when {
|
||||
alias.isPresent -> "$name = ${alias.get()}"
|
||||
else -> name
|
||||
}
|
||||
}
|
||||
}
|
Reference in a new issue