> "...the level of pattern matching you can use when defining functions, as well as the high level of functional composition..."

This sounds like your average functional programming language. The Scicloj community is the first thing to come to mind (but I assume they don't do symbolic algebra/calculus like Mathematica does), but I don't know what you're specifically missing.