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 (+)

--

--

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