- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在阅读 Isabelle 教程,并试图阐明我使用 primrec 和 fun 的概念。到目前为止我搜索过的内容,包括答案 here ;我知道 primrec 中的构造函数只能有一个方程,而 primrec 默认有 [simp] 而 fun 可以有多个方程,并且需要明确指定自动化策略。但是,我仍然很难清楚地理解它。
有没有好心人用一些例子来解释一下?
最佳答案
primrec
是否primitive recursion在代数数据类型上(或者已经设置为看起来像一个的东西,比如自然数;我对它的内部了解不多)。这意味着您可以拥有的递归方案类型有很多限制:
f (x#xs) (y#ys) = …
的事情或 f n = (if n = 0 then … else …)
. x # xs
,而不是 x # y # xs
)f (Node l r) = … f l … f r …
,但不是 f (Node l r) = … f (Node r l) …
. fun
来自函数包,是
function
的简化版试图证明穷举性、模式的非重叠性和自动终止。这适用于实践中出现的大多数功能;如果没有,则必须使用
function
并亲手证明这些事情。终止通常是一个棘手的问题。
fun
的主要区别和
primrec
是
fun
没有我上面为
primrec
列出的任何限制.与
fun
,几乎一切都会过去。据我所知,一切
primrec
可以做,
fun
也可以。
function
还可以做很多其他的事情,例如互递归函数、偏函数(即不会在所有输入上终止的函数)、条件函数方程等。请参阅
function package manual有关这方面的更多信息。
function
的另一个特点命令是它为用它定义的每个函数生成许多有用的规则,例如
cases
规则,
induction
规则,
elims
规则等。此外,您可以使用
fun_cases
自动派生专门的消除规则。命令。这也在手册中描述。
fun
通常是您想要使用的。如果不够用
function
.您可以使用
primrec
对于非常简单的功能,但这样做没有真正的优势。另一个可能对非终止函数感兴趣的替代方法是
inductive
.
关于isabelle - Isabelle/HOL 中的 primrec 和 fun 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30419419/
我试过谷歌搜索但找不到准确的答案,所以请允许我尝试在这里提问。如果问题看起来不合适,请告诉我,我会删除它。 在 JS 中,您可以通过三种不同的方式编写特定的内置功能: 字符串长度 str.toStri
在《Professional JavaScript for Web Developers》第三版一书中,它说: var name = "The window"; var object = {
我试图找到答案,但是我经常失败。我有一个带有一列字符串的数据框。我想计算该列每个条目中的字符数,并用计数替换字符串列。 data[,29]=apply(data[,29],nchar()) Out[2
class A(object): def fun(self): pass ins_a = A.fun ins_b = A().fun 我遇到了这段代码,但我无法理解这两个对象之
表达式fun和&fun的类型是否相同? 考虑以下代码: template void check(T) { static_assert(is_same::value); } void fun(
我遇到了一段代码,如下所示 qsort(array, 10, sizeof(int), sort); 这里 sort 又是一个函数。但我一直觉得任何被调用的函数都应该在函数名称后加上 () ,或者我错
void fun(){ std::cout << "hello" << std::endl; } namespace enc{ using ::fun; } 上面的这段代码没有错误。我
源代码: static bool cmp(pair& m, pair& n) { return m.second > n.second; } priority_queue, vector>,
setTimeout 的行为有点令人困惑,我读过的所有资源都表明,当没有指定延迟时,任务将被附加到队列末尾,并在解释器无事可做时执行(空队列?)。但是,请看以下示例: setTimeout(funct
我正在使用一些内置函数 fun(void **args) 并调用这个传递参数的函数 fun(args); 所以 是什么意思void **args 以及如何检查值 args 在 C 中有什么。 void
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: How come pointer to a function be called without deref
我正在使用 dlsym 来填充函数指针,它是 call 的一个成员变量。像下面一样 class ABC { private: void (*m_fun) (int); } 现在如果我分配 m_
在reactjs中使用功能组件时,我有一个onClick事件处理程序。 我按以下方式调用它; onClick={ props.function } 而不是; onClick={ props.funct
哪个语句更有效 --> perl 中的 goto &fun($val) 或 fun($val)?何时使用哪个语句以获得更好的性能?请告诉我答案! 最佳答案 我认为这是一个错误的问题。 fun($val
我正在考虑有关 suspend 的事情Arrow 的文档详细解释了:suspend () -> A提供与 IO 相同的保证. 因此,根据文档,只需使用 suspend我们正在将不纯函数转换为纯函数:
谁能告诉我 我使用这个方法“[aClass respondsToSelector:@selector(fun)]”来查找任何类(class)中是否有乐趣 但是当 fun 有三个参数时我该如何处理呢??
下面是在使用new创建的对象上定义方法的两种方法。关键词。我正在尝试比较每种方法的工作原理和效果。 1) 函数式 mixin asCircle被定义为。然后.call将 mixin 注入(inject
如主题标题。当我写:void fun(int *tab){} 和写 void fun(int tab[]){} 一样吗? 最佳答案 是的。 void fun(int *tab){} void fun(
在 lib Bullet 中定义了一个类型: typedef void (*btNearCallback)(btBroadphasePair& collisionPair, btCollisionDi
我愿意: Prelude> "sone" ++ "otehr" "soneotehr" 但是这样的代码: addOneToElement :: [a] -> [a] addOneToElement e
我是一名优秀的程序员,十分优秀!