Sounds like your talking about Idris, Elm(JavaScript), ReasonML([JavaScript] https://reasonml.github.io), or F#(.NET)... Monads are for context-sensitive mini-languages (>>=) (=<<): they have a direction and sort-of sequential semantics, >>= is concat . map, <$>(map) is for context-insensitive languages (can be run in parallel)...