code: def on(self, source: mx.sym.Symbol, source_length: mx.sym.Symbol, source_seq_len: int) -> Callable:
          
  
          def attend(att_input: AttentionInput, att_state: AttentionState) -> AttentionState:
              """
              Returns updated attention state given attention input and current attention state.
  
              :param att_input: Attention input as returned by make_input().
              :param att_state: Current attention state
              :return: Updated attention state.
              """
              raise NotImplementedError()
  
          return attend
docs: Returns callable to be used for recurrent attention in a sequence decoder.
          The callable is a recurrent function of the form:
          AttentionState = attend(AttentionInput, AttentionState).
  
          :param source: Shape: (batch_size, seq_len, encoder_num_hidden).
          :param source_length: Shape: (batch_size,).
          :param source_seq_len: Maximum length of source sequences.
          :return: Attention callable.