有没有办法使用SML打印完整列表?
通常情况发生在SML中,当我有太多元素时,它打印出前面几个用“,”分隔的元素,然后用...
省略列表的其余部分,但我想查看完整列表。有没有办法做到这一点?
val a =[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,18,19,20]
然后如果我在REPL a
上写,它会返回如下内容:
a=[1,2,3,4,5,...]
答案 0 :(得分:5)
假设您使用的是SML / NJ。
您要自定义的是Control.Print中的参考值。在这种情况下,您不能将printLength
的值更改为更大的值,例如
Control.Print.printLength := 100;
一般来说,你要改变的是print*
个引用。但是对于字符串,由于某种原因,他们选择将其称为stringDepth
。
假设您使用的是MosML。
从Moscow ML Language Overview开始,描述了Meta单元公开这两个功能(以“控制交互系统”)
val printDepth : int ref (* limit printed data depth *)
val printLength : int ref (* limit printed list and vector length *)
答案 1 :(得分:3)
我假设你正在使用Poly / ML。函数PolyML.print_depth
表示在任何结构中应该有多深的打印(包括列表)。把它改成更大的东西:
PolyML.print_depth 500
答案 2 :(得分:0)
此输出仅用于调试,虽然方便,但这不是一种正确的方法(如果生成可执行文件,则无法运行可执行文件)。要打印出与您选择的ML提示中设置的打印限制无关的所有元素,您可以执行以下操作:
import React, { Component } from 'react';
import ListView from 'react-native';
import { connect } from 'react-redux';
import ListItem from './ListItem';
class LibraryList extends Component {
componentWillMount() {
const ds = new ListView.DataSource({
rowHasChanged: (r1, r2) => r1 !== r2
});
this.DataSource = ds.cloneWithRows(this.prop.libraries);
}
renderRow(library) {
return <ListItem library={library} />;
}
render() {
return (
<ListView
dataSource={this.DataSource}
renderRow={this.renderRow}
/>
);
}
}
const maptStateToProps = state => {
return { libraries: state.libraries };
};
export default connect(maptStateToProps)(LibraryList);