Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

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.
...
Checking mergeability… Don't worry, you can still create the pull request.
  • 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.