Jac*_*ack 2 ocaml function pattern-matching
是否可以直接在指定函数上使用模式匹配,或者使用一些不需要为我需要的每个函数指定类型的漏洞利用?
只是为了解释一些事情,假设我有类似的类型
type BBoolOp = (bool->bool->bool)*term*term
Run Code Online (Sandbox Code Playgroud)
并假设这些bool->bool->bool函数非常简单,就像(&&) (||)..
是否可以根据指定的功能执行不同的操作,如:
match bop with
(||) -> do something
| (&&) -> do something else
Run Code Online (Sandbox Code Playgroud)
这不应该是可能的,因为无法比较函数,但可能存在一个漏洞来做我正在尝试做的事情:)
提前致谢
正如您所提到的,比较功能是不受支持的.在某些情况下它可能会起作用,但取决于那不是好的IMO.
所以我只想使用代数数据类型来解决这个问题.您可以通过使用多态变体重新获得模式匹配功能概念的一些灵活性(不需要模式匹配代码来了解所有可能的运算符).所以要么
type BBoolOper = And | Or
type BBoolOp = BBoolOper * term * term
Run Code Online (Sandbox Code Playgroud)
要么
type BBoolOp = [<`And | `Or] * term * term (* make opened/closed as needed *)
Run Code Online (Sandbox Code Playgroud)