массива, но не суть) на произведение всех остальных элементов массива. Один парень предложил такое решение:
magic = fmap =<< div . product
main = print $ magic [1,2,3,4]
Вопрос: как это работает? Я не понимаю
hint: magic x = (div . product >>= fmap) x смотри как определён (>>=) для типа (-> r)
красиво, но не верно λ> magic [1, 2, 3, 0] [0,0,0,*** Exception: divide by zero
magic = map product . liftA2 (zipWith (++)) inits (tail . tails) Решение "в лоб". С нулями работает правильно.
Обсуждают сегодня