SML:如何计算列表中5到15之间的元素数

时间:2014-02-25 08:47:52

标签: sml

  1. 如何计算成员条件的列表长度?
  2. 通常,以下内容用于计算列表的长度

    (* Compute the length of a list *)
    fun length(L) =
      if null L then 0
      else 1 + length (tl (L));
    

    但是如何通过仅计算5到10之间来指定成员的范围?

    1. 如果我想在问题1中使用函数foldr,该怎么办?

1 个答案:

答案 0 :(得分:0)

在List.foldr的lambda函数中,如果元素与条件匹配,则应将总数加1,如果不匹配则应加0。这样,您就可以跟踪符合条件的元素数量。

val xs = [1,3,5,8,6,9,10,14,13,16,15]

val len = List.foldr (fn (x, t) => (if x > 5 andalso x < 15 then 1 else 0) + t) 0 xs

这是你运行它时得到的:

val xs = [1,3,5,8,6,9,10,14,13,16,15] : int list
val len = 6 : int