{-# LANGUAGE OverloadedStrings #-}
module Study.Courses.English.Vocabulary.Brivla.Exercises where
import Core
import Util (generatorFromList, combineGenerators)
import Language.Lojban.Dictionaries (englishDictionary)
import Control.Arrow (second)
import Study.Framework.Lojban.ExerciseGenerators
import Study.Courses.English.Vocabulary.Brivla.Translations
buildBrivlaExerciseGenerator :: TranslationsByExpression -> ExerciseGenerator
buildBrivlaExerciseGenerator :: TranslationsByExpression -> ExerciseGenerator
buildBrivlaExerciseGenerator TranslationsByExpression
translationsByExpression = [(Int, ExerciseGenerator)] -> ExerciseGenerator
forall a. [(Int, StdGen -> a)] -> StdGen -> a
combineGenerators [(Int
12, ExerciseGenerator
translationExercises), (Int
2, ExerciseGenerator
brivlaPlacesExercises), (Int
3, ExerciseGenerator
brivlaProvidingExercises)] where
dictionary :: Dictionary
dictionary = Dictionary
englishDictionary
brivla :: [Text]
brivla = ((Text, [Translation]) -> Text)
-> TranslationsByExpression -> [Text]
forall a b. (a -> b) -> [a] -> [b]
map (Text, [Translation]) -> Text
forall a b. (a, b) -> a
fst TranslationsByExpression
translationsByExpression
translationExercises :: ExerciseGenerator
translationExercises = TranslationGeneratorByExpression -> ExerciseGenerator
generateFillingBlanksExerciseByExpression TranslationGeneratorByExpression
translationGeneratorByExpression
translationGeneratorByExpression :: TranslationGeneratorByExpression
translationGeneratorByExpression = ((Text, [Translation]) -> (Text, StdGen -> (Translation, StdGen)))
-> TranslationsByExpression -> TranslationGeneratorByExpression
forall a b. (a -> b) -> [a] -> [b]
map (([Translation] -> StdGen -> (Translation, StdGen))
-> (Text, [Translation]) -> (Text, StdGen -> (Translation, StdGen))
forall b c d. (b -> c) -> (d, b) -> (d, c)
forall (a :: * -> * -> *) b c d.
Arrow a =>
a b c -> a (d, b) (d, c)
second [Translation] -> StdGen -> (Translation, StdGen)
forall a. [a] -> StdGen -> (a, StdGen)
generatorFromList) TranslationsByExpression
translationsByExpression
brivlaPlacesExercises :: ExerciseGenerator
brivlaPlacesExercises = Dictionary -> [Text] -> ExerciseGenerator
generateIsolatedBrivlaPlacesExercise Dictionary
dictionary [Text]
brivla
brivlaProvidingExercises :: ExerciseGenerator
brivlaProvidingExercises = Text -> Dictionary -> WordGenerator -> ExerciseGenerator
generateLexiconProvidingExercise Text
"brivla" Dictionary
dictionary (WordGenerator -> ExerciseGenerator)
-> WordGenerator -> ExerciseGenerator
forall a b. (a -> b) -> a -> b
$ [Text] -> WordGenerator
forall a. [a] -> StdGen -> (a, StdGen)
generatorFromList [Text]
brivla
exercises01 :: ExerciseGenerator
exercises01 :: ExerciseGenerator
exercises01 = TranslationsByExpression -> ExerciseGenerator
buildBrivlaExerciseGenerator TranslationsByExpression
translationsByExpression01
exercises02 :: ExerciseGenerator
exercises02 :: ExerciseGenerator
exercises02 = TranslationsByExpression -> ExerciseGenerator
buildBrivlaExerciseGenerator TranslationsByExpression
translationsByExpression02
exercises03 :: ExerciseGenerator
exercises03 :: ExerciseGenerator
exercises03 = TranslationsByExpression -> ExerciseGenerator
buildBrivlaExerciseGenerator TranslationsByExpression
translationsByExpression03
exercises04 :: ExerciseGenerator
exercises04 :: ExerciseGenerator
exercises04 = TranslationsByExpression -> ExerciseGenerator
buildBrivlaExerciseGenerator TranslationsByExpression
translationsByExpression04
exercises05 :: ExerciseGenerator
exercises05 :: ExerciseGenerator
exercises05 = TranslationsByExpression -> ExerciseGenerator
buildBrivlaExerciseGenerator TranslationsByExpression
translationsByExpression05