Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以使用Coq中的函数作为构造函数吗?_Coq - Fatal编程技术网

我可以使用Coq中的函数作为构造函数吗?

我可以使用Coq中的函数作为构造函数吗?,coq,Coq,我试图编写一个函数来确定一个数字是否是奇数,如果是,则返回它,如果不是,则返回它。为了做到这一点,我用一个奇数函数匹配了这个数字,如果它是奇数的话,这个函数将返回true。如何将其用作构造函数? 不能将任何函数当作match子句中的构造函数来使用。只有出现在数据类型声明中的构造函数才能以这种方式使用。但是,oddb函数返回一个布尔值,它是由构造函数定义的数据类型,因此允许您匹配其结果: match oddb n with | true => (* return something *)

我试图编写一个函数来确定一个数字是否是奇数,如果是,则返回它,如果不是,则返回它。为了做到这一点,我用一个奇数函数匹配了这个数字,如果它是奇数的话,这个函数将返回true。如何将其用作构造函数?

不能将任何函数当作match子句中的构造函数来使用。只有出现在数据类型声明中的构造函数才能以这种方式使用。但是,oddb函数返回一个布尔值,它是由构造函数定义的数据类型,因此允许您匹配其结果:

match oddb n with
| true  => (* return something *)
| false => (* return something else *)
end
实际上,您可以像在其他函数式编程语言中一样,将这个更详细的表单作为常规if-then-else表达式编写。当你写作时

if oddb n then
  (* return something *)
else 
  (* return something else *)

Coq自动将您的输入转换为上述表格

嗨,欢迎来到斯塔克福。请您更具体地向我们展示代码片段,这将有助于理解您真正想要做的事情。您好,您能否将您的代码以文本形式发布在邮件中,而不是使用屏幕截图?例如,您可以将代码粘贴在反勾号之间,这应该由stackoverflow接口来解释。在任何情况下,使用它作为构造函数是什么意思?你的意思是在匹配的左侧?但第二种形式实际上是有意义的,因为if函数取决于奇数n是否返回true,然后它将继续执行相应的操作。@Someone你说的第二种形式是什么?我写的if表达式?是的,我同意这是有道理的。但如果这就是你说的,我不理解你的评论。。。