нет, вот честно, я с самого начала думал, что это не лямба, а фигня какая-та
Arr2 - конструктор, который принимает функцию от двух аргументов. То есть сам Arr2 - функция от одного аргумента, где первый аргумент - функция от двух.
Чтобы смапать функцию внутри Arr2, нам для начала нужно эту функцию оттуда достать, сделать это можно через паттерн-метчинг или через селекторы/ключи рекорда:
fmap f (Arr2 g) = Arr2 (\a b -> f (g a b))
fmap f g = Arr2 (\a b -> f (getArr2 g a b))
После того, как мы достали функцию от двух аргументов, которая возвращает a, нам нужно сделать новую функцию на основе этой, которая возвращает b. То есть мы создаем новую функцию от двух аргументов, передаем эти два аргумента в старую функцию, получаем значение типа a, которые мы отдаем в мапающую функцию, которая нам отдает b.
Ну и осталось обратно запихнуть новую функцию в Arr2, сделать это можно через конструктор-фунцию
Arr2 (\a b -> f (g a b))
или рекордную запись
Arr2 { getArr2 = (\a b -> f (getArr2 g a b)) }