Haskell 您的FFI声明需要类型签名 有时我面对奇怪的问题,考虑下面的例子:
这包括:Haskell 您的FFI声明需要类型签名 有时我面对奇怪的问题,考虑下面的例子:,haskell,fay,Haskell,Fay,这包括: renderFrame :: Frame -> Fay () renderFrame frame = do stack <- getStack if length stack > 0 then (do let e = head stack traceEventCoord e) else (do return ()) re
renderFrame :: Frame -> Fay ()
renderFrame frame = do
stack <- getStack
if length stack > 0
then (do
let e = head stack
traceEventCoord e)
else (do return ())
reqFrame renderFrame
emptyStack
where traceEventCoord :: Event -> Fay ()
traceEventCoord e = do
eX <- pageX e
eY <- pageY e
let str = show eX ++ " x " ++ show eY
trace <- elById "trace"
if isNull trace
then return ()
else elSetHtml (fromNullable trace) str
pageX :: Event -> Fay Int
pageX = ffi "%1['pageX']"
pageY :: Event -> Fay Int
pageY = ffi "%1['pageY']"
及
getParentGroups f=do
p费伊弦
nodeName=ffi“%1.nodeName.nodeName”
请注意,第一个示例中的traceEventWord
不会调用此问题。
是虫子吗
另外,第二个示例只是一个示例,最终的代码将被重构一点,但它用于演示目的。更新:这已在fay 0.19中实现并发布 抱歉耽搁了!时差让我:( 我认为这还没有实现。最初ffi只在顶层受支持,然后添加了ffi表达式,它需要在表达式
ffi“alert('foo')”::Fay()
)旁边添加类型签名。我不认为有人会对where语句也这样做
getParentGroups :: Fragment -> Fay [Fragment]
getParentGroups f = do
p <- getParent f
nn <- nodeName (fromNullable p)
return [fromNullable p]
getParent :: Fragment -> Fay (Nullable Fragment)
getParent = ffi "%1.parent()"
nodeName :: Fragment -> Fay String
nodeName = ffi "%1.node.nodeName"
-- ...
where traceEventCoord :: Event -> Fay ()
traceEventCoord e = do
eX <- pageX e
eY <- pageY e
let str = show eX ++ " x " ++ show eY
trace <- elById "trace"
if isNull trace
then return ()
else elSetHtml (fromNullable trace) str
pageX :: Event -> Fay Int
pageX = ffi "%1['pageX']"
pageY :: Event -> Fay Int
pageY = ffi "%1['pageY']"
getParentGroups f = do
p <- getParent f
nn <- nodeName (fromNullable p)
return [fromNullable p]
where
getParent :: Fragment -> Fay (Nullable Fragment)
getParent = ffi "%1.parent()"
nodeName :: Fragment -> Fay String
nodeName = ffi "%1.node.nodeName"