An introduction to concatting items via the formal Semi-group interface. Semi-groups are simply a type with a concat method that are associative. We define three semigroup instances and see them in action. 1. What is Semigroups: Array type, String ty…
Let's say we want to write a most simple implementation 'avg' function: const avg = list => { let sum = 0; for(let i = 0; i < list.length; i++) { sum += list[i] } return sum / list.length } Basiclly, the 'avg' function doing two things: Calculate su…
State is a lazy datatype and as such we can combine many simple transitions into one very complex one. This gives us a lot of control over how our state changes over time. In this lesson we will use this to our advantage and combine many transactions…
Lifting Now, let's review map from another perspective. map :: (T -> R) -> [T] -> [R] accepts 2 parameters, a function f :: T -> R and a list list :: [T]. [T] is a generic type paramterized by T, it's not the same as T, but definitely shares s…
Functions in Java Prior to the introduction of Lambda Expressions feature in version 8, Java had long been known as a purely object-oriented programming language. "Everything is an Object" is the philosophy deep in the language design. Objects a…
background In pursuit of a real-world application, let’s say we need an e-commerce web applicationfor a mail-order coffee bean company. They sell several types of coffee and in differentquantities, both of which affect the price. Imperative methods F…
In functional programming, a monad is a design pattern that defines how functions, actions, inputs, and outputs can be used together to build generic types,[1] with the following organization: Define a data type, and how values of that data type are…
1. Functional programming treats computation as the evaluation of mathematical and avoids state and mutable data. Scala encourages an expression-oriented programming(EOP) 1) In expression-oriented programming every statement is an expression. A state…
In computer science, functional programming is a programming paradigm, a style of building the structure and elements of computer programs, that treats computation as the evaluation of mathematical functions and avoids state and mutable data. It is a…
In this blog post I will talk about the changes coming in Angular 2 that will improve its support for functional programming. Angular 2 is still in active development, so all the examples are WIP. Please focus on the capabilities and ideas, and not t…
A functional programming function is like a mathematical function, which produces an output that typically depends only on its arguments. Each time a functional programming function is called with the same arguments, the same result is achieved. Func…
/usr/include/c++/4.8/functional:1697:61: error: no type named ‘type’ in ‘class std::result_of<std::_Mem_fn<void 看的上面的错误. 之后Google 了,结合下面两个链接才解决. https://segmentfault.com/q/1010000004413576 http://stackoverflow.com/questions/28950835/c-error-no-type-…
It is really important to understand function signature in functional programming. The the code example below: const map = fn => anyFunctor => anyFunctor.map(fn); 'map' is pointfree version of any founctor's map, for example: Maybe.of('maybe').map(t…
Maybe has two types: Just / Nothing. Just() will just return the value that passed in. Nothing returns nothing... Just/ Nothing are both functors, they should have .map() method: const Just = x => ({ map: f => Just(f(x)), inspect: () => `Just ${x…
When using ADTs in our code base, it can be difficult to use common debugging tools like watches and breakpoints. This is mainly due to the common pattern of using compositions and other ways of manipulating how functions are called. This can cause u…
The typical Redux Reducer is function that takes in the previous state and an action and uses a switch case to determine how to transition the provided State. We can take advantage of the Action Names being Strings and replace the typical switch case…
The true power of the State ADT really shows when we start combining our discrete, stateful transactions. We start looking at another construction helper named of, used to lift any given value of any type into the resultant. We also explore another i…
Using put to update our state for a given state transaction can make it difficult to modify a given state based on its previous value. In this lesson we will explore a means to lift specialized functions that can be used modify our state’s value. The…
For example we have a component, it needs to call 'react-redux' connect function. import { compose, curry, option, propPath } from '../js/helper' const FilterButton = ({ active, onClick }) => { const classes = classnames('filterButton', { 'filterButt…
Imaging we have a deck of cards, eveytimes we need to pick one card from deck, the result we want to have is: // Selected: "A♠", // Remaining: [ "2♠", "3♠", "4♠", "5♠", "6♠", "7♠", &quo…
Recently, I am learning Working with ADT. Got some extra thought about State Monad. Basiclly how to thinking in State. First, we need to know the type of State: State returns Pair with Unit on the left, and state on the right: State(state => Pair(Uni…