This question already has an answer here:
What is the difference between having
Cases with selection condition presented by pattern and
a with pure function as condition? What are the internal implementational reasons to have them separate?
As a side question: How can I select from a list of integers those that have a difference with their neighbor ( left or right, or both) unity?