Подтвердить что ты не робот

GHCJS: Как импортировать функцию javascript высокого порядка с помощью FFI?

Как импортировать в GHCJS функцию Javascript, как показано ниже?

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

Я пробовал различные комбинации следующих результатов без успеха:

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

Любая помощь приветствуется и ссылки на документацию FFI GHCJS.

Спасибо

4b9b3361

Ответ 1

Благодаря ребятам на канале IRC GHCJS я получил ответ:

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

Спасибо