OCaml'ın belirli bir işlevi kuyruk özyineli olarak algılayıp tanımadığını nasıl anlarım? OCaml derleyici aşağıdaki Jeffrey cevabı Short-circuited operators and tail recursionBir OCaml işlevinin kuyruk özyinelemeli olduğunu doğrulayın
Teşekkür tanırsa Özellikle, öğrenmek istiyorum,
let rec check_all l =
match l with
| [] -> true
| hd :: tl ->
hd && check_all tl
ve gerçekten de hiç optimize etmez basit işlevi ile bu çalıştı:
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
: bunu nasıl güzel montaj çıktı aldın Ancak, bu fonksiyon şu anda bir hata var, ona şu yama uygulamak gerekir bunu düzeltmek için (artık destekleniyor gibi görünüyor)? – aneccodeal
Jeffrey'nin aşağıdaki cevaba bakınız: ocamlopt -c-S – dspyz