 
 getClosedOverArgName = (recursionLevel) ->
   'outerValue' + (recursionLevel && recursionLevel + 1 || '')
+
+simpleCombinerFunction = 'function(first, second){ return {first: first, second: second}; }'
 
 simpleOperators =
   map:

        { type: 'delay', args: '1000' }
      ]

SimpleOperator = React.createClass
  render: ->
    <N.Helpers.InputArea defaultValue={@props.args}/>

      {'}'}
    </span>

RecursiveOperatorWithTrailingArgs = React.createClass
  render: ->
    <span>
      <RecursiveOperator id={@props.id} observable={@props.observable} recursionLevel={@props.recursionLevel} onChildOperatorChange={@props.onChildOperatorChange}/>
      ,
      <span className="recursiveOperatorTrailingArg" id={@props.id}>
        <N.Helpers.InputArea defaultValue={@props.args} />
      </span>
    </span>


operatorClasses = [
  R.mapObj(R.always(SimpleOperator))(simpleOperators)
  R.mapObj(R.always(RecursionFunctionOperator))(recursiveFunctionOperators)
  R.mapObj(R.always(RecursiveOperator))(recursiveOperators)
  R.mapObj(R.always(RecursiveOperatorWithTrailingArgs))(recursiveOperatorsWithTrailingArgs)
]

OperatorClasses = R.foldl(R.mixin, {}, operatorClasses)
