Поэтому я разработал следующую функцию для определения, является ли данное число простым числом в Haskell (предполагается, что первое простое число равно 2):
isPrime k = length [ x | x <- [2..k], k 'mod' x == 0] == 1
он имеет очевидную ловушку продолжения оценки, даже если она делится на несколько чисел :(. Есть ли какой-то вменяемый способ "вырезать" оценку, когда она находит более одного решения, используя списочные выражения?
Кроме того, какие еще реализации вы бы примерили? Я не ищу здесь производительность, я просто пытаюсь понять, есть ли другие, более "скромные" способы сделать то же самое.