Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

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
  • 0 commit comments
  • 1 contributor
Showing with 12 additions and 11 deletions.
  1. +12 −11 EHC/text/TopicJavaScriptIFL.cltex
View
23 EHC/text/TopicJavaScriptIFL.cltex
@@ -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

No commit comments for this range

Something went wrong with that request. Please try again.