В настоящее время я изучаю F # и нажимаю несколько камней преткновения; Я думаю, что многие из них учатся мыслить функционально.F # «Stateful» Вычисление выражения
Одна из вещей, я учусь в настоящее время являются вычисления выражения, и я хочу, чтобы иметь возможность определить выражение вычисления, которая обрабатывает некоторые отслеживания состояния, например:
let myOptions = optionListBuilder {
let! opt1 = {name="a";value=10}
let! opt2 = {name="b";value=12}
}
Я хочу, чтобы иметь возможность иметь его так, чтобы myOptions
был Option<'T> list
, поэтому каждая операция привязки let!
фактически заставляет строителя «отслеживать» определенные параметры по мере их продвижения.
Я не хочу, чтобы это делать, используя изменяемое состояние - например, имеющий список, поддерживаемый разработчиком и обновляемый каждым вызовом bind
.
Есть ли способ иметь это, чтобы это было возможно?
Update: Полученный Option<'T> list
тип просто представитель, на самом деле, я, вероятно, имеют OptionGroup<'T>
тип содержать список, а также дополнительную информацию - так, как Даниэль упоминалось ниже, я мог бы использовать список для простого списка.
Две вещи: я бы предлагайте против создания нового типа с именем 'Option', поскольку один из них уже существует в языке. Может быть, 'OptionWithItem' или что-то в этом роде. Во-вторых, если у вас есть андер, вы должны опубликовать его с другими ответами. Вы по-прежнему можете отметить тот, который помог вам попасть туда как «ответ», но он все еще четко отделяет вопрос от ответа. – mydogisbox