{- Copyright 2009 Jake Wheat This file contains the code for drop statements, only does drop function at the moment -} SEM Statement | DropFunction loc.tpe = Right $ Pseudo Void loc.backTree = DropFunction @ann @ifE.annotatedTree @sigs.annotatedTree @cascade.annotatedTree loc.envUpdates = flip map @sigs.fnSigs $ \(nm,args) -> EnvDropFunction ifE nm args where ifE = @ifE.annotatedTree == IfExists loc.statementType = [] ATTR StringTypeNameListPairList [||fnSigs:{[(String,[Type])]}] SEM StringTypeNameListPairList | Cons lhs.fnSigs = @hd.fnSig : @tl.fnSigs | Nil lhs.fnSigs = [] ATTR StringTypeNameListPair [||fnSig:{(String,[Type])}] SEM StringTypeNameListPair | Tuple lhs.fnSig = (@x1, @x2.namedTypes) ATTR TypeNameList [||namedTypes:{[Type]}] SEM TypeNameList | Cons lhs.namedTypes = @hd.namedType : @tl.namedTypes | Nil lhs.namedTypes = []