2

我想访问元组的随机成员,但不确定如何设置#n变量。

这是我的代码:

val lis = ("a","b","c","d")
val randNumber = Random.randRange (1,4) (Random.rand (0,1)) 
val randChar = #randNumber lis //this is where its failing

这就是我通常访问的方式,比如成员 #2:

val lis = ("a","b","c","d")
val ranChar = #2 lis;

所以我的问题是如何#2在上面的例子中设置一个变量?

非常感谢您提前!!

4

2 回答 2

2

我想你不能。访问运算符的类型是什么?如果你想动态随机访问你的数据,你应该先把它转换成一个向量。

PS:有些语言(Coq、Agda 等)可以键入此类访问运算符,但这需要依赖类型(或至少类型级整数加上一些魔法,也许 Omega 也可以这样做)。

于 2011-04-14T06:39:20.080 回答
2

有一些变通方法,例如,您可以显式匹配randNumber并调用适当的成员函数:

    val randChar = case randNumber of
                      1 => #1 lis
                    | 2 => #2 lis
                    | 3 => #3 lis
                    | _ => #4 lis

当然,这个扩展性不是很好。另一种解决方法是更改lis​​ toList和 use的表示List.nth

List.nth(lis, randNumber-1)

希望它能以某种方式帮助你。

于 2011-04-14T08:50:39.157 回答