はじめは全生成して、ごにょごにょ だったけど

明らかに計算量が O(N^2) だった。

ちょっと頭を使った。

import Data.List
import Data.Ratio
p071 d' = foldl1' max [n%d|d<-[2..d'][7],let n = 3*d `div` 7,gcd n d ==1]
main = print.numerator.p071$10^6

前とは比べ物にならないくらい速くなった。

foldl1を正格評価にしたのは記憶容量が減り、速くなると思ったから。