←back to thread

390 points kurinikku | 2 comments | | HN request time: 0.417s | source
Show context
marvinborner ◴[] No.42164919[source]
They give a nice introduction to encoding state as pure functions. In fact, there are many more purely functional encodings for all kinds of data like trees, integers, sum/product types, images, monads, ...

The encodings can be a bit confusing, but really elegant and tiny at the same time. Take for example a functional implementation of the Maybe monad in javascript:

  Nothing = nothing => just => nothing
  Just = v => nothing => just => just(v)
  
  pure = Just
  bind = mx => f => mx(mx)(f)
  
  evalMaybe = maybe => maybe("Nothing")(v => "Just " + v)
  console.log(evalMaybe(bind(Nothing)(n => pure(n + 1)))) // Nothing
  console.log(evalMaybe(bind(Just(42))(n => pure(n + 1)))) // Just 43
replies(5): >>42166462 #>>42166688 #>>42166841 #>>42168370 #>>42173549 #
hinkley ◴[] No.42166462[source]
[flagged]
replies(4): >>42166679 #>>42167412 #>>42167730 #>>42167790 #
1. 6510 ◴[] No.42166679[source]
If there is a wrong way to do something someone will do it.
replies(1): >>42167211 #
2. hinkley ◴[] No.42167211[source]
There’s an old saying attributed to the Inuit: everyone enjoys the smell of their own farts.