All Downloads are FREE. Search and download functionalities are using the official Maven repository.

commonMain.it.unibo.tuprolog.solve.stdlib.primitive.Write.kt Maven / Gradle / Ivy

There is a newer version: 1.0.4
Show newest version
package it.unibo.tuprolog.solve.stdlib.primitive

import it.unibo.tuprolog.core.Term
import it.unibo.tuprolog.core.TermFormatter
import it.unibo.tuprolog.core.format
import it.unibo.tuprolog.solve.ExecutionContext
import it.unibo.tuprolog.solve.primitive.Solve
import it.unibo.tuprolog.solve.primitive.UnaryPredicate

object Write : UnaryPredicate.NonBacktrackable("write") {
    override fun Solve.Request.computeOne(first: Term): Solve.Response {
        return context.outputChannels.current.let {
            if (it == null) {
                replyFail()
            } else {
                val string = first.format(TermFormatter.default(context.operators))
                return try {
                    it.write(string)
                    replySuccess()
                } catch (_: IllegalStateException) {
                    replyFail()
                }
            }
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy