加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 程序设计 > 正文

依赖类型 – 是否有一个很好的方法来直接使用` – `作为Idris的函数?

发布时间:2020-05-24 02:36:13 所属栏目:程序设计 来源:互联网
导读:例如,可以在Idris中的函数中返回一个类型 t : Type - Type - Typet a b = a - b 但是,我想要使用的情况出现(在尝试编写一些解析器时) – 折叠类型列表,即 typeFold : List Type - TypetypeFold = foldr1 (-) 所以typeFold [String,Int]会给出String – Int:T

例如,可以在Idris中的函数中返回一个类型

t : Type -> Type -> Type
t a b = a -> b

但是,我想要使用的情况出现(在尝试编写一些解析器时) – >折叠类型列表,即

typeFold : List Type -> Type
typeFold = foldr1 (->)

所以typeFold [String,Int]会给出String – > Int:Type.虽然如此,

error: no implicit arguments allowed
    here,expected: ")",dependent type signature,expression,name
typeFold = foldr1 (->)
                   ^

但这样做很好:

t : Type -> Type -> Type
t a b = a -> b

typeFold : List Type -> Type
typeFold = foldr1 t

有没有更好的工作方式 – >如果不是值得提升作为功能请求?

使用的问题 – >以这种方式,它不是一个类型构造函数,而是一个binder,其中绑定域名的范围在范围内,所以 – >本身没有直接的类型.例如,您对t的定义不会捕获像(x:Nat) – > P x.

虽然有点吝啬,但你在做什么是正确的做法.我不相信我们应该使用( – >)作为类型构造函数的特殊语法 – 部分原因是因为它不是一个,并且部分原因是因为它不会导致更多的混乱,当它不能与依赖类型.

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读