Генератор списков не решает уравнения, он просто создает список элементов, принадлежащих определенным множествам. Если ваш набор определен как любой x
в [1..20]
, такой что x^2==4
, вы получите именно это.
Вы не можете сделать это с полным списком любых действительных чисел от 0.01
до 2.0
, потому что такой реальный список не может быть представлен в haskell (или, лучше сказать, он не может быть представлен ни на одном компьютере), так как он имеет бесконечные числа с бесконечной точностью.
[0.01,0.2..2.0]
— это список, состоящий из следующих чисел:
Prelude> [0.01,0.2..2.0]
[1.0e-2,0.2,0.39,0.5800000000000001,0.7700000000000001,0.9600000000000002,1.1500000000000004,1.3400000000000005,1.5300000000000007,1.7200000000000009,1.910000000000001]
И ни одно из этих чисел не удовлетворяет вашим требованиям.
Обратите внимание, что вы, вероятно, имели в виду [0.1,0.2..2.0]
вместо [0.01,0.2..2.0]
. Все еще:
Prelude> [0.1,0.2..2.0]
[0.1,0.2,0.30000000000000004,0.4000000000000001,0.5000000000000001,0.6000000000000001,0.7000000000000001,0.8,0.9,1.0,1.1,1.2000000000000002,1.3000000000000003,1.4000000000000004,1.5000000000000004,1.6000000000000005,1.7000000000000006,1.8000000000000007,1.9000000000000008,2.000000000000001]
person
peoro
schedule
13.02.2011
filter ((==2).(*4)) xs
- person Dan Burton   schedule 14.02.2011