# UU-ComputerScience/uhc

### Subversion checkout URL

You can clone with
or
.

# Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also compare across forks.

# Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also compare across forks.
...
• 3 commits
• 1 file changed
 norm2782 Don't mention git repository, call it implementation 8d7e696 norm2782 Expand on HTML 5 local storage a539485 norm2782 Comma 295b03b
 @@ -194,7 +194,7 @@ function eval( x ) { Even normal \js values can be thrown at |eval|, provided they do not (accidentally) contain an |eOrV| field. The actual |eval|\footnote{called |_e_| -in the git repository.} function is somewhat more involved as it provides some +in the implementation.} function is somewhat more involved as it provides some protection against null values and also updates the |eOrV| field for all intermediate non WHNF objects computed in the evaluation loop. @@ -378,7 +378,7 @@ primModProtoAttr :: JSString -> (a -> b) -> JSString -> IO () |JSString| is a type synonym for |PackedString|, the builtin type corresponding to JavaScript strings. The |primMkCtor| function creates a new constructor -function if it does not yet exist in the |window| scope where |window| is the +function if it does not yet exist in the |window| scope, where |window| is the variable containing everything pertaining the current window or tab. This function is usually only called from within the other functions listed above. The |primMkAnonObj| function creates an anonymous object |{}|, while the @@ -579,10 +579,12 @@ modification. We use this feature in the JCU web application to run the NanoProlog library in the browser, allowing us to perform proof checking and unification at the client-side, eliminating the need for many AJAX requests. -In a further step we eliminated the need for a server altogether by storing the -set of rules and facts using HTML5 Local Storage instead of in a database on -the server. This has the advantage that you can run the assistant wherever you -have a modern web browser available. +We can take the idea of running the application completely client-side even +further, by eliminating the need for a server altogether. We can do so by using +HTML 5 Local Storage, a client-side database offered by nearly all modern +browsers, and accessible via JavaScript, to store the set of rules and facts. +This has the advantage that you can run the assistant, even if you have no +Internet connection available. \subsection{\label{issues}Implementation Issues} @@ -900,11 +902,10 @@ use of GHC, giving it a production-ready Haskell compiler and type-checker to build on. In designing Fay's FFI, Doner drew some inspiration from the work we present here, namely the FEL. -Another recent attempt is Haste\cite{ekblad2012} by Anton Ekblad, it compiles -Haskell to Javascript and supports the same code as GHC does, with some remarks -as how to perform large number arithmetics. It appears to be generating code -with a small footprint and which performs better than native \js. Haste also -comes with a small reactive library for interacting with the DOM. +Another recent attempt is Haste\cite{ekblad2012} by Anton Ekblad. It, too, +builds on top of GHC, and it attempts to be easy to use and generate +relatively lean code''. It comes with a small reactive library for +interacting with the DOM. Rather than focussing on cross-compiling, Functional JavaScript'' \cite{www07functional-javascript} offers a library for a more functional style