Композиция функций в Scala

#scala

#scala

Вопрос:

Я пытаюсь написать функцию, которая принимает две функции и объединяет их. Я попробовал решение ниже и несколько других вариантов, но без особого успеха.

 def compose1[A, B, C](f: A => B, g: B => C)(x: A) = f(g(x))
  

Ошибка, которую я получаю, такова

 <console>:21: error: type mismatch;
 found   : x.type (with underlying type A)
 required: B
       def compose1[A, B, C](f: A => B, g: B => C)(x: A) = f(g(x))
                                                               ^
  

Полное раскрытие информации это часть университетского упражнения, предназначенного для обучения нас Scala, хотя это и не зачет. Вопрос действительно плохо сформулирован (это было буквально объявление функции и предложение, которое я использовал выше), и перед этим не было приведено никаких примеров или объяснений, я думаю, что у меня недостаточно хорошее понимание Scala, чтобы даже понять вопрос. Был бы очень признателен за некоторую проработку проблемы, спасибо за помощь!

Комментарии:

1. Возможно, вы захотите включить некоторые дополнительные сведения об ошибке, с которой вы столкнулись.

Ответ №1:

Внимательно посмотрите на типы: вы пытаетесь передать x (ввести A ) функцию g (которая принимает a B и возвращает a C ). Я уверен, что вы можете забрать его отсюда.

Комментарии:

1. @stmfunk и не стесняйтесь отмечать ответ как правильный, если вы так считаете. 😉

2. нет проблем, просто нужно подождать несколько минут, чтобы это позволило мне