OCaml

2013-10-12 21 views
5

tek başına (başka bir şey olmadan) tek oluşturmak mümkün mü (Eğer)) tek oluşturmak mümkün mü? OCaml

+1

'if-statement' etiketi Ocaml için uygun değil. Ocaml hiçbir ifadeye sahip değildir, sadece * ifadeler *! –

cevap

8

Ocaml el kitabının §6.7.2 bölümünün control structures : conditional bölümünü okuyunsa kullanılabilir.

then parçası (dolayısıyla tüm if ekspresyonu) unit tipte olduğunda else kaçınmak mümkündür. Örneğin

için
let x = 3 in 
    (if x > 0 then Printf.printf "x is %d\n" x); 
    x + 5 
;; 

x is 3 yazdırmak olmalı ve değer olarak dönüş 8.

genel kural if κ then τif κ then τ else() denk olmasıdır dolayısıyla "o zaman parçası" τunit tipi ve "Başka bir olmak zorunda bölüm "() için varsayılan olarak ifunit türündedir.

let x = 3 in (if x > 0 then "abc"); x + 7 (*faulty example*) 

bile "abc" beri derlemek olmaz unit türde değil Sen bazenPervasives den (ignore işlevini kullanabilir

(gibi () olan))’da olmasını zorlamak için türü (ancak bu, yalnızca anlamlıside-effects; 'u ignore "abc" ile değiştirirseniz, hatalı örneğim derler, ancak yararsız kalır.

Ancak Ocaml sahip olduğunu unutmayın sadece (ancak hiçbir ifadeleri hiç) ifadelerde. Yan etkili ifadeler genellikle unit türündedir (ancak bunu yapabilirsiniz, ancak bu genellikle kaşınıyor, unit sonucu olmayan bazı ve yararlı bir yan etkiye sahiptir).