Я хочу лучше понять продолжения и сопрограммы.Я хочу закодировать их без использования seq
или async
рабочих процессов.
Я нашел несколько реализаций сопрограмм в F#
этих простых сопрограммах , и это изfsharpsnippets
Мой вопрос заключается в том, как можно реализовать выход сопрограммы, который возвращает значения для вызывающих сопрограмм, например:
let anothercoroutine= coroutine {
do! yieldvalue' "hello"
do! yieldvalue' "world"
}
coroutine{
let! a = yield' anothercoroutine
let! b = yield' anothercoroutine
return a + " " + b
} // it would return "hello world"
Это только один пример "hello world"то, что я хочу достичь, но мне действительно не нужно anothercoroutine
, чтобы быть генератором последовательности, хотя это может быть ... Этот код будет выполняться рядом с другими сопрограммами, которые были запланированы для этого.
Я хотел знать, есть ли какое-то неявное ограничение на F#
.Я пытался, но это оказалось сложнее, чем ожидалось, поэтому мне нужно знать, просто ли я провожу свое время в невыполнимой проблеме.