相关疑难解决方法(0)

OCaml:在另一个内部匹配表达式?

我目前正在与OCaml合作开展一个小项目; 一个简单的数学表达式简化器.我应该在表达式中找到某些模式,并简化它们,以便表达式中的括号数减少.到目前为止,我已经能够实现大多数规则,除了两个,为此我决定创建一个递归的,模式匹配的"过滤器"函数.我需要实现的两个规则是:

- 将形式a - (b + c)或类似形式的所有表达式转换为a - b - c

- 将形式a /(b*c)或类似的所有表达式转换为a/b/c

...我怀疑它会相当简单,一旦我设法实现了一个,我就可以轻松实现另一个.但是,我遇到了递归模式匹配函数的问题.我的类型表达式是这样的:

type expr =
 | Var of string            (* variable *)
 | Sum of expr * expr       (* sum  *)
 | Diff of expr * expr      (* difference *)
 | Prod of expr * expr      (* product *)
 | Quot of expr * expr      (* quotient *)
;;
Run Code Online (Sandbox Code Playgroud)

我主要遇到麻烦的是在比赛表达中.例如,我正在尝试这样的事情:

let rec filter exp =   
    match exp with       
    | Var v -> Var v                        
    | Sum(e1, …
Run Code Online (Sandbox Code Playgroud)

ocaml pattern-matching

49
推荐指数
2
解决办法
3万
查看次数

标签 统计

ocaml ×1

pattern-matching ×1