我如何在 Dafny 中表示一对(二元组)?
How do I represent a pair (two tuple) in Dafny?
我如何编写一个接受整数序列和 return 对序列的愚蠢 function
?例如,输入 = [1,2],输出 = [Pair(1,1), Pair(1,2)]
我从
开始
function foo (l : seq<int>) : seq<Pair>
{
if |l| == 0 then []
else new Pair() ....
}
这似乎不起作用。
您不能在函数中使用 new
,因为函数在 Dafny 中是纯函数,它们不能修改堆。要么使用 inductive datatypes
datatype Pair = Pair(fst:int, snd:int)
function foo (l : seq<int>) : seq<Pair>
{
if |l| <= 1 then []
else [Pair(l[0],l[1])] + foo(l[2..])
}
或使用tuples
function foo (l : seq<int>) : seq<(int,int)>
{
if |l| <= 1 then []
else [(l[0],l[1])] + foo(l[2..])
}
我如何编写一个接受整数序列和 return 对序列的愚蠢 function
?例如,输入 = [1,2],输出 = [Pair(1,1), Pair(1,2)]
我从
开始function foo (l : seq<int>) : seq<Pair>
{
if |l| == 0 then []
else new Pair() ....
}
这似乎不起作用。
您不能在函数中使用 new
,因为函数在 Dafny 中是纯函数,它们不能修改堆。要么使用 inductive datatypes
datatype Pair = Pair(fst:int, snd:int)
function foo (l : seq<int>) : seq<Pair>
{
if |l| <= 1 then []
else [Pair(l[0],l[1])] + foo(l[2..])
}
或使用tuples
function foo (l : seq<int>) : seq<(int,int)>
{
if |l| <= 1 then []
else [(l[0],l[1])] + foo(l[2..])
}