content: on run
      script
          -- The given function applied to the value 3
          on |λ|(f)
              mReturn(f)'s |λ|(3)
          end |λ|
      end script
  
      -- Here, 'result' is bound to the script above
      map(result, {square, squareRoot})
  
      --> {9, 1.732050807569}
  end run
  
  
  -- square :: Num a => a -> a
  on square(x)
      x * x
  end square
  
  -- squareRoot :: Num a, Float b => a -> b
  on squareRoot(x)
      x ^ 0.5
  end squareRoot
  
  
  -- GENERIC FUNCTIONS ----------------------------------------------------------
  
  -- map :: (a -> b) -> [a] -> [b]
  on map(f, xs)
      tell mReturn(f)
          set lng to length of xs
          set lst to {}
          repeat with i from 1 to lng
              set end of lst to |λ|(item i of xs, i, xs)
          end repeat
          return lst
      end tell
  end map
  
  -- 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 |λ| : f
          end script
      end if
  end mReturn
  