2013-10-16 8 views
17

Come si importa in GHCJS una funzione Javascript come la seguente?GHCJS: come posso importare una funzione javascript di alto livello usando FFI?

xs.subscribe(function(x) { console.log(x) }) 

ho provato varie combinazioni dei seguenti senza successo:

data Observable_ 
data Disposable_ 

type Observable a = JSRef Observable_ 
type Disposable = JSRef() 

foreign import javascript unsafe "$1.subscribe($2)" 
    rx_subscribe :: Observable a -> JSRef (a -> IO()) -> IO Disposable 

ogni aiuto è apprezzato e collegamenti alla documentazione del GHCJS FFI.

Grazie

+3

Hai letto http://weblog.luite.com/wordpress/ ? p = 14? – Jonke

+0

L'ho fatto, ma non ho trovato un esempio su come importare una funzione javascript che accetta come argomento Haskell lambda e lo trasforma in una funzione JavaScript come quella precedente. – Holoed

+0

è questo per un codebase Famo.us per caso? –

risposta

11

grazie ai ragazzi sul GHCJS IRC Canale ho avuto la risposta:

foreign import javascript safe "$1.subscribe($2)" 
    rx_subscribe :: Observable a -> JSFun (a -> IO()) -> IO Disposable 

subscribe :: FromJSRef a => (a -> IO()) -> Observable a -> IO Disposable 
subscribe f xs = syncCallback1 True True f' >>= rx_subscribe xs 
       where f' x = fromJSRef x >>= f . fromJust 

Grazie

Problemi correlati