【发布时间】:2015-03-26 21:24:52
【问题描述】:
您好,我需要准备考试,我们的老师给了我们一些工作要做,这是我的问题,我有一个无法解决的错误。我们正在研究算术表达式,这是我的类型:
type expr_a = Val of float
|Var of string
|Plus of expr_a * expr_a
|Moins of expr_a * expr_a
|Div of expr_a * expr_a
|Mult of expr_a * expr_a
|Umoins of expr_a
|Puiss of float * float
|Sin of expr_a
|Cos of expr_a
|Exp of expr_a
|Ln of expr_a ;;
我已经做了一个显示算术表达式的函数,但现在他给了我们一个我们需要使用的函数
let valeuropt v =
if v = "x" then Some(0.)
else if v = "y" then Some(1.)
else None;;
当我尝试使用它时,我得到一个错误:“这个表达式的类型是浮点数,但表达式应该是类型” 浮动选项
let rec partielle expr = match expr with
Var x -> valeuropt x
|Val x -> x
|Plus (e1,e2) -> (evaluer e1 +. evaluer e2)
|Moins (e1,e2) -> (evaluer e1 -. evaluer e2)
|Div (e1,e2) -> (evaluer e1 /. evaluer e2)
|Mult (e1,e2) -> (evaluer e1 *. evaluer e2)
|Puiss(a,b) -> a**b
|Sin(e) -> sin(evaluer e)
|Cos(e) -> cos(evaluer e)
|Exp(e) -> exp(evaluer e)
|Ln(e) -> log(evaluer e)
|Umoins(e) -> -. evaluer e;;
【问题讨论】:
-
partielle调用evaluer正常吗?不应该叫partielle吗?
标签: ocaml