~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 699F3F52C0A3C5B6B81E5035E8BB98C4__1715930400 ✰
Заголовок документа оригинал.:
✰ JoCaml - Wikipedia ✰
Заголовок документа перевод.:
✰ ДжоКамл — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/JoCaml ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/69/c4/699f3f52c0a3c5b6b81e5035e8bb98c4.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/69/c4/699f3f52c0a3c5b6b81e5035e8bb98c4__translat.html ✰
Дата и время сохранения документа:
✰ 22.06.2024 17:09:41 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 17 May 2024, at 10:20 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

ДжоКамл — Википедия Jump to content

ДжоКамл

Из Википедии, бесплатной энциклопедии
ДжоКамл
Парадигмы Мультипарадигмальность : функциональная , императивная.
Семья ML : Caml : OCaml
Разработчик Инрия
Впервые появился 1999 год ; 25 лет назад ( 1999 )
Стабильная версия
4.01 / март 2014 г .; 10 лет назад ( 2014-03 )
ТЫ Кросс-платформенный
Лицензия LGPL
Веб-сайт Жокамль .инрия .fr

ДжоКамл [1] [2] — экспериментальный универсальный , высокоуровневый , многопарадигмальный , функциональный и объектно-ориентированный язык программирования, производный от OCaml . Он объединяет примитивы исчисления соединений, чтобы обеспечить гибкое с проверкой типов параллельное и распределенное программирование . Текущая версия JoCaml представляет собой повторную реализацию уже не поддерживаемого JoCaml. [3] созданный Фабрисом Ле Фессаном, с измененным синтаксисом и улучшенной совместимостью с OCaml по сравнению с оригиналом.

JoCaml использовался командой Camls 'R Us для реализации распределенной трассировки лучей . [4] занял 2-е место на олимпиаде по программированию ICFP 2000.

Название является отсылкой к Джо Кэмелу , мультяшному верблюду , который использовался в рекламе сигарет марки Camel .

Пример [ править ]

тип   монеты   =   Никель   |    Десять центов 
 и   напитки   =   Кофе   |    Чай 
 и   пуговицы   =   BCoffee   |    BTea   |    BОтмена  ;; 
 
  (* def определяет предложение набора альтернатив шаблона соединения 
 * '&' в левой части знака '=' означает соединение (синхронизация каналов) 
 * '&' в правой части означает параллельную обработку 
 * synchronous_reply :== "reply" [ x] "to" имя_канала 
 * синхронные каналы имеют функциональные типы (`a -> `b) 
 * асинхронные имеют тип `a Join.chan 
 * только последний оператор в шаблонном выражении rhs может быть асинхронным сообщением 
 * 0 в позиции асинхронного сообщения означает STOP («сообщение не отправлено» в терминологии CSP 
 *) 
 
 def   put  (  s  )   =   print_endline   s   ;    0   (*СТОП*)  
   ;;    (* put: string Join.chan *) 
 
 def   Give  (  d  )   =   сопоставить   d   с 
                  Coffee   ->   put  (  «Coffee»  ) 
                  |    Чай   ->   поставить  (  "Чай  ;; 
               "    (* Give: Drink Join.chan *) 
 
 def   return  (  v  )   =   let   s   =   Printf  .   sprintf   "Возврат %d"   v   in   put  (  s  )  
     ;;    (* возврат: int Join.chan *) 
 
 let   new_vending   дать   возврат   = 
   пусть   vend   (  стоимость  :  int  )   (  кредит  :  int  )   =   если   кредит   >=   стоимость, 
                       то   (  истина  ,   кредит   -   стоимость  ) 
                       иначе   (  ложь  ,   кредит  ) 
   в 
   def   монете  (  Никель  )   &   стоимость  (  v  )   =   стоимость  (  v  +  5  )   и   ответ   на   монету 
   или   монету  (  дайм )   &   value  (  v  )   =   значение  (  v  +  10  )   &   ответ   на   монету 
 
   или   кнопку  (  BCoffee  )   &   value  (  v  )   =  
      let   must_give  ,   остаток   =   vend   10   v   in 
      (  если   must_give,   то   дайте  (  Coffee  )   else   0   (* STOP *)  )  
              &   value  (  остаток  )   &   ответ   на   кнопку 
 
   или   кнопку  (  BTea  )   &   value  (  v  )   =  
      let   must_give  ,   остаток   =   vend   5   v   in 
      (  если   must_give   то   дайте  (  Tea  )   else   0   (* STOP *)  )  
              &   value  (  остаток  )   &   ответ   на   кнопку 
 
   или   кнопку  (  BCancel  )   &   значение  (  v  )   =   возврат  (   v  )   &   значение  (  0  )   и   ответ   на   кнопку 
   в   появления   значении  (  0  )   ; 
    coin  ,   button    (* coin, button: int -> unit *) 
   ;;    (* new_vending: Drink Join.chan -> int Join.chan -> (int->unit)*(int->unit) *) 
 
 let   ccoin  ,   cbutton   =   new_vending   вернуть   деньги   в 
   ccoin  (  никель  );    ccoin  (  никель  );    ccoin  (  Дайм  );  
    Юникс  .   спать  (  1  );    кнопка  (  BCoffee  );  
    Юникс  .   спать  (  1  );    cкнопка  (  BTea  );  
    Юникс  .   спать  (  1  );    кнопка c  (  BCCancel  ); 
    Юникс  .   Sleep  (  1  )   (* пусть появится последнее сообщение *) 
   ;; 

исполнение

$  jocamlc   example.ml   -o   тест 
 $  ./test 
  Кофе 
 Чай 
 Возврат 5 

См. также [ править ]

Ссылки [ править ]

  1. ^ Ма, Цинь; Маранге, Люк (2004). «Компиляция сопоставления с образцом в шаблонах соединения». Материалы 15-й Международной конференции по теории параллелизма . ЛНКС. 3170 . Спрингер-Верлаг.
  2. ^ Ма, Цинь; Маранге, Люк (2008). «Алгебраическое сопоставление с образцом в исчислении соединений». Логические методы в информатике . 4 (1). arXiv : 0802.4018 . Бибкод : 2008arXiv0802.4018M . дои : 10.2168/LMCS-4(1:7)2008 . S2CID   15873901 .
  3. ^ Кончон, С.; Ле Фессант, Ф. (1999). «Jocaml: Мобильные агенты для Objective-Caml» . Материалы Первого и Третьего международного симпозиума по приложениям агентских систем и мобильным агентам . стр. 22–29. дои : 10.1109/ASAMA.1999.805390 . ISBN  0-7695-0342-Х . S2CID   14355301 .
  4. ^ Луи Мандель; Люк Маранге. «Программирование в JoCaml» . Отчет об исследовании Инрии 6261.

Внешние ссылки [ править ]


Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 699F3F52C0A3C5B6B81E5035E8BB98C4__1715930400
URL1:https://en.wikipedia.org/wiki/JoCaml
Заголовок, (Title) документа по адресу, URL1:
JoCaml - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)