content: -- even :: Integral a => a -> Bool
  on even(n)
      n mod 2 = 0
  end even
  
  -- odd :: Integral a => a -> Bool
  on odd(n)
      not even(n)
  end odd
  
  
  -- GENERIC FUNCTIONS FOR TEST ----------------------------------
  
  -- filter :: (a -> Bool) -> [a] -> [a]
  on filter(f, xs)
      tell mReturn(f)
          set lst to {}
          set lng to length of xs
          repeat with i from 1 to lng
              set v to item i of xs
              if lambda(v, i, xs) then set end of lst to v
          end repeat
          return lst
      end tell
  end filter
  
  -- Lift 2nd class handler function into 1st class script wrapper
  -- mReturn :: Handler -> Script
  on mReturn(f)
      if class of f is script then
          f
      else
          script
              property lambda : f
          end script
      end if
  end mReturn
  
  
  -- TEST ---------------------------------------------------------
  on run
      set xs to [-6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6]
  
      {filter(even, xs), filter(odd, xs)}
  end run
  