I'm talking about Lisp where most of the concepts you are talking about are being mapped almost 1:1 to some ML language, MLite, point for point:
https://www.t3x.org/mlite/index.html
Read the manual and the paper.
On guarded commands (and guards under ML), they are a bit close to a cond and recursivity under Scheme, a simple case.