Public feed #891941

pikhq

public text v1 · immutable
Raw Edit
·published 2008-02-05 00:55 UTC
rendered paste body
macro ++ out {
  += $out 1
}

macro += out in {
  IF {$in is var} {
    __$LANG__+= $out $in
  } elseif {$in is cons} {
    __+= $out $in
  } else {
    ERROR "Invalid type for $in in +=. $in is [TYPE $in]; should be var or cons."
  }
}

macro __BRAINFUCK__+= out in {
  assert {$out is var} "Invalid type for $out in __BRAINFUCK__+=. $out is [TYPE $out]; should be var."
  assert {$in is var} "Invalid type for $in in __BRAINFUCK__+=. $in is [TYPE $in]; should be var."
  while $in {
    -- $in
    ++ $out
  }
}

macro -- out {
  -= $out 1
}

macro -= out in {
  IF {$IN is var} {
    __$LANG__-= $out $in
  } elseif {$in is cons} {
    __-= $out $in
  } else {
    ERROR "Invalid type for $in in -=. $in is [TYPE $in]; should be var or cons."
  }
}

macro __BRAINFUCK__-= out in {
  assert {$out is var} "Invalid type for $out in __BRAINFUCK__+=. $out is [TYPE $out]; should be var."
  assert {$in is var} "Invalid type for $in in __BRAINFUCK__+=. $in is [TYPE $in]; should be var."
  while $in {
    -- $in
    -- $out
  }
}