zoukankan      html  css  js  c++  java
  • [Functional Programming Moand] Update The State Of A State Monad (put)

    Stateful computations require the ability for their state to change overtime. We take a look on one way to replace the state portion of our stateful datatype with a value. We explore the mechanics of how this can be accomplished and introduce the put construction helper. We also see how we can run our instances with execWith to extract the state portion and discard the resultant.

    Put state is replace the old state with new state:

    //putState :: s -> State s ()
    const putState = state => State(() => Pair(Unit(), state));
    console.log(
        putState('new')
            .runWith('OLD') //Pair( (), "put" )
    )

    This is useful when we want to create 'reset':

    //putState :: s -> State s ()
    const putState = state => State(() => Pair(Unit(), state));
    //reset :: () -> State String ()
    const reset = () => putState('default');
    console.log(
        reset()
            .execWith('OLD') // default
    )

    This opreation is commonly used, therefore there is a well made function 'put':

    const { Pair, Unit, curry, objOf, compose, State, mapProps, prop, option } = require("crocks");
    
    const { put, get } = State;
    
    //reset :: () -> State String ()
    const reset = () => put('default');
    console.log(
        reset()
            .execWith('OLD') // default
    )
    console.log(
        put('new')
            .runWith('OLD') //Pair( (), "new" )
    )
  • 相关阅读:
    mongodb的账户管理
    mongo备份与恢复
    mongo索引
    聚合aggregate
    07-【jsp基本了解】
    Servlet登录小案例
    06-【servletconfig、servletContext 】
    05-【session、cookie】
    jQuery
    04-【servlet转发和重定向】
  • 原文地址:https://www.cnblogs.com/Answer1215/p/10334694.html
Copyright © 2011-2022 走看看