Haskell、"Is Prime" 函数

Haskell, "Is Prime" function

我是 Haskell 的新手,我无法理解“Null $ filter”。

isPrime n
  | n < 2 = error "Zu kleine Zahl fuer Primzahltest"
  | otherwise = null $ filter (\k -> n `mod` k == 0) [2.. n-1]

($) :: (a -> b) -> a -> b 运算符将左操作数应用于右操作数。因为它的优先级较低,所以它被用作“分组”表达式的一种方式。因此,该表达式等效于:

-- null <strong>$ </strong>filter (\k -> n `mod` k == 0) [2.. n-1]
   null <strong>(</strong> filter (\k -> n `mod` k == 0) [2.. n-1] <strong>)</strong>

null :: Foldable f => f a -> Bool 是一个检查 Foldable 是否有 no 元素的函数。所以对于列表,如果列表为空,它将 return True,否则 False

该列表包含 2n-1 之间的整数 k,按升序排列,其中 n `mod` k0,因此 [=20] 的除数=].通过使用 null 我们因此检查数字 n 没有除数,如果是这样我们 return True;否则我们 return False.