packages feed

ideas-0.6: src/Main/ExerciseList.hs

-----------------------------------------------------------------------------
-- Copyright 2010, Open Universiteit Nederland. This file is distributed 
-- under the terms of the GNU General Public License. For more information, 
-- see the file "LICENSE.txt", which is included in the distribution.
-----------------------------------------------------------------------------
-- |
-- Maintainer  :  bastiaan.heeren@ou.nl
-- Stability   :  provisional
-- Portability :  portable (depends on ghc)
--
-----------------------------------------------------------------------------
module Main.ExerciseList (packages, useIDEAS) where

import Common.Utils (Some(..), fromShowString)
import Common.Rewriting
import Domain.Math.Expr
import Service.ExercisePackage
import Service.FeedbackText
import Service.DomainReasoner
import qualified Domain.LinearAlgebra as LA
import qualified Domain.Logic as Logic
import qualified Domain.Logic.FeedbackText as Logic
import qualified Domain.RelationAlgebra as RA
import qualified Domain.Math.DerivativeExercise as Math
import qualified Domain.Math.Numeric.Exercises as Math
import qualified Domain.Math.Equation.CoverUpExercise as Math
import qualified Domain.Math.Polynomial.Exercises as Math
import qualified Domain.Math.Polynomial.IneqExercises as Math
import qualified Domain.RegularExpr.Exercises as RE
import qualified Domain.Math.Power.Exercises as Math
import Main.Options
import Service.ServiceList

packages :: [Some ExercisePackage]
packages =
   [ -- logic and relation-algebra
     Some (package Logic.dnfExercise)
        { withOpenMath    = True
        , toOpenMath      = termToOMOBJ . toTerm . fmap (Var . fromShowString)
        , fromOpenMath    = (>>= fromTerm) . omobjToTerm
        , getExerciseText = Just logicText
        }
   , Some (package Logic.dnfUnicodeExercise)
        { withOpenMath    = True
        , toOpenMath      = termToOMOBJ . toTerm . fmap (Var . fromShowString)
        , fromOpenMath    = (>>= fromTerm) . omobjToTerm
        , getExerciseText = Just logicText
        }
   , somePackage RA.cnfExercise
     -- basic math
   , someTermPackage Math.naturalExercise
   , someTermPackage Math.integerExercise
   , someTermPackage Math.rationalExercise
   , someTermPackage Math.fractionExercise
   , someTermPackage Math.coverUpExercise
   , someTermPackage Math.linearExercise
   , someTermPackage Math.linearMixedExercise
   , someTermPackage Math.quadraticExercise
   , someTermPackage Math.higherDegreeExercise
   , someTermPackage Math.findFactorsExercise
   , someTermPackage Math.ineqLinearExercise
   , someTermPackage Math.ineqQuadraticExercise
   , someTermPackage Math.ineqHigherDegreeExercise
   , someTermPackage Math.quadraticNoABCExercise
   , someTermPackage Math.quadraticWithApproximation
   , someTermPackage Math.derivativeExercise
   , someTermPackage Math.simplifyPowerExercise
   , someTermPackage Math.powerOfExercise     
   , someTermPackage Math.nonNegExpExercise
   , someTermPackage Math.calcPowerExercise
     -- linear algebra
   , someTermPackage LA.gramSchmidtExercise
   , someTermPackage LA.linearSystemExercise
   , someTermPackage LA.gaussianElimExercise
   , someTermPackage LA.systemWithMatrixExercise
     -- regular expressions
   , somePackage RE.regexpExercise
   ]
   
logicText :: ExerciseText Logic.SLogic
logicText = ExerciseText
   { ruleText              = Logic.ruleText
   , appliedRule           = Logic.appliedRule
   , feedbackSyntaxError   = Logic.feedbackSyntaxError
   , feedbackSame          = Logic.feedbackSame
   , feedbackBuggy         = Logic.feedbackBuggy
   , feedbackNotEquivalent = Logic.feedbackNotEquivalent
   , feedbackOk            = Logic.feedbackOk
   , feedbackDetour        = Logic.feedbackDetour
   , feedbackUnknown       = Logic.feedbackUnknown
   }
   
useIDEAS :: DomainReasoner a -> IO a
useIDEAS action = runDomainReasoner $ do
   setVersion     shortVersion
   setFullVersion fullVersion
   addPackages    packages
   addServices    serviceList
   addPkgService  exerciselistS
   action