我收到以下错误消息:
"failure in proveterminate Error: Partial application of function convert_btree_to_tree in its body is not allowed while using Function"
来自下面的Coq脚本,但我不知道出了什么问题。谁能给我一些建议?
Function convert_btree_to_tree (t: btree (non_terminal' non_terminal terminal) terminal) {measure (fun t => bheight _ _ t)}:
tree (non_terminal' non_terminal terminal) terminal:=
let tl:= decompose t in
let ttl:= map convert_btree_to_tree tl in
let ttl':= convert_list_tree_to_tree_list ttl in
match broot _ _ t with
| inl n => node _ _ n ttl'
| inr t => node_t _ _ t
end.
有关功能的文档在参考手册中非常有限,是否有人知道更完整和详细的参考,如果可能,还有评论和示例?
答案 0 :(得分:0)
我对Function
了解不多,但在match
中,您会返回node
和node_t
。由于你没有给出定义,我不知道这两个构造函数是否来自同一类型,但我认为你有一个拼写错误,第二个案例应该返回node t _ _ t
。
在马库斯的反馈后编辑:
node_t
是tree
的构造函数,签名为terminal -> tree
:如果foo
类型为terminal
,则node_t foo
属于树类型。 node
具有签名non_terminal -> tree_list -> tree
。
您是否声明了任何隐式参数?否则,在match
个案例中,您对node
和node_t
应用的参数太多,可能会被解释为部分应用。