如何使用JavaScript在一个块中将语句链接在一起

时间:2011-11-03 11:24:30

标签: haskell

Sequence (toBlock $ VarDeclAssign "foo" (JBool False)) (Return $ JBool True)

这是我目前唯一能做到的方法。我尝试了foldl,但EmptyBlock有不同的类型,因此无法构建。

我可以在这里使用记号或其他东西吗?

1 个答案:

答案 0 :(得分:2)

查看the documentation,问题是EmptyBlockSequence的类型是

EmptyBlock :: Block ()   
Sequence :: Block () -> Stmt t -> Block t

Stmt ()外,大多数语句都属于Return :: Expr t -> Stmt t类型。据我所知,这是为了确保一个块中只能有一个return语句,并且它必须在最后。

foldl Sequence EmptyBlock不适合您的原因是foldl的类型为(a -> b -> a) -> a -> [b] -> a,如果您查看第一个参数,很明显Sequence只有在您t = ()a = Block ()选择b = Stmt ()时才能使用。

这意味着您可以使用foldl组合Return的所有语句,您必须在最后手动插入。希望这不应该太不方便。