%\item%#<li>#Defineatreeanalogueof[hlist].Thatis,defineaparameterizedtypeofbinarytreeswithdataattheirleaves,anddefineatypefamily[itree]indexedbytrees.Thestructureofan[itree]mirrorsitsindextree,withthetypeofeachdataelement(whichonlyoccuratleaves)determinedbyapplyingatypefunctiontothecorrespondingelementoftheindextree.Defineatypestandingforallpossiblepathsfromtherootofatreetoleavesanduseittoimplementafunction[tget]forextractinganelementofan[itree]bypath.Defineafunction[itmap2]for"mapping over two trees in parallel."Thatis,[itmap2]takesintwo[itree]swiththesameindextree,anditformsanew[itree]withthesameindexbyapplyingabinaryfunctionpointwise.
%\item%#<li>#Defineatreeanalogueof[hlist].Thatis,defineaparameterizedtypeofbinarytreeswithdataattheirleaves,anddefineatypefamily[htree]indexedbytrees.Thestructureofan[htree]mirrorsitsindextree,withthetypeofeachdataelement(whichonlyoccuratleaves)determinedbyapplyingatypefunctiontothecorrespondingelementoftheindextree.Defineatypestandingforallpossiblepathsfromtherootofatreetoleavesanduseittoimplementafunction[tget]forextractinganelementofan[htree]bypath.Defineafunction[htmap2]for"mapping over two trees in parallel."Thatis,[htmap2]takesintwo[htree]swiththesameindextree,anditformsanew[htree]withthesameindexbyapplyingabinaryfunctionpointwise.