Vector Agda:Stdlib中的矢量成员资格?(以及一般如何学习stdlib)
我在处理Agda中的字符串,我得到了它们的向量。我需要检查给定的字符串是否出现在向量中(作为检查变量在表达式中是自由的还是有界的一部分,在我正在做的PL理论wprk中) 我仍然在寻找标准库的方法,我发现我花了很多时间寻找其他语言(Haskell等)的标准库中的基本函数。有很多学习语言及其概念的资源,但我在Agda、公共库等应用编程方面看到的并不多Vector Agda:Stdlib中的矢量成员资格?(以及一般如何学习stdlib),vector,functional-programming,proof,agda,dependent-type,Vector,Functional Programming,Proof,Agda,Dependent Type,我在处理Agda中的字符串,我得到了它们的向量。我需要检查给定的字符串是否出现在向量中(作为检查变量在表达式中是自由的还是有界的一部分,在我正在做的PL理论wprk中) 我仍然在寻找标准库的方法,我发现我花了很多时间寻找其他语言(Haskell等)的标准库中的基本函数。有很多学习语言及其概念的资源,但我在Agda、公共库等应用编程方面看到的并不多 在标准库中是否有向量的隶属函数,或者是否有一个简单的一行程序来构造一个隶属函数,或者是否需要我自己编写该函数?(显然,对于元素类型,这样的函数将参数化
C-C-z
搜索范围中的定义。您可以同时使用标识符(它将选择其类型提到它们的定义)和字符串文本(它将选择其标识符包含该字符串的定义)
因此,探索该库的一种方法是打开import
许多模块,并在仔细选择的关键字上使用C-C-z
。例如,在以下模块中
module Explore where
open import Data.Nat
open import Data.Nat.Divisibility
open import Data.Nat.Properties
open import Data.Nat.Properties.Simple
击键C-C-z*\uu+\uret
返回:
Definitions about _*_, _+_
+-*-suc : (m n : ℕ) → m * suc n .Agda.Builtin.Equality.≡ m + m * n
/-cong : {i j : ℕ} (k : ℕ) → i + k * i ∣ j + k * j → i ∣ j
distribʳ-*-+
: (m n o : ℕ) → (n + o) * m .Agda.Builtin.Equality.≡ n * m + o * m
im≡jm+n⇒[i∸j]m≡n
: (i j m n : ℕ) →
i * m .Agda.Builtin.Equality.≡ j * m + n →
(i ∸ j) * m .Agda.Builtin.Equality.≡ n
isCommutativeSemiring
: .Algebra.Structures.IsCommutativeSemiring
.Agda.Builtin.Equality._≡_ _+_ _*_ 0 1
nonZeroDivisor-lemma
: (m q : ℕ) (r : .Data.Fin.Fin (suc m)) →
.Data.Fin.toℕ r .Relation.Binary.Core.≢ 0 →
suc m ∣ .Data.Fin.toℕ r + q * suc m → .Data.Empty.⊥