Похоже, ошибка для меня. Это как минимум неспособность четко объяснить, что такое синтаксический перевод. Условная ссылка solrize гласит:
При условии параллельного понимания формы:
[ e | p1 <- e11, p2 <- e12, ...
| q1 <- e21, q2 <- e22, ...
...
]
Это будет переведено на:
[ e | ((p1,p2), (q1,q2), ...) <- zipN [(p1,p2) | p1 <- e11, p2 <- e12, ...]
[(q1,q2) | q1 <- e21, q2 <- e22, ...]
...
Интуиция поместит , then sortWith by y
в окончательный многоточие:
[ (x,y) | x <- xs
| y <- ys
, then sortWith by y ]
Что бы перевести на
-- this produces the same result as your zs'
[ (x,y) | (x,y) <- zip [x' | x' <- xs]
[y' | y' <- ys]
, then sortWith by y ]
Однако на самом деле, похоже, что он находится в месте второго-последнего многоточия:
[ (x,y) | x <- xs
| y <- ys, then sortWith by y
]
Перевод на
-- this produces the same result as your zs
[ (x,y) | (x,y) <- zip [x' | x' <- xs]
[y' | y' <- ys, then sortWith by y']
]