Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Stream 在agda中生成下一个有理数_Stream_Rational Number_Agda - Fatal编程技术网

Stream 在agda中生成下一个有理数

Stream 在agda中生成下一个有理数,stream,rational-number,agda,Stream,Rational Number,Agda,如何将下一个有理数生成为2个整数变量。例如 (1,1) (2,1) (1,2) (1,3) (3,1) .. 我有生成它的算法: if(n % 2 == d % 2) { n++; if(d > 1) d--; } else{ d++; if(n > 1) n--; } 问题是如何在Agdaa中构建动态流。我将从(1,1)开始,然后生成下一对并将其添加到流中。 请任何人帮助。有一个类似于Haskell的迭代功能: open import Relation.Nul

如何将下一个有理数生成为2个整数变量。例如 (1,1) (2,1) (1,2) (1,3) (3,1) .. 我有生成它的算法:

if(n % 2 == d % 2)
{  
  n++;
  if(d > 1) d--;
}
else{
  d++;
  if(n > 1) n--;
}
问题是如何在
Agda
a中构建动态流。我将从(1,1)开始,然后生成下一对并将其添加到流中。
请任何人帮助。

有一个类似于Haskell的
迭代功能:

open import Relation.Nullary.Decidable
open import Data.Bool using (if_then_else_)
open import Data.Nat
open import Data.Product
open import Data.Stream

next : ℕ × ℕ -> ℕ × ℕ
next (n , m) = if ⌊ n ≟ 1 ⌋ then m + 1 , 1 else pred n , suc m

stream : Stream (ℕ × ℕ)
stream = iterate next (1 , 1)

open import Relation.Binary.PropositionalEquality
open import Data.Vec hiding (take)

test : take 10 stream ≡ (1 , 1) ∷ (2 , 1) ∷ (1 , 2) ∷ (3 , 1) ∷ (2 , 2) ∷ (1 , 3)
                                ∷ (4 , 1) ∷ (3 , 2) ∷ (2 , 3) ∷ (1 , 4) ∷ []
test = refl

您知道如何访问单个元素吗??