Square is a monad join of a function

join :: Monad f => f (f a) -> f a
join ffa = ffa >>= id
>> join (Full (Full 1))
Full 1
 >> ffa = \x -> (\y -> x * y)
>> ffa 2 3
6
>>
>> :type (join (*))
(join ffa) :: Num a => a -> a
>> join (*) 10
100
>> square = join (*)
>> double = join (+)

--

--

--

A software engineer and a functional programming enthusiast at Simple-machines, Sydney, and a hardcore hiking fan. https://twitter.com/afsalt2

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

Converting and Optimizing Images From the Command Line

Vue Framework: Why is the best alternative to React and Angular?

How to Sort an Object by Key or Property Name in JavaScript

Hosting Multiple Angular Apps with Path Based Routing in AWS

Easy Data Binding

How I built a COVID-19 Tracker App using React- with Material UI, Hooks, and Chart.js

bodyParser.json() vs express.json() & express.urlencoded() vs express.json()

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Afsal Thaj

Afsal Thaj

A software engineer and a functional programming enthusiast at Simple-machines, Sydney, and a hardcore hiking fan. https://twitter.com/afsalt2

More from Medium

Strangler Fig Refactoring

My Tests are Broken Again, Part 2: Examining a new Approach

Percentile Latency in Backend

Typescript 101