Python и Common Lisp (возможно, среди прочих) позволяют использовать ключевые аргументы. Вы можете выполнять вызовы функций, которые включают имена параметров.
Они не эквивалентны именам методов Obj-C, потому что ключевое слово args игнорирует позицию , но они отвечают на ваш вопрос о читабельности. *
make_an_omelet(num_eggs=2, cheese=u"Gruyère", mushrooms=True)
(make-a-salad :greens 'boston-lettuce
:dressing 'red-wine-vinaigrette
:other-ingredients '(hazelnuts dried-apricots))
Это, конечно, не передача сообщений, а просто вызов старой функции.
* Они могут использоваться не для этого, например для задания значений по умолчанию.