[英]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 似乎沒有為這種用法提供任何選項。 有沒有?
根據您想要多少細節,您可以嘗試三個選項,盡管它們都不是完美的:
如果您只想查看隱式 arguments Agda 插入了什么,您可以啟用標志--show-implicit
和--show-irrelevant
irrelevant ,通過添加_ = {! yourTerm !}
_ = {! yourTerm !}
在文件底部,用Cc Cl
重新加載文件,然后在孔內按 cursor 的Cu Cc Cm
。 [寫出來讓我意識到應該有一個更簡單的方法來做到這一點。]
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 術語的反射語法。
最后,如果您需要更多信息,您可以查看 Agda 本身的源代碼並啟用調試標志以打印您想要的信息。 請注意,無法保證此調試信息將有用甚至可讀,因為它旨在供開發人員使用。 話雖如此,例如,您可以通過在文件頂部添加{-# OPTIONS -v tc.cc:12 #-}
來打印通過模式匹配從定義生成的案例樹。 在 Emacs 中,此調試信息將最終保存在名為*Agda debug*
的單獨緩沖區中(您必須在加載 .agda 文件后手動打開該緩沖區)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.