[英]Agda stdlib Vec calling last after doing fromList on a List
[英]Agda: Vector Membership in Stdlib? (And how to learn stdlib in general)
我正在用Agda處理字符串,並且有一個向量。 我需要檢查給定的字符串是否出現在向量中(作為檢查變量是否在表達式中自由或綁定的一部分,按照我正在做的PL理論)。
我仍在尋找標准庫的方法,並且發現我花了很多時間尋找其他語言(Haskell等)的標准庫中的基本函數。 有很多學習語言及其概念的資源,但是我在Agda,通用庫等中進行的應用程序編程方面卻見識不多。
標准庫中是否有Vectors的隸屬函數,或者是一種簡單的構造函數,還是我需要自己編寫該函數? (顯然,此類函數將通過元素類型的可確定相等性進行參數化)
您如何學習Agda中的標准庫? 是否有良好的指南/教程,或類似hoogle的工具?
標准庫中是否有Vectors的隸屬函數,或者是一種簡單的構造函數,還是我需要自己編寫該函數?
從來沒聽說過。 這里有正確的概念 ,但沒有搜索功能AFAICT。 使用我在其余答案中描述的命令不會產生任何結果。
您如何學習Agda中的標准庫? 是否有良好的指南/教程,或類似hoogle的工具?
在emacs內部,您可以使用Cc Cz
搜索范圍內的定義。 您可以同時使用標識符(它將選擇類型提及它們的定義)和字符串文字(它將選擇其標識符包含該字符串的定義)。
因此,瀏覽庫的一種方法是open import
很多模塊,並對精心選擇的關鍵字使用Cc Cz
。 例如在以下模塊中
module Explore where
open import Data.Nat
open import Data.Nat.Divisibility
open import Data.Nat.Properties
open import Data.Nat.Properties.Simple
擊鍵Cc Cz _*_ _+_ RET
返回:
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.⊥
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.