Mimics
Inactive cells
Active cells
Specs
Inactive cells (details)
invertedOperators = {∈: 12, :"::" => 12, :":::" => 12, ∉: 12}
kind = "Message OperatorTable"
operators = {~: 0, :"|>>" => 12, and: 13, :"+>" => 12, ∪: 3, ≥: 5, ⊆: 5, :"+" => 3, #>: 12, />: 12, or: 13, :"<-" => 14, :"+>>" => 12, ∩: 3, :"=>>" => 12, ^>>: 12, :"||>>" => 12, :"<=>" => 5, :"!=" => 6, $>>: 12, :"?&" => 10, :"==" => 6, **: 1, :"!" => 0, /: 2, ?>>: 12, :"-" => 3, ∘: 12, ⊃: 5, :">=" => 5, $: 0, :"<=" => 5, :"->" => 12, :"&>>" => 12, %>>: 12, />>: 12, <: 5, ~>>: 12, :"->>" => 12, :"&&>>" => 12, return: 14, >>: 4, <>: 5, :"..." => 12, :"|" => 9, *>: 12, :"!>>" => 12, :"|>" => 12, :"=>" => 12, **>: 12, :"=~" => 6, :"&" => 7, ⊇: 5, @>: 12, ^: 8, nor: 13, ≤: 5, *: 2, nand: 13, import: 14, <<: 4, ~>: 12, :"&&>" => 12, @>>: 12, %: 2, :"<->" => 12, #: 0, xor: 13, >: 5, *>>: 12, ?>: 12, :".." => 12, ≠: 6, :"===" => 6, <>>: 5, :"||" => 11, **>>: 12, #>>: 12, %>: 12, :"!~" => 6, ^>: 12, :"?|" => 11, ?: 0, :"!>" => 12, ⊂: 5, $>: 12, :"||>" => 12, :"&&" => 10, :"&>" => 12}
trinaryOperators = {:"-=" => 2, :">>=" => 2, :"&&=" => 2, :"%=" => 2, :"&=" => 2, :"/=" => 2, :"<<=" => 2, :"**=" => 2, :"=" => 2, :"*=" => 2, :"+=" => 2, :"++" => 1, :"^=" => 2, :"--" => 1, :"|=" => 2, :"||=" => 2}
Active cells (details)
withInvertedOperator(...)

temporarily adds a new inverted operator with the specified associativity, and then removes it again. if the operator is already in there, changes the associativity temporarily

macro(
  argCount = call arguments length 
  cond(
    argCount ==(
      3), 
    
    name = call argAt(
        0) 
    assoc = call argAt(
        1) 
    code = call arguments [](
        2) 
    
    if(name mimics?(Text), 
      name = :(name)) 
    let(Message OperatorTable invertedOperators, Message OperatorTable invertedOperators merge(name =>(assoc)), 
      code evaluateOn(call ground, call ground)), 
    error!(Condition Error Invocation NoMatch, message: call message, context: call currentContext)) 
  )
withOperator(...)

temporarily adds a new operator with the specified associativity, and then removes it again. if the operator is already in there, changes the associativity temporarily

macro(
  argCount = call arguments length 
  cond(
    argCount ==(
      3), 
    
    name = call argAt(
        0) 
    assoc = call argAt(
        1) 
    code = call arguments [](
        2) 
    
    if(name mimics?(Text), 
      name = :(name)) 
    let(Message OperatorTable operators, Message OperatorTable operators merge(name =>(assoc)), 
      code evaluateOn(call ground, call ground)), 
    error!(Condition Error Invocation NoMatch, message: call message, context: call currentContext)) 
  )
withTrinaryOperator(...)

temporarily adds a new trinary operator with the specified associativity, and then removes it again. if the operator is already in there, changes the associativity temporarily

macro(
  argCount = call arguments length 
  cond(
    argCount ==(
      3), 
    
    name = call argAt(
        0) 
    assoc = call argAt(
        1) 
    code = call arguments [](
        2) 
    
    if(name mimics?(Text), 
      name = :(name)) 
    let(Message OperatorTable trinaryOperators, Message OperatorTable trinaryOperators merge(name =>(assoc)), 
      code evaluateOn(call ground, call ground)), 
    error!(Condition Error Invocation NoMatch, message: call message, context: call currentContext)) 
  )