是否有更优雅的方式来编写以下Coq代码?

时间:2017-09-22 08:39:21

标签: coq

match x with
| Some x => Some (Ref x)
| None => None
end.

我必须做很多事情,嵌套匹配使代码看起来很糟糕。是否有一些更优雅的,一种班轮式的方法可以解决方案的问题?

2 个答案:

答案 0 :(得分:6)

Coq.Init.Datatypes中的selected: string; filter: any; radioChange() { this.filter['property'] = selected; console.log(this.filter); } 函数定义如下:

option_map

您可以像@ejgallego在评论中显示的那样使用它:Definition option_map (A B:Type) (f:A->B) (o : option A) : option B := match o with | Some a => @Some B (f a) | None => @None B end.

以下是您发现此功能的方法:

option_map Ref x

答案 1 :(得分:5)

更一般地说,您可能需要考虑使用monadic语法;使用一些Notation声明很容易定义一些自己,或者你可以使用像Gregory Malecha的ExtLib这样功能更强大的库。