【发布时间】:2019-11-22 04:31:03
【问题描述】:
谁能告诉我为什么我的函数在“f v”左右时不起作用我收到此错误“此表达式具有 int 类型但表达式应为树类型”
let rec function1 t f=match t with
|Nil->Nil
|T(l,v,r)->if f l v r then T( function1 l f, f v, function1 r f) else T(l,v,r)
let f x= x mod 2=0;;
type tree = Nil | T of tree * int * tree;;
树需要先序遍历
【问题讨论】:
-
您的条件中的调用
f l v r和重构树中的f v不匹配和/或没有意义。你想在函数中传递什么来测试,你希望返回的树看起来像什么? -
我希望我的树只包含函数 f=x mod 2=0 返回 true 的节点
-
是的,鉴于该函数只有一个参数,您不应传递三个参数。您还希望返回相同的节点,而不是作为值的布尔树。
-
如果节点返回 false 会发生什么?你是忽略它的左右分支还是继续它的左右分支?
标签: ocaml