Вопрос №55598 от пользователя Oksana Boyko в уроке «Реализация пар», курс «JS: Составные данные»

Oksana Boyko

В голове каша, перечитала все топики, но тесты так и не проходят, подскажите, что не так https://ru.hexlet.io/code_reviews/419519

10 0

Theodor Golovnin

Привет! Функциональное программирование оно такое)) У нас есть код

export const cons = (x, y) => (f) => f(x, y);

Скажите, что вернет функция cons(4, 5)? Понятно конечно, что пару, но что именно?

0

Oksana Boyko

Функцию от аргументов, которые передали в cons. То есть f(x, y)

0

Theodor Golovnin

Эммм. Не совсем понял. "Функцию от аргументов"? Это как? Объясните поподробнее?
... функцию. Правильно. Но если это функция, какие параметры она имеет? Какие аргументы ожидает на вход? Подсказка - нужно просто пройти по стрелке)))

0

Oksana Boyko

Неправильный предлог использовала. Функция cons(4, 5) возвращает другую функцию с аргументами (4, 5), то есть f(4, 5). Но как с этой информацией написать car и cdr так, чтобы вернулось значение - не совсем понятно

0

Theodor Golovnin

А что тогда такое (f) =>f(x, y)? Как вы понимаете эту часть кода? Функция не может быть "функцией с аргументами". Есть определение функции, и есть вызов, когда предаются аргументы. Постарайтесь ответить на тот же вопрос, но более точно. Простите за мучения))

0

Oksana Boyko

Да я понимаю, что терминология тоже важна) Если расставить скобки, то будет так

export const cons = (x, y) => ( (f) => f(x, y) );

Функция cons возвращает другую функцию f, которая в свою очередь возвращает f(x, y). То есть функция cons(4, 5) вызовет f и вернет f(4, 5)

0

Theodor Golovnin

Спасибо за ответ. Важный момент в том, что функция cons просто вернет безымянную функцию (f). Cons не будет ее вызывать! Эта безымянная функция ожидает, что вы передадите в нее функцию. Параметр f.
Cons(x, y) просто вернет ( (f) => f(x, y) );
Удачи!

1

Maksim Litvinov

Оксана, подскажите, помог ли вам ответ участника сообщества разобраться?

0

Oksana Boyko

Нет, задание не решила. Как возвратить x и y из f(x, y) во время вызова cons так и не удалось догадаться

0

Maksim Litvinov

Посмотрите на вывод тестов:

    Expected: 1
    Received: [Function anonymous]

Ожидается, что функция car() вернет число, на фактически возвращается функция. Обратите внимание, что pair - это функция, которая принимает на вход функцию и применяет её к аргументам, которые она замкнула в себе (это x и y). То есть из функций car и cdr нужно возвращать не сами эти функции, а вызов pair, передав ей эти функции. И она применит их к замкнутым аргументам

1

Используйте Хекслет по максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Даю согласие на обработку персональных данных, соглашаюсь с «Политикой конфиденциальности» и «Условиями оказания услуг»

Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Фронтенд-разработчик
Профессия
Разработка фронтенд-компонентов веб-приложений
25 мая 10 месяцев
Иконка программы Python-разработчик
Профессия
Разработка веб-приложений на Django
25 мая 10 месяцев
Иконка программы PHP-разработчик
Профессия
Разработка веб-приложений на Laravel
25 мая 10 месяцев
Иконка программы Node.js-разработчик
Профессия
Разработка бэкенд-компонентов веб-приложений
25 мая 10 месяцев
Иконка программы Fullstack-разработчик
Профессия
Новый
Разработка фронтенд и бэкенд компонентов веб-приложений
25 мая 16 месяцев
Иконка программы Верстальщик
Профессия
Вёрстка с использованием последних стандартов CSS
в любое время 5 месяцев
Иконка программы Java-разработчик
Профессия
Разработка приложений на языке Java
25 мая 10 месяцев
Иконка программы Разработчик на Ruby on Rails
Профессия
Создает веб-приложения со скоростью света
25 мая 5 месяцев