* supports for all of Standard ML, including modules, pattern matching, higher-order functions, generative exceptions, etc. * Standard ML Basis Library support * SMLtoJs supports calling JS functions and for executing plain JS. Standard ML functions may be exported and called by JavaScript code. * Simple DOM access. Simple DOM access and support for installing Standard ML functions as DOM event handlers and timer call back functions. * Optimization. All Standard ML module language constructs, including functors, functor applications, and signature constraints, are eliminated at compile time. SMLtoJs performs a series of compile time optimizations, so it generates fairly efficient JS code * Reactive Web Programming. SMLtoJs has library support for Reactive Web Programming. See the rwp_ex1 example. The simple library API captures the basic notions of behaviors and event streams as well as the concepts of behavior transformers and event stream transformers.
CloudKit provides RESTful JSON storage with optional OpenID and OAuth support, including OAuth Discovery. Stored entities are versioned. Services manage their own storage and do not require schema updates when models change. CloudKit is Rack middleware and as such can be used on its own or alongside other Rack-based applications or middleware components such as Rails, Merb or Sinatra. The CloudKit stack provides an optional OAuth Filter with support for OAuth Core 1.0 and OAuth Discovery. Share your APIs with other web services, desktop apps, Open Social gadgets and more. + An OpenID Filter supplies authentication for browser-based clients. Both the OAuth and OpenID Filters collaborate to simultaneously provide login screens and auth challenges in a single HTTP response. + Discoverable, schema-free, auto-versioned JSON storage tracks each version of each JSON document to allow progressive diff/merge with decentralized or occasionally connected clients.
// behaviors, events how it compares to flapjax Protoscript is a simplified scripting language for creating Ajax style prototypes for the Web. With Protoscript it's easy to bring interface elements to life. Simply connect them to behaviors and events to create complex interactions. Here's an example that fades & closes the image when the user clicks on it. (It's live, so go ahead and try it!) $proto('img#avatar', { Click: { onClick: { Fade: { opacity: {to: 0}, onComplete: {Close : {} } } } } }); The protoscript above says: for an image with id avatar, fade it out when the user clicks on it and close it when the fade completes. By combining different behaviors with different elements and events you can create complex interactions without writing JavaScript. Want to see it in action? Here are the current set of behaviors. Click any of them to see live examples.