We can relax the constraint on identity. It only need to be an identity during execution of the function.
Note that the
scanincludes base case while
scanIncdoes not include base case, but put the last element into the output sequence.
We can implement
scan. We just
scan the sequence and make sure there is nothing below
0 during the
fun parenMatch (parens : Paren.t Seq.t) : bool = let val nums = Seq.map (fn Paren.L => 1 | Paren.R => ~1) parens val (prenums, final) = Seq.scan (op+) 0 nums val valid = Seq.map (fn i => i >= 0) prenums in (Seq.reduce (fn (a, b) => a andalso b) true valid) andalso final = 0 end
A group of n friends sit around a circular table at a restaurant. Some of them know what they want to order; some of them don’t. The ones who don’t know what to order decide to pick the same thing as the person on their left.
// TODO: receive solution from TAs
Table of Content