OPA Un nouveau langage pour applications distribuées

Par:
fredericmazue

jeu, 29/09/2011 - 14:10

OPA est un nouveau langage pour développer des application distribuées, pour le cloud computing en général. L'extrait de code ci-dessous, dont l'allure général n'est pas sans évoquer très fortement Erlang, est une application web de chat.

Une démo de cette application est accessible depuis le site officiel.

 

Site: opalang.org

type message = { author : string ; text : string }

 

@publish room = Network.cloud("room") : Network.network(message)

user_update(x : message) =

  line = <div>

            <div class="user">{x.author}:</>

            <div class="message">{x.text}</>

         </>

  do Dom.transform([#conversation +<- line ])

  Dom.scroll_to_bottom(#conversation)

 

broadcast(author) =

   do Network.broadcast({~author text=Dom.get_value(#entry)}, room)

   Dom.clear_value(#entry)

 

start() =

   author = Random.string(8)

   <div id=#header><div id=#logo></></>

   <div id=#conversation onready={_ -> Network.add_callback(user_update, room)}></>

   <div id=#footer>

      <input id=#entry onnewline={_ -> broadcast(author)} />

      <div onclick={_ -> broadcast(author)}>Post</>

   </>

 

server = Server.one_page_bundle("Chat", [@static_resource_directory("resources")],

       ["resources/css.css"], start)