Я хочу создать поток, который создает новый источник (это будет запрос постоянства) из входящих элементов, а затем выравнивает результаты. Что-то вроде этого упрощенного примера:
var z = Source.Single(1).ConcatMany(i => Source.Single(i));
этот код компилируется и работает как положено. Моя проблема в том, что когда я перевожу его на F #:
let z = Source.Single(1).ConcatMany(fun i -> Source.Single(i))
, я получаю сообщение об ошибке, говорящее
This expression was expected to have type
'IGraph<SourceShape<'a>,Akka.NotUsed>'
but here has type
'Source<int,Akka.NotUsed>'
. Я думаю, что причина этого в том, что F # обрабатывает ко / контравариантность иначе, чемC # и не может просто преобразовать эти общие специализации (https://github.com/fsharp/fslang-suggestions/issues/162),, но я не могу найти способ сделать преобразование между int
и SourceShape<int>
. Возможно ли преобразовать этот пример в F #?