Используя следующие определения:
lenDigits n = length (show n)
factorial n = product [1..n]
Я оцениваю следующие
Prelude> ((lenDigits . factorial) 199) <= 199
False
Prelude> (\i -> ((lenDigits . factorial) i) <= i) 199
True
В чем причина такого поведения? Как я вижу, первое выражение совпадает с вторым выражением с уменьшенным lambdas.