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

commonMain.it.unibo.tuprolog.solve.classic.impl.HijackableSolutionIterator.kt Maven / Gradle / Ivy

Go to download

Stable, state-machine-based implementation of Prolog's SLDNF resolution principle

There is a newer version: 1.0.4
Show newest version
package it.unibo.tuprolog.solve.classic.impl

import it.unibo.tuprolog.solve.classic.MutableSolutionIterator
import it.unibo.tuprolog.solve.classic.fsm.State

internal class HijackableSolutionIterator(
    state: State,
    private val hijackStateTransitionCallback: (State, State, Long) -> State,
    private val onStateTransitionCallback: (State, State, Long) -> Unit,
) : AbstractSolutionIterator(state), MutableSolutionIterator {
    override fun computeNextState(
        state: State,
        step: Long,
    ): State = hijackStateTransition(state, state.next(), step)

    override fun hijackStateTransition(
        source: State,
        destination: State,
        index: Long,
    ): State = hijackStateTransitionCallback(source, destination, index)

    override fun onStateTransition(
        source: State,
        destination: State,
        index: Long,
    ) = onStateTransitionCallback(source, destination, index)
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy