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