ideas-0.7: src/Main/IDEAS.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.IDEAS (useIDEAS) where
import Common.Rewriting
import Common.Utils (Some(..), fromShowString)
import Main.Options
import Service.DomainReasoner
import Service.ExercisePackage
import Service.ServiceList
import qualified Domain.LinearAlgebra as LA
import qualified Domain.LinearAlgebra.Checks as LA
import qualified Domain.Logic as Logic
import qualified Domain.Logic.FeedbackText as Logic
import qualified Domain.Math.Expr as Math
import qualified Domain.Math.Data.Interval as MathInterval
import qualified Domain.Math.Derivative.Exercises as Math
import qualified Domain.Math.Equation.CoverUpExercise as Math
import qualified Domain.Math.Numeric.Exercises as Math
import qualified Domain.Math.Numeric.Tests as MathNum
import qualified Domain.Math.Polynomial.Exercises as Math
import qualified Domain.Math.Polynomial.IneqExercises as Math
import qualified Domain.Math.Polynomial.RationalExercises as Math
import qualified Domain.Math.Polynomial.Tests as MathPoly
import qualified Domain.Math.Power.Exercises as Math
import qualified Domain.Math.Power.Equation.Exercises as Math
import qualified Domain.Math.SquareRoot.Tests as MathSqrt
import qualified Domain.Math.Polynomial.LeastCommonMultiple as MathLCM
-- import qualified Domain.RegularExpr.Exercises as RE
import qualified Domain.RelationAlgebra as RA
useIDEAS :: DomainReasoner a -> IO a
useIDEAS action = runDomainReasoner $ do
-- version information
setVersion shortVersion
setFullVersion fullVersion
-- exercise packages
addPackages packages
-- services
addServices serviceList
addPkgService exerciselistS
-- domain checks
addTestSuite $ do
MathNum.main
MathPoly.tests
MathSqrt.tests
MathInterval.testMe
MathLCM.testLCM
LA.checks
-- do the rest
action
packages :: [Some ExercisePackage]
packages =
[ -- logic and relation-algebra
Some (package Logic.dnfExercise)
{ withOpenMath = True
, toOpenMath = termToOMOBJ . toTerm . fmap (Math.Var . fromShowString)
, fromOpenMath = (>>= fromTerm) . omobjToTerm
, getExerciseText = Just logicText
}
, Some (package Logic.dnfUnicodeExercise)
{ withOpenMath = True
, toOpenMath = termToOMOBJ . toTerm . fmap (Math.Var . fromShowString)
, fromOpenMath = (>>= fromTerm) . omobjToTerm
, getExerciseText = Just logicText
}
-- , somePackage Logic.proofExercise
, 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.rationalEquationExercise
, someTermPackage Math.simplifyRationalExercise
-- , someTermPackage Math.divisionBrokenExercise
, someTermPackage Math.quadraticNoABCExercise
, someTermPackage Math.quadraticWithApproximation
, someTermPackage Math.derivativeExercise
, someTermPackage Math.derivativePolyExercise
, someTermPackage Math.derivativeProductExercise
, someTermPackage Math.derivativeQuotientExercise
-- , someTermPackage Math.derivativePowerExercise
, someTermPackage Math.simplifyPowerExercise
, someTermPackage Math.powerOfExercise
, someTermPackage Math.nonNegBrokenExpExercise
, someTermPackage Math.calcPowerExercise
, someTermPackage Math.powerEqExercise
, someTermPackage Math.expEqExercise
, someTermPackage Math.logEqExercise
-- 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
}