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" )
    )
  • 相关阅读:
    (图论)树的直径
    HDU 4607
    类属性的增删改查
    python内置常用模块
    字典的使用
    元组的使用
    列表的基本函数
    字符串练习题
    python3.7字符串基本函数
    python简单的while语句和if语句的练习
  • 原文地址:https://www.cnblogs.com/Answer1215/p/10334694.html
Copyright © 2011-2022 走看看