我正在尝试使用前一行(tmp)的列表生成pascal三角形,并且想要评估列表的大小并匹配这种情况,如下所示:
(* b is the index pos I'm generating at the moment *)
(* I need a function I can pass into another function, so the case must evaluate at runtime *)
fun b -> match b with
| 0 -> 1
| List.length tmp -> 1
| _ -> (* Ignore this part *)
为什么第二行不评估和匹配?
答案 0 :(得分:2)
OCaml匹配非常有效,因为模式是编译时已知的常量。要与运行时计算的值进行比较,您可以使用if
。
when
中还有一个match
子句,可用于在执行初始匹配后测试表达式的值。这相当于if
,但有时更清晰。
答案 1 :(得分:1)
match
不是一种模式 - 这是一种表达方式; curl -v --tlsv1 https://prod.example.com:443/BLAH/BLAH_NO_SAML --cert cert.pem
仅适用于模式。
见patterns
答案 2 :(得分:0)
此处没有模式,只有条件表达式的值才能进行评估,因此如果有更多适应的说明,请使用。
if b = 0 then 1 else
if b = (List.length tmp) then 1 else
whatever expression