JoCaml - JoCaml

JoCaml
Tuzuvchi (lar)INRIA
Barqaror chiqish
4.01 / mart 2014 yil
Operatsion tizimO'zaro faoliyat platforma
TuriDasturlash tili
LitsenziyaLGPL
Veb-saythttp://jocaml.inria.fr/

JoCaml[1][2] eksperimental hisoblanadi funktsional dasturlash tili dan olingan OCaml. Bu ibtidoiylarni birlashtiradi qo'shilish-hisoblash moslashuvchanlikni ta'minlash, turi tekshirildi bir vaqtda va tarqatildi dasturlash. JoCaml-ning amaldagi versiyasi - bu hozirda ishlanmagan JoCaml-ning qayta tatbiq etilishi[3] Fabrice Le Fessant tomonidan ishlab chiqarilgan, o'zgartirilgan sintaksisga ega va OCaml-ning asl nusxasiga nisbatan yaxshilangan.

JoCaml Camls 'R Us jamoasi tomonidan tarqatilgan dasturni amalga oshirish uchun foydalangan nur izi,[4] ICFP 2000 dasturlash tanlovida 2-o'rinni egallash.

Ism havola Jou Tuya, multfilm tuya uchun reklamalarda ishlatiladi Tuya markasidagi sigaretalar.

Misol

turi tangalar = Nikel | Dimeva ichimliklar = Kofe | Choyva tugmalar = BC qahva | BTea | BC bekor qilish;; (* def birlashma naqshining alternativlari to'plamini belgilaydi   * '&' chap tomonidagi '=' qo'shilishni bildiradi (kanal sinxronizmi)   * '&' o'ng tomonida parallel ishlov berish   * synchronous_reply: == "channel_name" ga "javob" [x] "   * sinxron kanallar funktsiyaga o'xshash turlarga ega (`a ->` b)   * asinxron bo'lganlar esa "Join.chan" turiga ega   * faqat naqshli rhs ifodasidagi oxirgi gap asenkron xabar bo'lishi mumkin   * 0 asenkron xabar holatida STOP degan ma'noni anglatadi (CSP terminologiyasida "xabar yuborilmaydi").   *) def qo'yish(s) = print_endline s ; 0 (* TO'XTA *)   ;; (* qo'yish: string Join.chan *) def berish(d) = o'yin d bilan                 Kofe -> qo'yish("Kofe")                 | Choy -> qo'yish("Choy")              ;; (* bering: Join.chan iching *) def pulni qaytarish(v) = ruxsat bering s = Printf.sprintf "% D" ni qaytarish v yilda qo'yish(s)     ;; (* qaytarish: int Join.chan *) ruxsat bering yangi_qaynagi berish pulni qaytarish =  ruxsat bering sotish (xarajat:int) (kredit:int) = agar kredit >= xarajat                      keyin (to'g'ri, kredit - xarajat)                      boshqa (yolg'on, kredit)  yilda  def tanga(Nikel) & qiymat(v) = qiymat(v+5) & javob ga tanga  yoki tanga(Dime) & qiymat(v) = qiymat(v+10) & javob ga tanga   yoki tugmasi(BC qahva) & qiymat(v) =      ruxsat bering berish kerak, qoldiq = sotish 10 v yilda     (agar berish kerak keyin berish(Kofe) boshqa 0 (* TO'XTA *))              & qiymat(qoldiq) & javob ga tugmasi   yoki tugmasi(BTea) & qiymat(v) =      ruxsat bering berish kerak, qoldiq = sotish 5 v yilda     (agar berish kerak keyin berish(Choy) boshqa 0 (* TO'XTA *))              & qiymat(qoldiq) & javob ga tugmasi   yoki tugmasi(BC bekor qilish) & qiymat(v) = pulni qaytarish( v) & qiymat(0) & javob ga tugmasi  yilda yumurtlamoq qiymat(0) ;  tanga, tugmasi  (* tanga, tugma: int -> birlik *)  ;; (* yangi_vending: Join.chan ichish -> int Join.chan -> (int-> birlik) * (int-> birlik) *) ruxsat bering tanga, tugma = yangi_qaynagi berish pulni qaytarish yilda  tanga(Nikel); tanga(Nikel); tanga(Dime);   Unix.uxlash(1); tugma(BC qahva);   Unix.uxlash(1); tugma(BTea);   Unix.uxlash(1); tugma(BC bekor qilish);  Unix.uxlash(1) (* oxirgi xabar paydo bo'lsin *)  ;;

ijro

$ jocamlc example.ml -o sinov$ ./testKofeChoyQaytaring 5

Shuningdek qarang

Adabiyotlar

  1. ^ Qin Ma va Lyuk Maranget (2004). "Birlashma naqshlarida naqshlarni moslashtirishni kompilyatsiya qilish". Proc. Tarkibiylik nazariyasi bo'yicha XV Xalqaro konferentsiyadan. LNCS. Springer-Verlag. 3170.
  2. ^ Ma, Qin; Maranget, Lyuk (2008). "Hisoblashda algebraik naqshlarni moslashtirish". Kompyuter fanidagi mantiqiy usullar. 4 (1). arXiv:0802.4018. Bibcode:2008arXiv0802.4018M. doi:10.2168 / LMCS-4 (1: 7) 2008 yil.
  3. ^ Conchon, S .; Le Fessant, F. (1999). "Jocaml: Ob'ektiv-Caml uchun mobil agentlar". Ish yuritish. Agent tizimlari va mobil agentlar dasturlari bo'yicha birinchi va uchinchi xalqaro simpozium. 22-29 betlar. doi:10.1109 / ASAMA.1999.805390. ISBN  0-7695-0342-X.
  4. ^ Lui Mandel; Luc Maranget. "JoCaml-da dasturlash". Inria tadqiqot hisoboti 6261.

Tashqi havolalar