Spr*_*ips 1 ocaml ml evaluator
type bool_exp =
TT
| FF
| Var of string
| And of bool_exp * bool_exp
| Not of bool_exp ;;
eval : bool_exp -> (string -> bool) -> bool
Run Code Online (Sandbox Code Playgroud)
我正在尝试编写一个名为的求值函数eval
.我是OCaml的新手并不习惯语法.我在哪里可以写这篇文章?
使用类似数据类型的主要设备bool_exp
是模式匹配.也就是说,对于函数输入的每种可能情况,您可以单独指定其行为.你的eval
功能的骨架可能看起来像
let rec eval e env =
match e with
TT -> ...
| FF -> ...
| Var x -> ...
| And (e1, e2) -> ...
| Not e
;;
Run Code Online (Sandbox Code Playgroud)
第一个参数e
是应该计算的表达式,第二个参数env
通常称为环境,将变量(由字符串表示)映射到值(这里只是布尔常量).
在rec
需要的时候定义的函数是递归的(即,在函数体中使用本身),而且由于你的数据类型是递归定义,也eval
将是递归的.例如,为了评估And (e1, e2)
您首先必须知道相同环境的值e1
和e2
相同的环境.
这应该让你开始.
归档时间: |
|
查看次数: |
319 次 |
最近记录: |