Skip to content

Commit

Permalink
chore: add example of tail recursion (#262)
Browse files Browse the repository at this point in the history
* chore: add example of tail recursion
  • Loading branch information
ajewellamz authored Apr 2, 2024
1 parent 64f72c1 commit bb25c2f
Showing 1 changed file with 19 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,25 @@ module {:options "-functionSyntax:4"} ParseJsonManifests {
}
by method {
// This function ideally would be`{:tailrecursion}`
// but it is not simple to here is a method
// so that it does not explode with huge numbers of tests.
// at the time this did not seem simple.
// Here is an example of how to make it tail recursive that may work.
// However, we're leaving this as "by method"
// to avoid changing anything and to provide an example of how to do that

// function {:tailrecursion} BuildEncryptTestVector2(
// keys: KeyVectors.KeyVectorsClient,
// obj: seq<(string, JSON)>,
// acc : seq<EncryptTestVector> := []
// )
// : Result<seq<EncryptTestVector>, string>
// {
// if |obj| == 0 then
// Success(acc)
// else
// var encryptVector :- ToEncryptTestVector(keys, obj[0].0, obj[0].1);
// BuildEncryptTestVector2(keys, obj[1..], acc + [encryptVector])
// }

var i: nat := |obj|;
var vectors := [];

Expand Down

0 comments on commit bb25c2f

Please sign in to comment.