您如何使(x - y) < 20
始终为正?
我想为以下条件创造条件:
getJOL :: [Int] -> String
getJOL [w,x,y,z] = if x - w < 20 && y - x < 20 && z - y < 20
then "Good calibration"
else "Bad calibration"
两个值之间的差必须为正。
最佳答案
是的,abs
是您想要的功能。这是| x |的常规名称。在大多数语言中。
顺便说一句,您可能不应该对四个列表元素进行硬编码。这既不安全(如果有人将包含五个元素的列表交给您,该怎么办?)又是重复性的。只需递归到列表,然后在发现一对距离太大时中止:
getJOL (w:x:ys)
| abs (x - w) >= 20 = "Bad calibration"
getJOL (_:xs) = getJOL xs
getJOL [] = "Good calibration"