comment
It is an exciting time to be working for IntelliFactory. After quite a bit of hard work, we finally have a public beta release of the WebSharper™ platform. As we continue to work on it, I encourage you to download and play with the current beta release.
WebSharper™ aims to change the way you think about web programming, no more and no less. The idea behind it is very simple. Instead of HTML + JavaScript + PHP/C#/Java code, you write F#, and let the compiler do its magic to get a working AJAX website. Alternatively, you develop a small component and expose it as an ASP.NET control, without having to rewrite your website from scratch.
Let me start with a simple, indeed primitive, example. Let us take the the first problem from Project Euler (a great source of profitable amusement for many of us), solve it in F#, and run it in the browser. To play with it, download and install the beta release of the WebSharper™ platform, start a new WebSharper solution, and change the project code to the following:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
namespace WebSharperProject
open IntelliFactory.WebSharper
open IntelliFactory.WebSharper.Html
[<assembly: WebSharperAssembly>]
do ()
[<JavaScriptType>]
module Math =
/// Find the sum of all the multiples of 3 or 5 below 1000.
[<JavaScript>]
let ProjectEuler0001 =
seq { 0 .. 999 }
|> Seq.filter (fun x -> x % 3 = 0 || x % 5 = 0)
|> Seq.sum
[<JavaScriptType>]
type Example() =
inherit Web.Control()
[<JavaScript>]
override this.Body =
let answer = Span []
Div [
Div [
Span ["The answer is: "]
answer
]
Input [Type "Button"; Value "Calculate"]
|> On Events.Click (fun _ ->
answer.Text <- string Math.ProjectEuler0001)
]Then change the Default.aspx to reference the newly defined Example control:
1 2 3 4 5 6 7 8 9
<%@ Page Language="C#" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<WebSharper:ScriptManager runat="server" />
</head>
<body>
<ws:Example runat="server" />
</body>
</html>This is a small example, but there is a lot to get excited about already. Take powerful F# type-checking, functional abstractions, embedded HTML combinators, or ASP.NET integration...
Yes, Project Euler problems are not exactly representative of the tasks a typical web programmer faces. But I firmly believe that a platform that makes difficult things possible should make simlpe things simple.
I will be blogging with more posts on WebSharper™ in the coming days. In the meanwhile, the impatient should definitely check out the Demos.






