service: Prototype of code injection.

Inject section is inserted at the beginning of student's code and
compiles normally with solution code.

You can use it like this in your question (.q.hs):

-- @ expr: f
-- @ inject

-- @ INJECT BEGIN

code here will be inject at the beginning of student's solution

-- @ INJECT END

teacher's solution goes here

Possible use cases:
- circumvent exact type match requirement (to allow more general code by
  student then by teacher):

  -- @ expr: wrap_f
  -- @ inject
  -- wrap_f is used here and defined in INJECT section

  -- @ INJECT BEGIN
  -- f can be now more general then Integer -> Integer -> Integer
  wrap_f :: Integer -> Integer -> Integer
  wrap_f = f
  -- @ INJECT END

- import specific modules (and only them), or hide specific
  functionality

  -- @ expr: myfoldr
  -- @ inject

  import qualified Prelude

  -- @ INJECT BEGIN

  import Prelude hiding (foldr, foldl, foldr1, foldl1
      , scanr, scanr1, scanl, scanl1 )
  -- trick to disallow further includes
  no_include_after_this = undefined

  -- @ INJECT END

  myfoldr = Prelude.foldr -- foldr is not accessible and Prelude.foldr
                          -- is not accessible by student (as it is before
                          -- INJECT BEGIN)