在 SML 中将数组转换为列表
Convert Array to List in SML
如何在 sml 中将 array
类型转换为 list
类型。我已经搜索了列表和数组结构函数,但没有找到执行此操作的函数(虽然有一个数组函数列表)。
List结构说明:
http://sml-family.org/Basis/list.html
似乎没有内置的 List.fromArray
或 Array.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
-
虽然没有内置的直接转换函数,但您可以使用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
如何在 sml 中将 array
类型转换为 list
类型。我已经搜索了列表和数组结构函数,但没有找到执行此操作的函数(虽然有一个数组函数列表)。
List结构说明: http://sml-family.org/Basis/list.html
似乎没有内置的 List.fromArray
或 Array.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
-
虽然没有内置的直接转换函数,但您可以使用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