【发布时间】:2014-04-20 19:33:15
【问题描述】:
如何判断 OCaml 是否将特定函数识别为尾递归?特别想知道OCaml编译器是否识别Short-circuited operators and tail recursion
感谢杰弗里在下面的回答,我用简单的功能尝试了这个
let rec check_all l =
match l with
| [] -> true
| hd :: tl ->
hd && check_all tl
确实,它确实优化到:
camlTest__check_all_1008:
.cfi_startproc
.L102:
cmpl $1, %eax
je .L100
movl (%eax), %ebx
cmpl $1, %ebx
je .L101
movl 4(%eax), %eax
jmp .L102
.align 16
.L101:
movl $1, %eax
ret
【问题讨论】:
标签: compiler-construction ocaml tail-recursion short-circuiting