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