Короче говоря, операция «::» недоступна в Int, только для коллекций. Если вы выполняете '(хз foldLeft YS) _ в Scala РЕПЛ, вы видите, что это приводит к функции
((List[Int], Int) => List[Int]) => List[Int] = <function1>
Таким образом, первый операнд является List [Int] и второй Int. Обратите внимание, что любой оператор, заканчивающийся на ':', является особым, так как он работает на правой стороне, используя левый аргумент. Это называется «право-ассоциативным», тогда как по умолчанию обычно «лево-ассоциативный».
Поэтому 'aList :: anInt' преобразуется в 'anInt.::(aList)', и это вызывает проблему, поскольку Int не имеет метода «::».
В случае с «foldLeft» вам нужна лево-ассоциативная функция, чтобы добавить один элемент, например «: +». Так что это то работает:
(xs foldLeft ys)(_ :+ _)
Обратите внимание, что результат довольно сильно отличается от foldRight поэтому не забудьте подобрать к правильному для вашей ситуации.