这个功能是为我解决项目euler中的问题而制作的,但我不知道为什么它不会结束。我认为列表理解中存在“n”作为结果,但我已经改为“x + y”但仍然不起作用。
writable :: Int -> [Int]
writable n
| n `elem` primes = []
| otherwise = [x + y | x <- primes_less, y <- double_of_squares, x + y == n]
where
primes_less = takeWhile (< n) primes
double_of_squares = takeWhile (< n) $ map (\x -> 2*x*x) [1..]