2015-02-25 34 views
6

Operatör OCaml'da ne yapıyor?`operatöründe OCaml

let int_of_meth = function 
    | `GET  -> 0 
    | `POST -> 1 
    | `PUT  -> 2 
    | `DELETE -> 3 
    | `HEAD -> 4 
    | `PATCH -> 5 
    | `OPTIONS -> 6 
    | _  -> failwith "non standard http verbs not supported" 

Bunu OCaml el kitabında bulamıyorum.

+4

http://caml.inria.fr/pub/ docs/manual-ocaml-4.00/manual006.html # toc36 –

cevap

7

Bu ` gerçekten bir operatör değildir. Sözcüksel düzeyde çalışır (dizeler için tırnak işaretleri gibi) ve aşağıdaki sembolü "polimorfik bir varyant" haline getirir. @Edgar Arutyunyan tarafından verilen bağlantısına bakın: @gsg tarafından belirtildiği gibi

Aslında ` ayrı sembol olarak taranır

http://caml.inria.fr/pub/docs/manual-ocaml-4.00/manual006.html#toc36

Güncelleme. Dolayısıyla, ` Abc gibi bir polimorfik varyant, sözdizimsel bir yapıdır. Hala normal anlamda bir operatör olmadığını iddia ediyorum.

(Düzenleme:... Abc değiştirildi onlar Örneğin, lablgl arayüzü sürekli küçük harf kullanın görünüyor harfle gerekiyordu bilmiyordum)

+2

Gerçekten dize tırnaklarına benzemiyor: 've sembol ayrı belirteçler ve aralarında boşluk olabilir. – gsg

+0

Beyaz boşluk içerebileceğini bilmiyordum! Böylesine önemsiz bir gerçek, ama polimorfik varyantlar hakkında düşündüğüm şekilde muazzam ölçüde değişiyor. –

+0

Haklısın, sadece Lexer.mll'i kontrol ettim. Cevabımı güncelleyeceğim. –