Эквивалент сообщений зависимых типов методов

Благодаря этому сообщению, я разобрался с зависимыми типами методов. У меня есть структура, похожая на следующую

trait Environment{
    type Population <: PopulationBase
    protected trait PopulationBase

    def evolveUs(population: Population): Population
}

object FactoredOut{
    def evolvePopulation(env: Environment)(prevPopulation: env.Population): env.Population = {
        env.evolveUs(prevPopulation)
    }
}

Теперь я хочу начать использовать акторов для распространения работы в части FactoredOutпо кластеру. Для этого мне нужен способ передачи неизменяемых сообщений, которые содержат Environment.

Очевидно следующее не работает, но демонстрирует то, что я пытаюсь сделать

object Messages{
    case class EvolvePopulation(env: Environment)(prevPopulation: env.Population)
}

Как правильно передать население и окружающее его окружение?

(Можно было бы добавить тег типа зависимого метода, но у меня недостаточно баллов, чтобы добавить тег «новый»)

6
задан Community 23 May 2017 в 11:49
поделиться