idris相关内容

在依赖类型的函数式编程语言中,展平列表是否更容易?

在Haskell中寻找一个可以展平任意深度嵌套列表的函数,即递归地应用concat并在最后一次迭代时停止(使用非嵌套列表)的函数时,我注意到这需要有一个更灵活的类型系统,因为随着列表深度的变化,输入类型也会有所不同。事实上,有几个堆栈溢出问题--例如this一个--其中响应指出,不存在将在不同深度‘查看’不同嵌套列表的函数。 编辑:有些答案在Haskell中提供了解决办法,用于自定义数据类型,或 ..
发布时间:2022-08-20 11:39:27 其他开发

Idris 可以推断顶级常量类型的索引吗?

例如,Agda 允许我这样写: 打开导入Data.Vec打开导入 Data.NatmyVec : Vec ℕ _myVec = 0 ∷ 1 ∷ 2 ∷ 3 ∷ [] 和 myVec 将按预期具有 Vec ℕ 4 类型. 但如果我在 Idris 中尝试同样的方法: 导入Data.VectmyVec : Vect _ NatmyVec = [0, 1, 2, 3] 我从类型检查器收到一条 ..
发布时间:2021-09-11 19:56:06 其他开发

在 Idris 中,“Eq a"是一种类型,我可以为它提供一个值吗?

在下面,example1 是标准语法(如文档所示),Eq a 作为约束.在example2中,我直接指定Eq a作为参数的类型,编译器接受.但是,尚不清楚我可以指定什么作为该类型的值.对于特定类型 a,例如 Nat,我认为以某种方式指定 Eq Nat 的实现是有意义的,要么是默认实现,或其他一些命名实现. %default 总数示例1:等式a =>(x: a) ->(y:a) ->类型示例 1 ..
发布时间:2021-09-11 19:37:18 其他开发

如何映射一对/元组?

在 Haskell 中,我会做 join (***).在 Idris 中,flatten (***) 不起作用((***) 很复杂). 解决方案 在 Idris 中,没有 Functor/Applicative/Monad 实例用于r ->_ 和 -> 没有 Arrow 实例,只能通过 Morphism,所以使用flatten来做\外汇 ->f x x 导致非常冗长的代码,充满了从/到 M ..
发布时间:2021-09-10 20:10:03 其他开发

伊德里斯的快速排序

我正在学习 Idris,我想我会尝试为 Vect 类型实现快速排序. 但是我在使用实用方法时遇到了困难,该方法应该给定一个主元元素和一个向量,将向量一分为二,一个元素 ≤ 枢轴,另一个元素 > 枢轴. 这对于列表来说是微不足道的: splitListOn : Ord e =>(枢轴:e)->列表 e ->(清单e,清单e)splitListOn pivot [] = ([], []) ..
发布时间:2021-06-30 19:38:08 其他开发

无法声明受 Monad 约束的 MonadPlus 接口

我正在尝试像这样声明 MonadPlus 接口: 模块 NanoParsec.Plus%access 公共出口接口 Monad m =>MonadPlus 在哪里零 : m a加:m a ->m a ->嘛 但是有一个错误: |5 |接口 Monad m =>MonadPlus 在哪里|~~~~~~~检查 NanoParsec.Plus.MonadPlus#Monad m 的构造函数类型时 ..
发布时间:2021-06-03 19:22:28 其他开发

绑定到具有idris的c结构的抽象类型

我找不到如何将此 typedef struct TF_Status TF_Status; 视为抽象类型并绑定到该 c函数是 TF_Status * TF_NewStatus(); 数据TF_StatustfNewStatus:IO TF_StatustfNewStatus =外部FFI_C"TF_NewStatus"(IO TF_Status) http://docs.idris-la ..
发布时间:2021-05-06 20:38:50 其他开发

将Coq转换为Idris

