Created
May 21, 2015 12:16
-
-
Save frasertweedale/b482224b91ea7bcce35f to your computer and use it in GitHub Desktop.
YOW Lambda Jam GHCJS workshop example
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| {-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-} | |
| {-# LANGUAGE OverloadedStrings #-} | |
| module Main where | |
| import Data.Int | |
| import System.Timeout | |
| import Control.Monad | |
| import Control.Exception | |
| import GHCJS.Types | |
| import GHCJS.Foreign | |
| foreign import javascript unsafe "Math.cos($1)" | |
| js_cos :: Double -> Double | |
| foreign import javascript unsafe "$r1 = $1_1; $r2 = $1_2;" | |
| js_id :: Int64 -> Int64 | |
| foreign import javascript interruptible "setTimeout(function() { $c(123); }, 1000);" | |
| js_wait :: IO Int | |
| foreign import javascript unsafe "new XMLHttpRequest()" | |
| js_createXHR :: IO XHR | |
| foreign import javascript interruptible | |
| "$2.open('GET', $1);\ | |
| \$2.onload = function() { $c($2.responseText); };\ | |
| \$2.send();" | |
| js_sendXHR :: JSString -> XHR -> IO JSString | |
| foreign import javascript unsafe "$1.abort();" | |
| js_abortXHR :: XHR -> IO () | |
| data XHR_ | |
| type XHR = JSRef XHR_ | |
| xhr :: JSString -> IO JSString | |
| xhr url = do | |
| x <- js_createXHR | |
| js_sendXHR url x `onException` js_abortXHR x | |
| fib :: Int -> Int | |
| fib 0 = 0 | |
| fib 1 = 1 | |
| fib n = fib (n - 2) + fib (n - 1) | |
| fib' :: Int | |
| fib' = fib 37 | |
| main :: IO () | |
| main = putStrLn . fromJSString =<< xhr "/test.txt" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment