Я где-то читал, что Match Matching, подобный тому, который поддерживается функцией match/case в Scala, фактически был заимствован из логических языков, таких как Prolog.
Можете ли вы использовать Scala для элегантного решения таких проблем, как проблема Connected Graph? например https://www.csupomona.edu/~jrfisher/www/prolog_tutorial/2_15.html