了解Prime测试

mad*_*do7 1 primes haskell functional-programming

我有这个Haskell脚本:

prime :: Integer -> Bool    
prime 1 = False
prime n = [ x | x <- [2..n-1], n `mod` x == 0 ] == []
Run Code Online (Sandbox Code Playgroud)

什么是第一次x在最后一行代表什么?为什么我可以用"String"替换它,整个功能仍然有效?

ham*_*mar 6

|列表推导之前的部分是一个表达式,用于生成结果列表的每个元素.

在这种情况下,该函数仅关注列表推导是否导致空列表,因此列表的元素无关紧要.你可以把(),x,1或实现任何类型的任何值Eq出现.如果你用null而不是== []检查空虚,它甚至可能是任何东西undefined.