簡體   English   中英

我們是否有一種簡單的方法可以在 agda 中查看詳細的核心術語?

[英]Do we have an easy way to see elaborated core terms in agda?

我正在研究依賴模式匹配在 agda 中的工作原理。 如果我能看到.agda文件的任意源代碼的詳細核心術語( https://github.com/agda/agda/blob/master/src/full/Agda/Syntax/Internal.hs#L202 ),它將是對我真的很有幫助。

但是,agda cli 似乎沒有為這種用法提供任何選項。 有沒有?

根據您想要多少細節,您可以嘗試三個選項,盡管它們都不是完美的:

  1. 如果您只想查看隱式 arguments Agda 插入了什么,您可以啟用標志--show-implicit--show-irrelevant irrelevant ,通過添加_ = {! yourTerm !} _ = {! yourTerm !}在文件底部,用Cc Cl重新加載文件,然后在孔內按 cursor 的Cu Cc Cm [寫出來讓我意識到應該有一個更簡單的方法來做到這一點。]

  2. If you want to inspect and possibly manipulate the full AST of an Agda term, you can do so using the reflection API ( https://agda.readthedocs.io/en/v2.6.2.1/language/reflection.html ). 特別是,您可以使用quoteTerm原語獲得任意 Agda 術語的反射語法。

  3. 最后,如果您需要更多信息,您可以查看 Agda 本身的源代碼並啟用調試標志以打印您想要的信息。 請注意,無法保證此調試信息將有用甚至可讀,因為它旨在供開發人員使用。 話雖如此,例如,您可以通過在文件頂部添加{-# OPTIONS -v tc.cc:12 #-}來打印通過模式匹配從定義生成的案例樹。 在 Emacs 中,此調試信息將最終保存在名為*Agda debug*的單獨緩沖區中(您必須在加載 .agda 文件后手動打開該緩沖區)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM