2011-01-03 21 views
8

OCaml programlarını analiz eden ve stil ve kodda bazı geliştirmeler öneren bir araç var mı? Perl dünyasında kötü tarzı önlemek için hala Perl::Critic var.Perl'in Perl :: Critic modülü gibi en iyi uygulamaların kullanımını destekleyen bir OCaml aracı var mı?

İhtiyacım olan şey, yalnızca stil hakkında değil, aynı zamanda bazı şeyleri daha temiz hale getirmek ve OCaml programlarında kuyruk özlemi olmayan yapılardan kaçınmak için ipuçları yapan bazı araçlardır.

Herhangi bir ipucu?

cevap

9

Kullanılmadım ama geçen hafta message on the Caml GroupsMascot. Neyin peşinde olduğun gibi görünüyor. Kuyruk-yineleme kriterleri hakkında emin değilim; Yukarıdaki projenin yazarı bunlardan bahsetmiyor, ancak eklenti yeteneklerinden bahsediyor. Alternatif olarak, -dlinear (ocamlopt[.opt] için) ile derleme, işlev bir kuyruk çağrısı olduğunda söz eden doğrusal kod üretecektir. -annot ayrıca kuyruk araması bilgileri de üretir, ancak changelog (3.11.0 sürümünde eklenmiştir) dışında bir başvuru bulamıyorum. Kuyruk çağrılarını ne şekilde yapar, sohbeti yapmaz, kuyruksuz çağrıları etiketler (veya belki bir yolu var mı?). Aşağıda

*** Linearized code 
camlTail__sum_58: 
    if x/30[%rbx] !=s 1 goto L100 
    return R/0[%rax] 
    L100: 
    I/31[%rbx] := I/31[%rbx] + -2 
    I/32[%rax] := I/32[%rax] + 2 
    tailcall "camlTail__sum_58" R/0[%rax] R/1[%rbx] 

ben deneyim olsa en iyi bahis olacak düşünüyorum
let rec sum a = function 
    | x when x = 0 -> a 
    | x -> sum (a+1) (x-1) 

(çok daha çıktı arasında) üretir, sum adlı bir işlev için çıkış örneğidir. Stil ve tipik kurallar için bir fikir edinmek için bazı popüler projelere göz atın (örneğin, Batteries). Bir eklentinin, acc akümülatör değişkenlerinizi veya cont sürekliliklerini aramanıza yardım edeceğini sanmıyorum.

İlgili konular