Mercurial > urweb
view lib/ur/listPair.ur @ 1749:f9e5a8e09cdf
Simplify type of Basis.tag, regarding 'class' attribute; new compatibility parsing of 'class' values given as string literals
author | Adam Chlipala <adam@chlipala.net> |
---|---|
date | Sun, 06 May 2012 13:07:13 -0400 |
parents | 1c2f335297b7 |
children | 5c30eea7aa78 |
line wrap: on
line source
fun foldlAbort [a] [b] [c] f = let fun foldlAbort' acc ls1 ls2 = case (ls1, ls2) of ([], []) => Some acc | (x1 :: ls1, x2 :: ls2) => (case f x1 x2 acc of None => None | Some acc' => foldlAbort' acc' ls1 ls2) | _ => None in foldlAbort' end fun mapX [a] [b] [ctx ::: {Unit}] f = let fun mapX' ls1 ls2 = case (ls1, ls2) of ([], []) => <xml/> | (x1 :: ls1, x2 :: ls2) => <xml>{f x1 x2}{mapX' ls1 ls2}</xml> | _ => error <xml>ListPair.mapX: Unequal list lengths</xml> in mapX' end fun all [a] [b] f = let fun all' ls1 ls2 = case (ls1, ls2) of ([], []) => True | (x1 :: ls1, x2 :: ls2) => f x1 x2 && all' ls1 ls2 | _ => False in all' end