- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
So
的预期目的是什么?类型?音译为Agda:
data So : Bool → Set where
oh : So true
So
将 bool 命题提升为逻辑命题。 Oury 和 Swierstra 的介绍性论文
The Power of Pi给出了一个由表的列索引的关系代数的例子。取两个表的乘积要求它们具有不同的列,为此它们使用
So
:
Schema = List (String × U) -- U is the universe of SQL types
-- false iff the schemas share any column names
disjoint : Schema -> Schema -> Bool
disjoint = ...
data RA : Schema → Set where
-- ...
Product : ∀ {s s'} → {So (disjoint s s')} → RA s → RA s' → RA (append s s')
Schema
上构建逻辑关系似乎更自然。 s 以确保脱节:
Disjoint : Rel Schema _
Disjoint s s' = All (λ x -> x ∉ cols s) (cols s')
where cols = map proj₁
So
与“正确的”证明项相比,似乎有严重的缺点:
oh
上的模式匹配没有给你任何信息,你可以用它来做另一个术语类型检查(是吗?) - 这意味着
So
values 不能有效地参与交互式证明。将此与
Disjoint
的计算有用性进行对比。 ,表示为
s'
中每一列的证明列表没有出现在
s
.
So (disjoint s s')
比
Disjoint s s'
写起来更简单- 你必须定义 bool 值
disjoint
在没有类型检查器帮助的情况下运行 - 无论如何
Disjoint
当你想要操纵其中包含的证据时,它会物有所值。
So
构建
Product
时省力.为了给出
So (disjoint s s')
的值,你还是要在
s
上做足够多的模式匹配和
s'
以满足类型检查器,它们实际上是不相交的。丢弃由此产生的证据似乎是一种浪费。
So
对于部署它的代码的作者和用户来说似乎都很笨拙。 '所以',在什么情况下我想使用
So
?
最佳答案
如果您已经有 b : Bool
,你可以把它变成命题:So b
,比 b ≡ true
短一点.有时(我不记得任何实际情况)没有必要打扰正确的数据类型,这个快速解决方案就足够了。
So
seems to have serious disadvantages compared to a "proper" proof-term: pattern matching onoh
doesn't give you any information with which you could make another term type-check. As a corollary,So
values can't usefully participate in interactive proving. Contrast this with the computational usefulness ofDisjoint
, which is represented as a list of proofs that each column ins'
doesn't appear ins
.
So
确实为您提供与
Disjoint
相同的信息- 你只需要提取它。基本上,如果
disjoint
之间没有不一致和
Disjoint
,那么你应该可以写一个函数
So (disjoint s) -> Disjoint s
使用模式匹配、递归和不可能的情况消除。
So : Bool -> Set
So true = ⊤
So false = ⊥
So
成为一种非常有用的数据类型,因为
x : So true
立即减少到
tt
由于
⊤
的 eta 规则.这允许使用
So
就像一个约束:在伪 Haskell 中我们可以写
forall n. (n <=? 3) => Vec A n
n
是规范形式(即
suc (suc (suc ... zero))
),然后是
n <=? 3
可以由编译器检查,不需要证明。在实际的 Agda 中,它是
∀ {n} {_ : n <=? 3} -> Vec A n
{_ : False (m ≟ 0)}
)。我猜想写一个可用的机器版本是不可能的
here没有这个简单的定义:
Is-just : ∀ {α} {A : Set α} -> Maybe A -> Set
Is-just = T ∘ isJust
T
是
So
在 Agda 的标准库中。
So
-as-a-data-type 可以用作
So
-作为约束:
open import Data.Bool.Base
open import Data.Nat.Base
open import Data.Vec
data So : Bool -> Set where
oh : So true
instance
oh-instance : So true
oh-instance = oh
_<=_ : ℕ -> ℕ -> Bool
0 <= m = true
suc n <= 0 = false
suc n <= suc m = n <= m
vec : ∀ {n} {{_ : So (n <= 3)}} -> Vec ℕ n
vec = replicate 0
ok : Vec ℕ 2
ok = vec
fail : Vec ℕ 4
fail = vec
关于functional-programming - 所以 : what's the point?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33270639/
main.cpp #include "Primes.h" #include int main(){ std::string choose; int num1, num2; w
似乎函数 qwertyInches() 应该可以工作但是当我在 main() 中调用它时它给了我 [Error] called object 'qwertyInches' is not a funct
我无法理解 C++ 语法的工作原理。 #include using namespace std; class Accumulator{ private: int value; public:
在 类中声明 函数成员时,我们可以同时执行这两种操作; Function first; Function() second; 它们之间有什么区别? 最佳答案 Function 代表任意函数: void
“colonna”怎么可能是一个简单的字符串: $('td.' + colonna).css('background-color','#ffddaa'); 可以正确突出显示有趣单元格的背景,并且: $
我正在尝试将网页中的动态参数中继到函数中,然后函数将它们传递给函数内部的调用。比如下面这个简化的代码片段,现在这样,直接传入参数是没有问题的。但是,如何在不为每个可能的 colorbox 参数设置 s
C++ 中是否有一种模式允许您返回一个函数,它返回一个函数本身。例如 std::function func = ...; do { func = func(); } while (func);
我正在将 Windows 程序集移植到 Linux。我有一些代码要移植。我实际上是 linux 中 C 的新手。我知道 C 基础知识是一样的! typedef struct sReader {
我一直在寻找一个很好的解释,所以我很清楚。示例: this.onDeleteHandler(index)}/> 对比 对比 this.nameChangedhandler(event, perso
function(){}.__proto__ === Function.prototype 和 Function.prototype === function(){}.__proto__ 得到不同的结
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function 据说 Propert
VBA 中的函数没有特殊类型。我很难理解如何在 Excel VBA 中将函数作为参数添加到函数中。 我想要完成的是这样的事情: function f(g as function, x as strin
所以我正在尝试制作一个包(我没有在下面包含我的 roxygen2 header ): 我有这个功能: date_from_text % dplyr::mutate(!!name := lubr
尝试从 std::function 派生一个类,对于初学者来说,继承构造函数。这是我的猜测: #include #include using namespace std; template cla
我正在尝试编写一个返回另一个函数的函数。我的目标是编写一个函数,它接受一个对象并返回另一个函数“search”。当我使用键调用搜索函数时,我想从第一个函数中给定的对象返回该键的值。 propertyO
我非常清楚函数式编程技术和命令式编程技术之间的区别。但是现在有一种普遍的趋势是谈论“函数式语言”,这确实让我感到困惑。 当然,像 Haskell 这样的一些语言比 C 等其他语言更欢迎函数式编程。但即
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 8 年前。 Improv
我在stackoverflow上查过很多类似的问题,比如call.call 1 , call.call 2 ,但我是新人,无法发表任何评论。我希望我能找到关于 JavaScript 解释器如何执行这些
向 Twilio 发送 SMS 时,Twilio 会向指定的 URL 发送多个请求,以通过 Webhook 提供该 SMS 传送的状态。我想让这个回调异步,所以我开发了一个 Cloud Functio
作为 IaC 的一部分,A 功能应用 ,让我们将其命名为 FuncAppX 是使用 Terraform 部署的,它有一个内置函数。 我需要使用 Terraform 在函数应用程序中访问相同函数的 Ur
我是一名优秀的程序员,十分优秀!