首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Idris准报价概述

Idris准报价概述
EN

Stack Overflow用户
提问于 2016-08-27 00:59:03
回答 1查看 157关注 0票数 2

直到我遇到测试套件中的一些测试,我才意识到Idris有一个准引号。

以下是REPL中的一个简短示例:

代码语言:javascript
复制
Idris> :module Language.Reflection
Idris> `(S Z)
App (P (DCon 1 1)
       (NS (UN "S") ["Nat", "Prelude"])
       (Bind (MN 0 "_t")
             (Pi (P (TCon 0 0) (NS (UN "Nat") ["Nat", "Prelude"]) Erased)
                 (TType (UVar "./Prelude/Nat.idr" 22)))
             (P (TCon 0 0) (NS (UN "Nat") ["Nat", "Prelude"]) Erased)))
    (P (DCon 0 0)
       (NS (UN "Z") ["Nat", "Prelude"])
       (P (TCon 0 0) (NS (UN "Nat") ["Nat", "Prelude"]) Erased)) : TT

我想知道这是怎么回事。简要的概述和/或一些参考将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-27 10:54:11

本文定义了Idris核心语言TT的Idris表示。

核心语言由两种独立的数据类型表示:RawTTRaw用于表示要提交给类型检查器的术语,而TT表示由类型检查器生成的术语。

图3给出了RawTT的如下轮廓

-变量名称数据TTName =.-常数数据Const =I Int \ Str String .-绑定数据绑定器:(tmTy : Type) ->类型,其中Lam:(ty : a) -> Binder a Pi:(ty,种类: a) -> Binder a设:(ty,val : a) -> Binder a PVar:(ty : a) -> Binder a Hole:(ty : a) -> Binder a猜测:(ty,val:a)-> Binder a PVar:(ty:a)->Binder a Hole:(ty:a)->Binder a Pi:(ty,ty:a)->Binder a PVar:(ty:a)->Binder a Hole:(ty:a)->Binder a Pi:(ty,ty:a)->Binder a PVar:(ty:a)->Binder a Hole:(ty:a)->val : a) -> Binder a-尚未被键入的术语-数据Raw = Var TTName RBind TTName (Binder Raw)

文中还参考了描述准报价机制的论文http://davidchristiansen.dk/pubs/type-directed-elaboration-of-quasiquotations.pdf

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39176497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档