У меня есть Построитель вычислительных выражений, который получает значение во время построения
type SomeBuilder<'e> (e: 'e) =
member this.Bind(x, fn) = ...
member this.Return x = ...
member this.ReturnFrom x = ...
let buildSome v = SomeBuilder(v)
buildSome 2 {
return 1
}
Теперь я хотел бы получить доступ к значению e
из Вычислительного выражения через пользовательскую операцию, чтобы
buildSome 2 {
return 1 + e()
}
Итак, я действительно хочу получить доступ к свойствам / значениям в базовом объекте компоновщика и работать с ними
Я думаю, мне нужно что-то вроде
type SomeBuilder<'e> (e: 'e) =
member this.Bind(x, fn) = ...
member this.Return x = ...
member this.ReturnFrom x = ...
[<CustomOperation("e")>]
member this.E () = e
, но это не такt работа.
Итак, мой вопрос
a) что-то подобное возможно с использованием пользовательских операций и вычислительных выражений b) и если это возможно, то как?
Отказ от ответственности:
Как обычно в программировании, существует миллион способов достижения подобных эффектов совершенно разными способами.Я явно прошу об этом конкретном способе, и я в порядке, если ответ просто «Нет».Но, пожалуйста, воздержитесь от ответов, которые не являются ответами в самом узком смысле, изложенном здесь.