【问题标题】:Convert Array to List in SML在 SML 中将数组转换为列表
【发布时间】:2015-05-13 05:58:00
【问题描述】:

如何将array 类型转换为 sml 中的list 类型。我已经搜索了列表和数组结构函数,但没有找到这样做的(虽然有一个数组函数的列表)。

List结构说明: http://sml-family.org/Basis/list.html

数组结构说明: http://sml-family.org/Basis/array.html

【问题讨论】:

    标签: sml


    【解决方案1】:

    虽然没有内置的直接转换功能,但您可以使用Array.foldr 非常轻松地构建相应的列表:

    fun arrayToList arr = Array.foldr (op ::) [] arr
    

    例子:

    - val arr = Array.fromList [6, 3, 5, 7];
    val arr = [|6,3,5,7|] : int array
    
    - val ls = arrayToList arr;
    val ls = [6,3,5,7] : int list
    

    【讨论】:

      【解决方案2】:

      似乎没有内置的List.fromArrayArray.toList。看起来最简单的定义它的方法是

      List.tabulate(Array.length(arr), fn i => Array.sub(arr, i))
      

      所以...

      Standard ML of New Jersey v110.76 [built: Thu Feb 19 00:37:13 2015]
      - val arr = Array.fromList([1, 2, 3, 4, 5]) ;;
      [autoloading]
      [library $SMLNJ-BASIS/basis.cm is stable]
      [autoloading done]
      val arr = [|1,2,3,4,5|] : int array
      
      - fun listFromArray arr = List.tabulate(Array.length(arr), fn i => Array.sub(arr, i)) ;;
      [autoloading]
      [autoloading done]
      val listFromArray = fn : 'a array -> 'a list
      
      - listFromArray(arr) ;;
      val it = [1,2,3,4,5] : int list
      
      - 
      

      【讨论】:

        猜你喜欢
        • 2013-01-11
        • 2014-06-24
        • 2013-12-23
        • 2020-01-25
        • 1970-01-01
        • 2011-02-06
        • 2022-01-18
        • 1970-01-01
        相关资源
        最近更新 更多