将Coq来源转换为Idris的有用指南是什么(例如,它们的类型系统有多相似,如何翻译证明?)?据我所知,Idris的内置战术库极少但可扩展,因此我认为应该可以做一些额外的工作。 解决方案 我最近翻译了一大堆软件基础,并做了部分翻译 {P | N | Z} Arith 的端口,我在此过程中做了一些观察: 通常使用Idris战术(在他们的 Pruvloj / Elab.Reflectio ..
发布时间:2020-10-09 06:21:59 其他开发

在Coq中实现向量加法

在某些依赖类型的语言(例如Idris)中实现向量加法非常简单。按照 Wikipedia上的示例: 导入Data.Vect %默认总计 对=> Vect n a-> Vect n a-> Vect na pairAdd Nil Nil = Nil pairAdd(x :: xs)(y :: ys)= x + y :: pairAdd xs ys (请注意,I ..
发布时间:2020-10-09 06:17:18 其他开发

可以为教会编码的Nat归纳吗?

我只是想知道是否有可能对Idris,Agda,Coq等类似物的教堂编码Nat类型进行归纳。请注意,这与在CoC上进行处理(这是不可能的)不同,因为我们在CoC上具有更高的表达能力(例如,我们可以提取Sigma的第二个元素)。 以下是有关Idris的一个不可靠的草图(有很多语法问题): CN:类型 CN =(t:类型)-> t-> (t-> t)-> t CS:CN-> CN ..
发布时间:2020-10-09 06:15:53 其他开发

idris中BigDecimal的实现

我正在尝试在Idris中实现一个十进制.到目前为止,我已经知道了: -- a big decimal has a numerator and a 10^x value -- it has one type for zero, --TODO the numerator can't be zero for any other case --TODO and it can't be divisi ..
发布时间:2020-09-20 20:12:40 其他开发

原子编辑器中的Idris,“找不到Idris可执行文件"错误

我目前正在尝试下载Idris并将其用于Atom,并使用其编辑器.我下载了Hackage,然后从那里在计算机上安装了idris,然后将idris软件包安装在了atom上,每当我键入该程序时,它就会像Idris应该的那样突出显示,但是当我键入check时,出现两个错误,“可能t查找idris可执行文件:在"Idris"处找不到idris可执行文件"和"idris编译器已关闭或崩溃:(可能)崩溃,错误代 ..
发布时间:2020-09-13 19:15:15 其他开发

Idris中Type上的模式匹配

可能是基本的,但我不明白为什么以下功能为 fnc Nat 和 fnc Integer 回答1,甚至没有包含在模式中 fnc : Type -> Integer fnc Bool = 1 fnc Nat = 2 解决方案 您不能对类型进行模式匹配,也不应.当我编译您的代码时,我会收到下一个错误: warning - Unreachable case: fnc Nat 这已经在前 ..
发布时间:2020-08-15 19:43:43 其他开发

仅数学证明助手

大多数证明助手是具有依赖类型的功能编程语言.他们可以证明程序/算法.相反,我对最适合数学且仅适用于数学的证明助手感兴趣(例如微积分).你能推荐一个吗?我听说过Mizar,但我不喜欢关闭源代码,但是如果最适合数学,我会使用它.像Agda和Idris这样的新语言适合数学证明的程度如何? 解决方案 Coq 具有涵盖实际分析的广泛库.各种发展浮现在脑海: 标准库以及在其上构建的项目,例如现已 ..
发布时间:2020-07-23 19:02:29 其他开发

细化参数的`case`

在有关总体检查器的问题中的答案,此变通办法涉及使用case而不是with被推荐. 但是,在匹配结果细化其他参数类型的情况下,这种转换并不容易进行. 例如,给定以下定义: data IsEven : Nat -> Nat -> Type where Times2 : (n : Nat) -> IsEven (n + n) n data IsOdd : Nat -> Nat ..
发布时间:2020-07-12 18:49:23 其他开发

阿格达和伊德里斯之间的区别

我开始研究依赖类型的编程,并且发现Agda和Idris语言是最接近Haskell的语言,所以我从这里开始. 我的问题是:它们之间的主要区别是什么?两种类型的系统都同样富有表现力吗?进行全面的比较并讨论收益将是很棒的. 我已经发现了一些东西: Idris具有类型类àla Haskell,而Agda带有实例参数 Idris包含一元和适用的符号 它们两者似乎都具有某种可重新绑定的语 ..
发布时间:2020-07-12 05:36:11 其他开发

类型参数和索引之间的区别?

我对依赖类型是陌生的,并且对两者之间的区别感到困惑.似乎人们通常会说一种类型是由另一种类型参数化,而由某些值索引.但是,在依赖类型的语言中,类型和术语之间是否没有区别?参数和索引之间的区别是根本的吗?能否给我展示一些示例,这些示例在编程和定理证明中都表现出不同的含义? 解决方案 当您看到一系列类型时,您可能会想知道它具有的每个参数是 parameters 还是 indices . 参 ..
发布时间:2020-07-12 05:36:04 其他开发