Tar*_*our 1 null primes haskell filter dollar-sign
我是 Haskell 的新手,我无法理解“Null $ 过滤器”的事情。
isPrime n
| n < 2 = error "Zu kleine Zahl fuer Primzahltest"
| otherwise = null $ filter (\k -> n `mod` k == 0) [2.. n-1]
Run Code Online (Sandbox Code Playgroud)
运算($) :: (a -> b) -> a -> b符将左操作数应用到右操作数。因为它的优先级较低,所以它被用作“分组”表达式的一种方式。因此该表达式等价于:
-- null $ filter (\k -> n `mod` k == 0) [2.. n-1]
null ( filter (\k -> n `mod` k == 0) [2.. n-1] )Run Code Online (Sandbox Code Playgroud)
null :: Foldable f => f a -> Bool是一个检查 a 是否Foldable没有元素的函数。True因此对于列表来说,如果列表为空则返回,False否则返回。
该列表包含和k之间的整数,按升序排列,其中是,因此是 的除数。通过使用,我们检查该数字是否没有除数,如果是这样,我们返回;否则我们就返回。2n-1n `mod` k0nnullnTrueFalse