on master help sign in
Simplify Function type internals
commit7c3dc974668f3ecb54944579395b213e7ef85e97 authorHamish Mackenzie <Hamish.K.Mackenzie@googlemail.com> dateSat 15 Oct 2016, 20:29 (10 years ago) parent60b6914
2 files changed+6−7
jsaddle.cabal+1−1 src/Language/Javascript/JSaddle/Object.hs+5−6
jsaddle.cabal+1−1
@@ -1,5 +1,5 @@
11name: jsaddle
2−version: 0.5.1.1
2+version: 0.5.2.0
33cabal-version: >=1.10
44build-type: Simple
55license: MIT
src/Language/Javascript/JSaddle/Object.hs+5−6
@@ -416,12 +416,11 @@ fun :: JSCallAsFunction -> JSCallAsFunction
416416fun = id
417417
418418#ifdef ghcjs_HOST_OS
419−type HaskellCallback = Callback (JSVal -> JSVal -> IO ())
419+data Function = Function {functionCallback :: Callback (JSVal -> JSVal -> IO ()), functionObject :: Object}
420420#else
421−type HaskellCallback = ()
421+newtype Function = Function {functionObject :: Object}
422422#endif
423423
424−data Function = Function {functionCallback :: HaskellCallback, functionObject :: Object}
425424
426425-- ^ Make a JavaScript function object that wraps a Haskell function.
427426function :: JSCallAsFunction -- ^ Haskell function to call
@@ -440,7 +439,7 @@ function f = do
440439 obj <- Object <$> sendLazyCommand NewCallback
441440 add <- addCallback <$> askJSM
442441 liftIO $ add obj f
443− return $ Function () obj
442+ return $ Function obj
444443#endif
445444
446445freeFunction :: Function -> JSM ()
@@ -448,13 +447,13 @@ freeFunction :: Function -> JSM ()
448447freeFunction (Function callback _) = liftIO $
449448 releaseCallback callback
450449#else
451−freeFunction (Function callback obj) = do
450+freeFunction (Function obj) = do
452451 free <- freeCallback <$> askJSM
453452 liftIO $ free obj
454453#endif
455454
456455instance ToJSVal Function where
457− toJSVal (Function _ f) = toJSVal f
456+ toJSVal = toJSVal . functionObject
458457
459458-- | A callback to Haskell can be used as a JavaScript value. This will create
460459-- an anonymous JavaScript function object. Use 'function' to create one with