检查数字是否按顺序排列

Check if number has its digits in order

我正在尝试检查给定任何数字,其数字是否有序。示例:

1479 -> 真

1293 -> 错误

在 Haskell 中是否有正确的方法来做到这一点?我是这门语言的新手,此刻真的很迷茫。谢谢。

我的想法是这样的:

ordenado n
   | mod n 10 > mod (div n 10) 10 = ordenado (div n 10)
   | n == 0 = True
   | otherwise = False

我认为@vps 方法足够合适,但为了某些变化,您也可以按以下方式完成工作;

Prelude> and $ zipWith (<) <*> tail $ show 1479
True
Prelude> and $ zipWith (<) <*> tail $ show 1293
False

您可以将其转换为字符串并使用简单的递归和模式匹配。

   checkInOrder :: Int -> Bool
   checkInOrder x = isInOrder $ show x

   isInOrder :: (Ord a) => [a] -> Bool    
   isInOrder [] = True
   isInOrder [x] = True
   isInOrder (x:y:xs) = (x < y) && (isInOrder (y:xs))

   main = print (checkInOrder 1234)