Если вы хотите это только для коллекций, которые поддерживают :+
, самый простой способ - просто определить его в терминах Seq
вместо List
.
Вы можете сделать его гораздо более универсальным, вплоть до Traversable
, с помощью сборщиков. Я был бы счастлив объяснить это, когда у меня будет немного больше времени, но на этом уровне это будет сложно.
Аппликативные функторы Скалаза - это, вероятно, верный путь, но я позволю кому-то с большим опытом Скалаза, чем я, разобраться с этим конкретным ответом.