Как мне исправить ошибку ниже и получить желаемый результат - PullRequest
0 голосов
/ 10 апреля 2019

У меня есть код ниже, но я не получаю правильный результат, который хочу

type expr
= Val of value 
| App of expr * expr
| MultiApp of expr * expr list
and value 
= Int of int 
| Bool of bool

let rec t(e:expr) : expr = match e with
| Val _ -> e
| App(f,a) -> App(t f, t a)

| MultiApp(f,[]) -> raise (Failure "no")
| MultiApp(f,lst) -> match lst with
                        |[]-> raise (Failure "no")
                        |x::xs -> let rest = MultiApp(f,xs) in 

                             App(f,x) 

let e1 = Val(Int 1)
let e2 = Val(Int 3)
let e3 = Val(Bool true)
let e4 = Val(Bool false)

Например,

MultiApp(fe,[e1;e2;e3])

после применения веселья t получится что-то вроде

App(App(App(t fe, t e1), t e2) t e3)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...