Size: a a a

2021 January 17

VS

Vasily Shapenko in F# Chat
Значит , ты пытаешься реализовать паттерн State, как я понимаю
источник

g

gsomix in F# Chat
Prunkles Dreemurr
Уже. Однако вопрос об названии в таком случае актуален
mapWithState подойдет?
источник

g

gsomix in F# Chat
Эта функция часто будет использоваться? Нужно ли делать ее обобщенной?
источник

Lr

Larymar r.sorokin in F# Chat
а подскажите пожалуйста
у меня есть 2 колонки чисел
1 2
1 2
2 5
...
мне нужно высянить сколько точек перехода есть в этих колонках
———————————————-
точка перехода, это когда раньше числа в 1 колонке были меньше чем во 2й, а после стало наоборот
пример
1 2
3 5
2 1 - точка перехода
3 2
3 8 - еще одна точка перехода
——————————————————————-
на с# я хранил состояние
bool stat  - который показывал какой столбец был больше в прошлую иттерацию
как правильно подойти к решению данной задачи на f#
источник

DB

Denis Bobrov in F# Chat
так, а что мешает сделать также ?
let mutable stat : bool = false и вперед
источник

DB

Denis Bobrov in F# Chat
или надо идиоматично ?)
источник

Lr

Larymar r.sorokin in F# Chat
Denis Bobrov
или надо идиоматично ?)
не надо, но хочется
источник

Lr

Larymar r.sorokin in F# Chat
что б прям красиво функционально
источник

SB

S B in F# Chat
Larymar r.sorokin
что б прям красиво функционально
Тебе сначала сам алгоритм надо описать, решение. А потом его имплементировать в ФП-стиле.
источник

SB

S B in F# Chat
Но алгоритм существует объективно сам по себе.
источник

Lr

Larymar r.sorokin in F# Chat
S B
Тебе сначала сам алгоритм надо описать, решение. А потом его имплементировать в ФП-стиле.
так я описал
я уже решил на шарпах
а вот как его имплементировать это вопрос
источник

Lr

Larymar r.sorokin in F# Chat
в моем алгоритме было состояние
источник

DB

Denis Bobrov in F# Chat
ща я напишу мб )
источник

SB

S B in F# Chat
Larymar r.sorokin
в моем алгоритме было состояние
В ФП состояние обычно передаётся как рекурсивный вызов let rec loop state some other params = ... loop state'
источник

SB

S B in F# Chat
Где state' это новое состояние после итерациии
источник

SB

S B in F# Chat
Из-за хвостовой оптимизации это разносило циклу while по потреблению памяти.
источник

DB

Denis Bobrov in F# Chat
let arr = [|(1,2);(3,5);(2,1);(3,2);(3,8)|]
   arr |> Array.fold (fun (dotsCount,isOnTheRight) elem ->
       let other = if isOnTheRight then snd elem else fst elem
       let this =  if not isOnTheRight then snd elem else fst elem
       if other > this then
           (dotsCount + 1, not isOnTheRight)
       else
           (dotsCount, isOnTheRight)
       ) (0, false)
   |> printfn "%A"
источник

DB

Denis Bobrov in F# Chat
типо того по идее
источник

Lr

Larymar r.sorokin in F# Chat
Denis Bobrov
let arr = [|(1,2);(3,5);(2,1);(3,2);(3,8)|]
   arr |> Array.fold (fun (dotsCount,isOnTheRight) elem ->
       let other = if isOnTheRight then snd elem else fst elem
       let this =  if not isOnTheRight then snd elem else fst elem
       if other > this then
           (dotsCount + 1, not isOnTheRight)
       else
           (dotsCount, isOnTheRight)
       ) (0, false)
   |> printfn "%A"
спасибо сохранил
источник

Lr

Larymar r.sorokin in F# Chat
S B
В ФП состояние обычно передаётся как рекурсивный вызов let rec loop state some other params = ... loop state'
спасибо
источник