Como compilar / avaliar uma expressão Scala em tempo de execução?

Novo no Scala e procurando indicadores para uma solução idiomática, se houver.

Eu gostaria de ter funções arbitrárias Scala fornecidas pelo usuário (que podem fazer referência a funções / classes que defini no meu código) aplicadas a alguns dados.

Por exemplo: eu tenhofoo(s: String): String ebar(s: String): String funções definidas no meumyprog.scala. O usuário executa o meu programa assim:

$ scala myprog data.txt --func='(s: Str) => foo(bar(s)).reverse'

Isso executaria linha por linha no arquivo de dados e emitiria o resultado da aplicação da função especificada pelo usuário a essa linha.

Para obter pontos extras, posso garantir que não haja efeitos colaterais na função definida pelo usuário? Caso contrário, posso restringir a função a ser usadasó um subconjunto restrito de funções (que posso garantir como seguro)?

questionAnswers(2)

yourAnswerToTheQuestion