Let's say you have a data structure. And you see that you can implement functions return & bind for it in some way.
So it is a 'monad'. But you see different useful ways of implementing these functions.
What you can do is to encode these functions in some data structure like an ‘abstract syntax tree’ & then write different interpreters for it…