问题标签 [idris]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
syntactic-sugar - 是否可以在 Idris 的成语括号中使用条件语句?
像下面这样的表达式在 Idris 中是完全有效的:
有人能写出像下面这样的表达式吗?
我似乎无法编译它。
idris - 伊德里斯的公设
postulate
是否有关于Idris 中构造的性质和用途的最新信息?教程/手册中没有任何关于该主题的内容,我似乎也无法在 wiki 中找到任何内容。TIA。
dependent-type - 在构建数据类型时选择类型类
我在 idris 中有一个数据类型:
我证实它是一个具有统一性、格子、组和其他一些属性的环。
现在我想创建一个对象,它保留了我注入其中的语句的表达式。我从四个类别开始代表所有的操作,所以我得到了一个很好的语法树。例如:
这不是真正的表示,我剥离了一些需要的丑陋部分,但它给出了我试图实现的想法,上面相当于:
我认识到我可以将这些数据类型合并为一个。为了到达那里,我创建了一个函数,它将选择正确的类实例:
所以我可以保证类型中的任何东西都代表这四个操作之一:
它会抱怨:
现在我的问题是:如何确保我的数据类型中的对象经过验证并将四种不同的数据类型合二为一。我真的很想确保在施工期间这是真的。我可以理解现在解决类型类有困难,但我希望 Idris 确保它可以在构建过程中稍后完成。我怎样才能做到这一点?
代码并不是真正需要的,我对思想方向感到非常满意。
typeclass - 将命名实例用于其他实例
我正在尝试在 operator和 operator上对我的自定义数据类型Semigroup
创建一个和VerifiedSemigroup
实例:Bool
&&
||
所以我首先为over 运算符创建一个命名实例:Semigroup
&&
但是在创建VerifiedSemigroup
实例时,我如何告诉 Idris 使用 的TodosSemigroup
实例Lógico
?
该代码给了我以下错误:
详细说明类型时
Prelude.Algebra.Main.TodosVerifiedSemigroup
,方法semigroupOpIsAssociative
:无法解析类型类Semigroup Lógico
dependent-type - 如何在 Idris 中将数字范围指定为类型?
我一直在尝试使用 Idris,似乎应该很简单地指定某种类型来表示两个不同数字之间的所有数字,例如NumRange 5 10
5 到 10 之间的所有数字的类型。我想包括双精度数/浮点数,但对整数执行相同操作的类型同样有用。我该怎么做呢?
idris - 错误单子的 VerifiedMonad 实例
我正在尝试完成monadLeftIdentity
以下数据类型的证明:
我省略了及其对应的实例Functor
,因为它们非常冗长和琐碎。让我知道,可以把它们都贴在这里。Applicative
Verified
我试图重写return x
为pure x
or AllGood x
,但这样做没有成功(重写对证明状态没有任何作用)。
我也尝试过这样改进return x
:
但我收到以下错误消息:
怎么办?
proof - 仅数学证明助理
大多数证明助手都是具有依赖类型的函数式编程语言。他们可以证明程序/算法。相反,我对最适合数学且仅适用于数学的证明助手感兴趣(例如微积分)。你能推荐一个吗?我听说过 Mizar,但我不喜欢源代码是封闭的,但如果它最适合数学,我会使用它。Agda 和 Idris 等新语言在多大程度上适合数学证明?
proof - 你如何证明概率在与依赖类型相乘的情况下是封闭的?
我正在与 Idris 一起工作,并且我已经为概率编写了一个类型 -Float
介于0.0
和之间1.0
:
我希望能够将它们相乘:
我如何证明这p1 * p2
将永远是一个概率?
idris - 伊德里斯:证明特定条款是不可能的
伊德里斯版本:0.9.16
我试图描述从一个base
值和一个迭代step
函数生成的构造:
使用它我可以定义Plus
,描述来自迭代添加jump
值的构造:
简单的示例用法:
以下描述了低于 的值base
是不可能的:
以下是 和 之间的base
值jump + base
:
我无法定义以下函数:
即:如果n
is notbase
加上 的自然倍数jump
,则两者都不是jump + n
。
如果我要求 Idris 区分大小写m
,它只会显示我IBase
- 然后我就卡住了。
有人会指出我正确的方向吗?
编辑 0:
申请induction
给m
我以下消息:
编辑 1: 名称更新,这里是源的副本:http: //lpaste.net/125873