Оператор :
является оператором предварительного добавления для списков, но на самом деле он не изменяет список. Представьте, что вместо списка у вас был номер; то, что вы делаете, эквивалентно этому:
let items = 1
2 + items
7 + items
3 + items
Это не имеет никакого смысла.
Вам необходимо сохранить результат предварительного запроса где-нибудь. Вы можете сделать это, создав новые переменные для каждого шага:
let items = [Candidate 0.20 4.17 (calculateEfficiency 0.20 4.17) "Weapon"]
let items2 = Candidate 3.11 4.53 (calculateEfficiency 3.11 4.53) "Tinned food" : items
... или вы можете просто создать длинный список для начала:
let items = [ Candidate 0.20 4.17 (calculateEfficiency 0.20 4.17) "Weapon"
, Candidate 3.11 4.53 (calculateEfficiency 3.11 4.53) "Tinned food"
, Candidate 1.04 4.64 (calculateEfficiency 1.04 4.64) "Ammunition"
]
Это должно дать ожидаемые результаты, в зависимости от того, правильно ли вы внедрили mySort
.