Size: a a a

2020 July 28

DB

Danil Braindead in F# Chat
Prunkles Dreemurr
А как разворачиваются CustomOperation? И почему для их использования необходимо определить Yield?
Потому что им нужен иттератор:
for index in CustomOperation do
источник

DB

Danil Braindead in F# Chat
Если я верно понял вопрос
источник

PD

Prunkles Dreemurr in F# Chat
Danil Braindead
Потому что им нужен иттератор:
for index in CustomOperation do
Мы же про кастомные операции из Computation Expression? Например
type MyBuilder() =
 [<CustomOperation "something">]
 member _.Something(...) = ...
источник

VL

Vladimir Lozhnikov in F# Chat
источник

PD

Prunkles Dreemurr in F# Chat
Я на неё каждую минуту ссылаюсь, но ответ на вопрос я там так и не нашёл
источник

VL

Vladimir Lozhnikov in F# Chat
хм. а это тогда что?

Ключевое yield слово предназначено для возвращения значения из выражения вычислений, IEnumerable<T>чтобы его можно было использовать как:
F#

let squares =
   seq {
       for i in 1..10 do
           yield i * i
   }

for sq in squares do
   printfn "%d" sq

В большинстве случаев, он может быть опущен абонентов. Наиболее распространенный yield способ опустить это с оператором: ->
F#

let squares =
   seq {
       for i in 1..10 -> i * i
   }

for sq in squares do
   printfn "%d" sq

Для более сложных выражений, которые могут дать много различных значений, и, возможно, условно, просто опуская ключевое слово может сделать:
F#

let weekdays includeWeekend =
   seq {
       "Monday"
       "Tuesday"
       "Wednesday"
       "Thursday"
       "Friday"
       if includeWeekend then
           "Saturday"
           "Sunday"
   }

Как и в том, что ключевое слово доходности в C,каждый элемент в выражении вычислений возвращается, так как он итерирован.

yieldопределяется участником Yield(x) по типу x builder, где элемент должен уступить.
источник

VL

Vladimir Lozhnikov in F# Chat
yield нужен если вычисление возвращает  IEnumerable
источник

PD

Prunkles Dreemurr in F# Chat
Vladimir Lozhnikov
yield нужен если вычисление возвращает  IEnumerable
Это же просто частный случай
источник

VL

Vladimir Lozhnikov in F# Chat
ну да
источник

PD

Prunkles Dreemurr in F# Chat
И как это связано с CustomOperation?
источник

VL

Vladimir Lozhnikov in F# Chat
я так понимаю, что это и есть вычисляемые выражения. и yield - это один из случаев его использования. используются в построителях, нет?
источник

VL

Vladimir Lozhnikov in F# Chat
в построителях есть разные атрибуты, yield - один из них. есть и другие, например do, return, let
источник

DB

Danil Braindead in F# Chat
Vladimir Lozhnikov
я так понимаю, что это и есть вычисляемые выражения. и yield - это один из случаев его использования. используются в построителях, нет?
Пссс, в других языках/технология это называют генераторами, но не суть
источник

VL

Vladimir Lozhnikov in F# Chat
а что это за бот, который сюда усердно кидает ссылки на какую то группу?
источник

IC

Ilya L Che in F# Chat
Рекламный.
источник

VS

Vladimir Shchur in F# Chat
Привет новоприбывшим)
источник
2020 July 29

YN

Yurii Nskyi in F# Chat
напомните плиз как правильно называется такой паттерн:
есть список каких-то элементов
и есть некоторое действие над элементом, которое возвращает успех или неуспех
я хочу по порядку пройтись по списку, применяя к каждому элементу действие
как только это действие вернёт успех, нужно сразу вернуть этот элемент списка и прекратить итерирование
звучит как обычный форич, но вроде бы и что-то есть готовое уже, не могу вспомнить
источник

PD

Prunkles Dreemurr in F# Chat
Yurii Nskyi
напомните плиз как правильно называется такой паттерн:
есть список каких-то элементов
и есть некоторое действие над элементом, которое возвращает успех или неуспех
я хочу по порядку пройтись по списку, применяя к каждому элементу действие
как только это действие вернёт успех, нужно сразу вернуть этот элемент списка и прекратить итерирование
звучит как обычный форич, но вроде бы и что-то есть готовое уже, не могу вспомнить
first?
источник

((

(fun () -> ()) in F# Chat
tryFind
источник

PD

Prunkles Dreemurr in F# Chat
В линку метод-расширение .First(predicate)
В Seq модуле функция
val find: predicate: ('T -> bool) -> 'T seq -> 'T
источник