Пользоваться указателями - ну, тут мы приходим к ещё одному вопросу, который для меня довольно неприятен. В лиспе, свифте, окамле, хаскеле, яве нет разделения на "записи" и "указатели". Оно, может быть, где-то на периферии есть, но его стараются выдавить подальше от центра. Я не хочу две сущности, хочу одну. Не скажу, что мне нравится, как это решено в других языках, но подход лиспа мне ближе всех. Любая переменная и любой параметр семантически являются указателями. Но некоторые типы являются иммутабельными и не имеют идентичности, поэтому для них нет разницы между передачей указателя и передачей копии значения.

Такой подход повышает абстрактность языка и упрощает его. В большинстве случаев этого достаточно. При этом не исключается возможность выделения сущностей на стеке (это становится уже оптимизацией).

Если я хочу писать на КП в ФП стиле, у меня резко растёт нагрузка на кучу. Это плохо для отзывчивости приложения, Эклипс все видели, я думаю

Другой подход у свифта - структуры передаются только по значению. Применяетcя ленивое копирование, т.е. объект фактически копируется только в момент изменения. Внутри опять же могут быть (а могут и не быть) указатели. Но снаружи язык выглядит простым. Правда, мне этот подход не нравится, может быть, я просто что-то недопонял.

В общем, спасибо за ответы, я вас понял. Думаю, дальше можно тему не развивать. Может быть, когда нибудь дойдут руки сделать для КП возврат записей по значению.