Задать вопрос
@to_east

F# передача состояния?

Некая функция принимает данные по WebSocket протоколу, необходимо произвести кое-какие вычисления, сохранить состояние этих вычислений, для последующей обработки порции данных, и при этом вернуть результат этих вычислений.
Сразу приходит на ум, сделать замыкание с записью с мутабельными полями, с каждым вызовом функция сохраняет состоя ние внутри декоратора и при этом возвращает результат.
type Foo =
    {
        mutable Value: int
    }


let init_handler (value: int) =
    let foo = { Value = value }
    fun (item: int) ->
        foo.Value <- foo.Value + item
        foo.Value


[<EntryPoint>]
let main args =
    let handler = init_handler 0
    
    printfn "%A" (handler(10))
    printfn "%A" (handler(20))
    0

А возможно ли использовать только иммутабельные структуры для реализации этого алгоритма?
Опять же можно возвращать частично примененную функцию с копированной структурой данных, для последующего вызова, а тогда как вернуть результат вычислений.
  • Вопрос задан
  • 20 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы