这执行:
main = do
ctx <- getCanvasElementById "stage" >>= getContext2D
bs <- initBranches
tick 0 ctx bs
但这不会:
main = tick 0 <$> (getCanvasElementById "stage" >>= getContext2D)
<*> initBranches
但是两者都可以编译,并且据我所知,两者都意味着相同的基本内容。为什么会这样?我可以在这里使用应用语法吗(它更容易理解恕我直言)
这也有效
main = do
a <- (tick 0) <$> (getCanvasElementById "stage" >>= getContext2D) <*> initBranches
b <- a
fprint b