# \[BLOG\] Rewriting Slipshow in OCaml: The undo-able monad

**URL:** <https://discuss.ocaml.org/t/blog-rewriting-slipshow-in-ocaml-the-undo-able-monad/16069>\
**Category:** Community\
**Tags:** monad, monads, blog\
**Created:** [January 31, 2025, 1:42pm UTC](https://discuss.ocaml.org/t/blog-rewriting-slipshow-in-ocaml-the-undo-able-monad/16069 "2025-01-31T13:42:23Z")\
**Posts on this page:** 1\
**Showing post:** 1

<div class="post-metadata">

**Author:** ![panglesd](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/panglesd/32/3931_2.png) [@panglesd](https://discuss.ocaml.org/u/panglesd)\
**Post date:** [January 31, 2025, 1:42pm UTC](https://discuss.ocaml.org/t/blog-rewriting-slipshow-in-ocaml-the-undo-able-monad/16069/1 "2025-01-31T13:42:23Z")

</div>

Hello OCamlers,

I have recently rewritten [Slipshow](https://github.com/panglesd/slipshow/)’s engine from JavaScript to OCaml.  
It turns out this rewriting was very satisfying, and many niceties came out of it.  
I have written a blog post about a specifically interesting one: the use of custom `let` operators with the “undo-able” monad. I hope you enjoy the read!

The blog post: [How I fixed Slipshow’s worst flaw using OCaml and a monad](https://choum.net/panglesd/undo-monad/).

Cheers!

---

_[View the full topic](https://discuss.ocaml.org/t/blog-rewriting-slipshow-in-ocaml-the-undo-able-monad/16069)._
