2010-06-11 20 views
5

OCaml'de bir C stili ileri bildirim yapmanın bir yolu var mı? Ben Google'da aradı ..OCaml bildirimi

type path_formula = 
    [ `Next of state_formula 
    | `Until of (state_formula * state_formula) 
    | `UntilB of (state_formula * int * state_formula) 
    ] 

type state_formula = 
    [ `True | `False 
    | `Not of state_formula 
    | `And of (state_formula * state_formula) 
    | `Or of (state_formula * state_formula) 
    | `Imply of (state_formula * state_formula) 
    | `Label of string 
    | `Prob` of (boundf * path_formula) 
    | `Expc` of (boundi * formula) 
    ] 

Yani hem tip diğerini bilmelidir ama maalesef OCaml bir o kadar geniş değil:

Sorunum karşılıklı olarak birbirlerine karşılık gelen iki varyantı olması -kullanır programlama dili ..

cevap

13

Kullanım

type T1 = ... 
and T2 = ... 

özyinelemeli tip olması.

+0

Teşekkürler, genellikle dil özelliklerini keşfetmede sorun yaşamadım ama OCaml şu ana kadar çalıştığımdan gerçekten farklı ve yüzlerce sayfanın yalnızca beni kaybettiren "phat" referanslarını buldum. yönlendirme :) – Jack

+0

Zar'ı çevirebileceğinizi ve OCaml'ı öğrenmek için F # sözdizimi/dokümanlarını arayabileceğinizi unutmayın. Çekirdek sözdizimi aynıdır ve ör. http://stackoverflow.com/questions/1378575/f-forward-type-declarations burada bir kazançtır. – Brian

+1

bu iyi bir nokta. OCaml'ı seçmeliyim çünkü beni zorladılar. Her ne kadar güçlü bir dil olsa da, modern bir işlev dili (Scala, F #) aynı sözdizimini sürdürdüyse o zaman bu, güzel bir seçim olarak ortaya çıkacaktır diye düşündüm :) – Jack