# Advanced Functional Programming with Elixir: Slightly misleading contramap exercise (Page 36)

**URL:** <https://forum.devtalk.com/t/advanced-functional-programming-with-elixir-slightly-misleading-contramap-exercise-page-36/230537>\
**Category:** PragProg Customers\
**Tags:** book-advanced-functional-programming-with-elixir, errata\
**Created:** [18 January 2026 16:41 UTC](https://forum.devtalk.com/t/advanced-functional-programming-with-elixir-slightly-misleading-contramap-exercise-page-36/230537 "2026-01-18T16:41:23Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![octowombat](https://forum.devtalk.com/user_avatar/forum.devtalk.com/octowombat/32/3463_2.png) [@octowombat](https://forum.devtalk.com/u/octowombat)\
**Post date:** [18 January 2026 16:41 UTC](https://forum.devtalk.com/t/advanced-functional-programming-with-elixir-slightly-misleading-contramap-exercise-page-36/230537/1 "2026-01-18T16:41:23Z")

</div>

The exercise states

> “Create a contramap/1 that normalizes strings before comparing them—make sure they’re trimmed and use the same case.”

However the existing `contramap/1` function is sufficient **but** the author means create the function to pass to the _exisiting_ `contramap/1` function, as shown in the answer.
