foreign import subscribeEventedOnPrime
"function subscribeEventedOnPrime(n){ \
\ return function(fn){ \
\ return function(obj){ \
\ return function(){ \
\ obj.addEventListener(n, fn); \
\ return obj; \
\ }; \
\ }; \
\ }; \
\}" :: forall d a o eff.
String ->
(d -> a) ->
o ->
Eff (customEvent :: CustomEvent | eff) o
subscribeEventedOn n f o = subscribeEventedOnPrime n (\e -> do
trace "wtf" -- if this line is removed, everything seems to work
f $ newEvent e."type" e."detail"
) o
do块是否有一行与多行,似乎影响该代码是否实际被调用。我错过了什么?
答案 0 :(得分:1)
我认为这是因为通过引导trace
您将d -> a
转换为类似
forall e. d -> Eff (trace :: Trace | e) Unit
这意味着除非您使用unsafeInterleaveEff
或类似的东西来实际运行它,否则不会对其进行评估。
我不是100%肯定,但也许编译器不应该让你使用do
而没有任何痕迹,我不得不调查一下。