SEM MaybeName [ | | isNothing : Bool name : { Maybe Name } ] | Nothing lhs.isNothing = True lhs.name = Nothing | Just lhs.isNothing = False lhs.name = Just @name.self -- name : Name SEM MaybeNames [ | | names : { Maybe [Name] } ] | Nothing lhs.names = Nothing | Just lhs.names = Just @names.names -- name : Name ATTR Names [ | | names : {[Name]} ] SEM Names | Cons lhs.names = @hd.self : @tl.names | Nil lhs.names = [] ATTR FunctionBinding FunctionBindings LeftHandSide [ | | name:Name ] SEM FunctionBindings | Cons lhs . name = @hd.name | Nil lhs . name = internalError "ToCoreName.ag" "n/a" "empty FunctionBindings" SEM FunctionBinding | Hole lhs . name = internalError "ToCoreName.ag" "n/a" "hole FunctionBindings" SEM LeftHandSide | Function lhs . name = @name.self | Infix lhs . name = @operator.self