Треки
/
F#
F#
/
Вправи
/
Накопичення
Накопичення

Накопичення

Легка

Вказівки

Реалізуйте операцію accumulate, яка, отримавши колекцію та операцію, яку слід виконати над кожним елементом колекції, повертає нову колекцію, що містить результат застосування цієї операції до кожного елемента вхідної колекції.

Маємо колекцію чисел:

  • 1, 2, 3, 4, 5

І операцію:

  • піднести число до квадрата (x => x * x)

Код має вміти утворити колекцію квадратів:

  • 1, 4, 9, 16, 25

Перегляньте набір тестів, щоб побачити очікувану сигнатуру функції.

Обмеження

Не чіпайте ту функціональність collect/map/fmap/як-його-там, яку надає стандартна бібліотека! Розвʼяжіть цю вправу самостійно, використавши натомість інші базові інструменти.

Підказки

Для цієї вправи стане в пригоді така можливість F#:

  • Хвостова рекурсія Дає змогу уникнути переповнення стека на великих вхідних даних. Хоча жоден тест явно цього не перевіряє, хвостова рекурсія веде до продуктивнішого рішення. Про хвостову рекурсію можна також прочитати в цьому дописі в блозі.
  • Виведення типів Компілятор F# може автоматично виводити типи, тож часто взагалі не доводиться вказувати жодних типів. Докладніше про те, як це працює і які дає переваги, можна дізнатися на цій сторінці.
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
F# Exercism

Час розпочати Накопичення?

Зареєструйтеся на Exercism, щоб вивчати й опановувати F#, а також 18 концепцій148 вправ та справжнє наставництво від людей, і все це безкоштовно.