List 获取列表中递增的元素

List 获取列表中递增的元素,list,sml,smlnj,List,Sml,Smlnj,我有一个列表,我试图从左边的元素中得到更多的元素。这是我的代码: fun incList (hd::h2::tl : int list) = if h2 > hd then hd::h2::(incList tl) else hd::(incList tl) | incList ([x] : int list) = [x] | in

我有一个列表,我试图从左边的元素中得到更多的元素。这是我的代码:

fun incList (hd::h2::tl : int list) = if h2 > hd
                                      then hd::h2::(incList tl)
                                      else hd::(incList tl)
  | incList ([x] : int list) = [x]
  | incList ([] : int list) = []
例如:

LIST:  [1,5,9,2,88,33,90]
CORRECT RESULT:[1,5,9,88,90]
RETURNS: [1,5,9,2,88,33,90]

修正了我的密码。它正在检查其他每个字符。现在它可以工作了:

fun incList ([] : int list) = []
        | incList ([x] : int list) = [x]
        | incList (h1::h2::t1 : int list) = if h2>h1 then h1::(incList 
(h2::t1)) else (incList (h1::t1))

你的问题是什么?你对结果不满意吗?您希望它是什么--以5开头的子列表?不,它不起作用。它返回完整的列表你应该把问题的这一部分放在前面。切题:更习惯的做法是将空模式放在第一位,第二位是有1个元素的模式,最后一位是有2个或更多元素的模式。此外,使用
hd
作为标识符会隐藏一个内置函数,并使代码比需要时更难阅读。我更喜欢像
x::y::zs
这样的东西,通过反转比较,它将返回一个递减元素列表。