Size: a a a

2020 September 17

V

Vitёk in F# Chat
не помогло
источник

ДБ

Дмитрий Башинский... in F# Chat
Vlad Zaa
Будет стрим, ссылку опубликуем
В можно канал?
источник

VS

Vasily Shapenko in F# Chat
Хотя здесь другая ошибка
источник

AH

Ayrat Hudaygulov in F# Chat
Vitёk
Доброе утро, господа. Будьте добры, помогите разобраться с вычислительным выражением:
type MaybeBuilder() =
   member this.Bind (x, f) =
       match x with
       | None -> None
       | Some v -> f v

   member this.Return x = x |> Some
   member this.ReturnFrom (x) = x
   member this.Zero () = None

let maybe = MaybeBuilder()


При использовании мне нужно вывести строку при определённом условии, то есть, сделать if без else до возврата значения, вот так:
let stringAddWorkflow x y z =
   maybe {
       let! a = strToInt x
       let! b = strToInt y
       let! c = strToInt x

       if c > 3 then
           printf "%d" c

       return a + b + c
   }

Получаю ошибку: This control construct may only be used if the computation expression builder defines a 'Combine' method
У тебя особый иф елс, который чот возвращает, но никуда не биндится. Чтобы его встроить в СЕ нужен Combine, о том тебе и сообщил компилятор
источник

VS

Vasily Shapenko in F# Chat
И компилятор о ней явно говорит
источник

V

Vitёk in F# Chat
то есть нужен combine, который может забиндить unit?
источник

V

Vitёk in F# Chat
понял))
источник

AH

Ayrat Hudaygulov in F# Chat
Vitёk
то есть нужен combine, который может забиндить unit?
Да. Все что не
let
do
return
yield
+ Их версии с !
Нужно через комбайн пихать.

А именно СЕ вида

builder {
 expr
}
источник

AH

Ayrat Hudaygulov in F# Chat
Твой иф это просто экспрешн в поле
источник

AH

Ayrat Hudaygulov in F# Chat
Воркераунд, забиндить в лет
let _ = if ...

Или написать комбайн
источник

V

Vitёk in F# Chat
спасибо. понял, наконец-то
источник

MS

Michael Snytko in F# Chat
Переслано от Ayrat Hudaygulov
let yesterday month day = 
 let newDate = DateTime(2001, month, day).AddDays -1.
 newDate.Month, newDate.Date
 
let yesterdayYobaSwitch = function
 | month, day -> yesterday month day


вторая функция через "switch", всё как просили
источник

MS

Michael Snytko in F# Chat
а зачем такой синтаксис с палочкой?
источник

MS

Michael Snytko in F# Chat
и стрелочкой
источник

AH

Ayrat Hudaygulov in F# Chat
Michael Snytko
а зачем такой синтаксис с палочкой?
кто-то хотел свич, я сделал свич!!1
источник

AH

Ayrat Hudaygulov in F# Chat
не ищи тут логики, я просто поугарал
источник

SB

S B in F# Chat
Michael Snytko
Переслано от Ayrat Hudaygulov
let yesterday month day = 
 let newDate = DateTime(2001, month, day).AddDays -1.
 newDate.Month, newDate.Date
 
let yesterdayYobaSwitch = function
 | month, day -> yesterday month day


вторая функция через "switch", всё как просили
Название второй функции мне нравится
источник

SB

S B in F# Chat
Надо запомнить такой нейминг уонвкнишн
источник

NK

ID:0 in F# Chat
источник

ST

Sergey Tihon in F# Chat
@Lanayx весело что  Don на стриме разбирает баг зарепортанный тобой )
источник