{-# LANGUAGE OverloadedStrings #-}
module Study.Courses.English.Grammar.Introduction.Exercises where
import Core
import Study.Framework.Lojban.SentenceGenerators (generateNonbridi)
import Study.Framework.Lojban.Extractors (extractSimpleBridiGeneratorFromTranslationGenerator, extractTrivialBridiGeneratorFromVocabulary)
import Study.Framework.Lojban.ExerciseGenerators
import Study.Framework.Lojban.ExerciseUtils (simplifyTerminatorsInCanonicalAnswer)
import Study.Framework.Lojban.TranslationUtils (simplifyTerminatorsInTranslationGenerator, narrowTranslationGenerator)
import Language.Lojban.Core
import Language.Lojban.Dictionaries (englishDictionary)
import Language.Lojban.Presentation (displayStandardSimpleBridi, displayVariantSimpleBridi, displayReorderedStandardSimpleBridi)
import Language.Lojban.Refinement (simplifyTerminatorsInBridiDisplayer)
import Study.Courses.English.Grammar.Introduction.Translations
import Study.Courses.English.Grammar.Introduction.Vocabulary
import Study.Courses.English.Grammar.Introduction.Strategies
import Util (combineGenerators, combineGeneratorsUniformly, generatorFromList, chooseItemUniformly)
import qualified Data.Text as T
dictionary :: Dictionary
dictionary :: Dictionary
dictionary = Dictionary
englishDictionary
exercises1 :: ExerciseGenerator
exercises1 :: ExerciseGenerator
exercises1 =
[(Int, ExerciseGenerator)] -> ExerciseGenerator
forall a. [(Int, StdGen -> a)] -> StdGen -> a
combineGenerators
[ (Int
25, SimpleBridiGenerator
-> TextGenerator -> SimpleBridiDisplayer -> ExerciseGenerator
generateEnglishOrLojbanBridiJufraExercise ([(Int, SimpleBridiGenerator)] -> SimpleBridiGenerator
forall a. [(Int, StdGen -> a)] -> StdGen -> a
combineGenerators [(Int
6, SimpleBridiGenerator
bridiGenerator), (Int
3, SimpleBridiGenerator
trivialBridiGenerator)]) TextGenerator
nonbridiGenerator SimpleBridiDisplayer
bridiDisplayer)
, (Int
20, SimpleBridiGenerator -> SimpleBridiDisplayer -> ExerciseGenerator
generateSelbriIdentificationExercise SimpleBridiGenerator
bridiGenerator SimpleBridiDisplayer
bridiDisplayer)
, (Int
10, Dictionary
-> SimpleBridiGenerator
-> SimpleBridiDisplayer
-> ExerciseGenerator
generateContextualizedGismuPlacePositionExercise Dictionary
dictionary SimpleBridiGenerator
bridiGenerator SimpleBridiDisplayer
bridiDisplayer)
, (Int
20, Dictionary
-> SimpleBridiGenerator
-> SimpleBridiDisplayer
-> ExerciseGenerator
generateContextualizedGismuPlaceMeaningExercise Dictionary
dictionary SimpleBridiGenerator
bridiGenerator SimpleBridiDisplayer
bridiDisplayer)
, (Int
40, ExerciseGenerator
translationExercises1)
]
where
vocabulary :: Vocabulary
vocabulary = Vocabulary
vocabulary1_cumulative
nonbridiGenerator :: TextGenerator
nonbridiGenerator = Vocabulary -> TextGenerator
generateNonbridi Vocabulary
vocabulary
bridiGenerator :: SimpleBridiGenerator
bridiGenerator = TranslationGenerator -> SimpleBridiGenerator
extractSimpleBridiGeneratorFromTranslationGenerator TranslationGenerator
translations1
trivialBridiGenerator :: SimpleBridiGenerator
trivialBridiGenerator = Vocabulary -> SimpleBridiGenerator
extractTrivialBridiGeneratorFromVocabulary Vocabulary
vocabulary
bridiDisplayer :: SimpleBridiDisplayer
bridiDisplayer = SimpleBridiDisplayer
displayStandardSimpleBridi
translationExercises1 :: ExerciseGenerator
translationExercises1 :: ExerciseGenerator
translationExercises1 = SentenceCanonicalizer
-> SentenceComparer -> TranslationGenerator -> ExerciseGenerator
generateTranslationExercise SentenceCanonicalizer
sentenceCanonicalizer SentenceComparer
sentenceComparer TranslationGenerator
translations1
exercises2 :: ExerciseGenerator
exercises2 :: ExerciseGenerator
exercises2 =
[(Int, ExerciseGenerator)] -> ExerciseGenerator
forall a. [(Int, StdGen -> a)] -> StdGen -> a
combineGenerators
[ (Int
15, SimpleBridiGenerator
-> TextGenerator -> SimpleBridiDisplayer -> ExerciseGenerator
generateEnglishOrLojbanBridiJufraExercise ([(Int, SimpleBridiGenerator)] -> SimpleBridiGenerator
forall a. [(Int, StdGen -> a)] -> StdGen -> a
combineGenerators [(Int
5, SimpleBridiGenerator
bridiGenerator), (Int
3, SimpleBridiGenerator
trivialBridiGenerator)]) TextGenerator
nonbridiGenerator SimpleBridiDisplayer
bridiDisplayer)
, (Int
20, SimpleBridiGenerator -> SimpleBridiDisplayer -> ExerciseGenerator
generateSelbriIdentificationExercise SimpleBridiGenerator
bridiGenerator SimpleBridiDisplayer
bridiDisplayer)
, (Int
10, Dictionary
-> SimpleBridiGenerator
-> SimpleBridiDisplayer
-> ExerciseGenerator
generateContextualizedGismuPlacePositionExercise Dictionary
dictionary SimpleBridiGenerator
bridiGenerator SimpleBridiDisplayer
bridiDisplayer)
, (Int
20, Dictionary
-> SimpleBridiGenerator
-> SimpleBridiDisplayer
-> ExerciseGenerator
generateContextualizedGismuPlaceMeaningExercise Dictionary
dictionary SimpleBridiGenerator
bridiGenerator SimpleBridiDisplayer
bridiDisplayer)
, (Int
40, ExerciseGenerator
translationExercises2)
]
where
vocabulary :: Vocabulary
vocabulary = Vocabulary
vocabulary2_cumulative
nonbridiGenerator :: TextGenerator
nonbridiGenerator = Vocabulary -> TextGenerator
generateNonbridi Vocabulary
vocabulary
bridiGenerator :: SimpleBridiGenerator
bridiGenerator = TranslationGenerator -> SimpleBridiGenerator
extractSimpleBridiGeneratorFromTranslationGenerator TranslationGenerator
translations2
trivialBridiGenerator :: SimpleBridiGenerator
trivialBridiGenerator = Vocabulary -> SimpleBridiGenerator
extractTrivialBridiGeneratorFromVocabulary Vocabulary
vocabulary
bridiDisplayer :: SimpleBridiDisplayer
bridiDisplayer = [(Int, SimpleBridiDisplayer)] -> SimpleBridiDisplayer
forall a. [(Int, StdGen -> a)] -> StdGen -> a
combineGenerators [(Int
7, SimpleBridiDisplayer
displayStandardSimpleBridi), (Int
3, SimpleBridiDisplayer
displayVariantSimpleBridi)]
translationExercises2 :: ExerciseGenerator
translationExercises2 :: ExerciseGenerator
translationExercises2 = SentenceCanonicalizer
-> SentenceComparer -> TranslationGenerator -> ExerciseGenerator
generateTranslationExercise SentenceCanonicalizer
sentenceCanonicalizer SentenceComparer
sentenceComparer TranslationGenerator
translations2
exercises3 :: ExerciseGenerator
exercises3 :: ExerciseGenerator
exercises3 =
[(Int, ExerciseGenerator)] -> ExerciseGenerator
forall a. [(Int, StdGen -> a)] -> StdGen -> a
combineGenerators
[ (Int
10, SimpleBridiGenerator
-> TextGenerator -> SimpleBridiDisplayer -> ExerciseGenerator
generateEnglishOrLojbanBridiJufraExercise ([(Int, SimpleBridiGenerator)] -> SimpleBridiGenerator
forall a. [(Int, StdGen -> a)] -> StdGen -> a
combineGenerators [(Int
4, SimpleBridiGenerator
bridiGenerator), (Int
3, SimpleBridiGenerator
trivialBridiGenerator)]) TextGenerator
nonbridiGenerator SimpleBridiDisplayer
bridiDisplayer)
, (Int
10, SimpleBridiGenerator -> SimpleBridiDisplayer -> ExerciseGenerator
generateSelbriIdentificationExercise SimpleBridiGenerator
bridiGenerator SimpleBridiDisplayer
bridiDisplayer)
, (Int
20, Dictionary
-> SimpleBridiGenerator
-> SimpleBridiDisplayer
-> ExerciseGenerator
generateContextualizedGismuPlacePositionExercise Dictionary
dictionary SimpleBridiGenerator
bridiGenerator SimpleBridiDisplayer
bridiDisplayer)
, (Int
20, Dictionary
-> SimpleBridiGenerator
-> SimpleBridiDisplayer
-> ExerciseGenerator
generateContextualizedGismuPlaceMeaningExercise Dictionary
dictionary SimpleBridiGenerator
bridiGenerator SimpleBridiDisplayer
bridiDisplayer)
, (Int
30, Dictionary -> [Text] -> ExerciseGenerator
generateIsolatedBrivlaPlacesExercise Dictionary
dictionary ([Text] -> ExerciseGenerator) -> [Text] -> ExerciseGenerator
forall a b. (a -> b) -> a -> b
$ Vocabulary -> [Text]
vocabularyBrivlaList Vocabulary
vocabulary)
, (Int
60, ExerciseGenerator
translationExercises3)
]
where
vocabulary :: Vocabulary
vocabulary = Vocabulary
vocabulary3_cumulative
nonbridiGenerator :: TextGenerator
nonbridiGenerator = Vocabulary -> TextGenerator
generateNonbridi Vocabulary
vocabulary
bridiGenerator :: SimpleBridiGenerator
bridiGenerator = TranslationGenerator -> SimpleBridiGenerator
extractSimpleBridiGeneratorFromTranslationGenerator TranslationGenerator
translations3
trivialBridiGenerator :: SimpleBridiGenerator
trivialBridiGenerator = Vocabulary -> SimpleBridiGenerator
extractTrivialBridiGeneratorFromVocabulary Vocabulary
vocabulary
bridiDisplayer :: SimpleBridiDisplayer
bridiDisplayer = [(Int, SimpleBridiDisplayer)] -> SimpleBridiDisplayer
forall a. [(Int, StdGen -> a)] -> StdGen -> a
combineGenerators [(Int
7, SimpleBridiDisplayer
displayStandardSimpleBridi), (Int
2, SimpleBridiDisplayer
displayVariantSimpleBridi), (Int
1, SimpleBridiDisplayer
displayReorderedStandardSimpleBridi)]
translationExercises3_nice :: ExerciseGenerator
translationExercises3_nice :: ExerciseGenerator
translationExercises3_nice = [(Int, ExerciseGenerator)] -> ExerciseGenerator
forall a. [(Int, StdGen -> a)] -> StdGen -> a
combineGenerators [(Int
1, ExerciseGenerator
restricted), (Int
5, ExerciseGenerator
nice)] where
restricted :: ExerciseGenerator
restricted = Text
-> SentenceCanonicalizer
-> SentenceComparer
-> TranslationGenerator
-> ExerciseGenerator
generateBlacklistedWordTranslationExercise Text
"zo'e" SentenceCanonicalizer
sentenceCanonicalizer SentenceComparer
sentenceComparer TranslationGenerator
translations3_restricted
nice :: ExerciseGenerator
nice = SentenceCanonicalizer
-> SentenceComparer -> TranslationGenerator -> ExerciseGenerator
generateTranslationExercise SentenceCanonicalizer
sentenceCanonicalizer SentenceComparer
sentenceComparer TranslationGenerator
translations3_nice
translationExercises3_normal :: ExerciseGenerator
translationExercises3_normal :: ExerciseGenerator
translationExercises3_normal = SentenceCanonicalizer
-> SentenceComparer -> TranslationGenerator -> ExerciseGenerator
generateTranslationExercise SentenceCanonicalizer
sentenceCanonicalizer SentenceComparer
sentenceComparer TranslationGenerator
translations3_normal
translationExercises3 :: ExerciseGenerator
translationExercises3 :: ExerciseGenerator
translationExercises3 = [(Int, ExerciseGenerator)] -> ExerciseGenerator
forall a. [(Int, StdGen -> a)] -> StdGen -> a
combineGenerators [(Int
1, ExerciseGenerator
restricted), (Int
5, ExerciseGenerator
unrestricted)] where
restricted :: ExerciseGenerator
restricted = Text
-> SentenceCanonicalizer
-> SentenceComparer
-> TranslationGenerator
-> ExerciseGenerator
generateBlacklistedWordTranslationExercise Text
"zo'e" SentenceCanonicalizer
sentenceCanonicalizer SentenceComparer
sentenceComparer TranslationGenerator
translations3_restricted
unrestricted :: ExerciseGenerator
unrestricted = SentenceCanonicalizer
-> SentenceComparer -> TranslationGenerator -> ExerciseGenerator
generateTranslationExercise SentenceCanonicalizer
sentenceCanonicalizer SentenceComparer
sentenceComparer TranslationGenerator
translations3
exercises4 :: ExerciseGenerator
exercises4 :: ExerciseGenerator
exercises4 =
[(Int, ExerciseGenerator)] -> ExerciseGenerator
forall a. [(Int, StdGen -> a)] -> StdGen -> a
combineGenerators
[ (Int
10, Dictionary
-> SimpleBridiGenerator
-> SimpleBridiDisplayer
-> ExerciseGenerator
generateContextualizedGismuPlacePositionExercise Dictionary
dictionary SimpleBridiGenerator
bridiGenerator SimpleBridiDisplayer
bridiDisplayer)
, (Int
20, Dictionary
-> SimpleBridiGenerator
-> SimpleBridiDisplayer
-> ExerciseGenerator
generateContextualizedGismuPlaceMeaningExercise Dictionary
dictionary SimpleBridiGenerator
bridiGenerator SimpleBridiDisplayer
bridiDisplayer)
, (Int
20, Dictionary -> [Text] -> ExerciseGenerator
generateIsolatedBrivlaPlacesExercise Dictionary
dictionary ([Text] -> ExerciseGenerator) -> [Text] -> ExerciseGenerator
forall a b. (a -> b) -> a -> b
$ Vocabulary -> [Text]
vocabularyBrivlaList Vocabulary
vocabulary)
, (Int
100, ExerciseGenerator
translationExercises4)
]
where
vocabulary :: Vocabulary
vocabulary = Vocabulary
vocabulary4_cumulative
bridiGenerator :: SimpleBridiGenerator
bridiGenerator = TranslationGenerator -> SimpleBridiGenerator
extractSimpleBridiGeneratorFromTranslationGenerator (TranslationGenerator -> SimpleBridiGenerator)
-> TranslationGenerator -> SimpleBridiGenerator
forall a b. (a -> b) -> a -> b
$ TranslationGenerator -> TranslationGenerator
narrowTranslationGenerator TranslationGenerator
translations4_sentences
bridiDisplayer :: SimpleBridiDisplayer
bridiDisplayer = [(Int, SimpleBridiDisplayer)] -> SimpleBridiDisplayer
forall a. [(Int, StdGen -> a)] -> StdGen -> a
combineGenerators [(Int
7, SimpleBridiDisplayer
displayStandardSimpleBridi), (Int
2, SimpleBridiDisplayer
displayVariantSimpleBridi), (Int
1, SimpleBridiDisplayer
displayReorderedStandardSimpleBridi)]
translationExercises4 :: ExerciseGenerator
translationExercises4 :: ExerciseGenerator
translationExercises4 = [(Int, ExerciseGenerator)] -> ExerciseGenerator
forall a. [(Int, StdGen -> a)] -> StdGen -> a
combineGenerators [(Int
1, ExerciseGenerator
translationExercises4_expressions), (Int
1, ExerciseGenerator
translationExercises4_sentences)] where
translationExercises4_expressions :: ExerciseGenerator
translationExercises4_expressions = Text
-> SentenceCanonicalizer
-> SentenceComparer
-> TranslationGenerator
-> ExerciseGenerator
generateTranslationExerciseWithCustomTitle Text
"Translate this expression as a tanru" SentenceCanonicalizer
sentenceCanonicalizer SentenceComparer
sentenceComparer TranslationGenerator
translations4_expressions
translationExercises4_sentences :: ExerciseGenerator
translationExercises4_sentences = SentenceCanonicalizer
-> SentenceComparer -> TranslationGenerator -> ExerciseGenerator
generateTranslationExercise SentenceCanonicalizer
sentenceCanonicalizer SentenceComparer
sentenceComparer TranslationGenerator
translations4_sentences
exercises5 :: ExerciseGenerator
exercises5 :: ExerciseGenerator
exercises5 =
[(Int, ExerciseGenerator)] -> ExerciseGenerator
forall a. [(Int, StdGen -> a)] -> StdGen -> a
combineGenerators
[ (Int
20, Dictionary -> [Text] -> ExerciseGenerator
generateIsolatedBrivlaPlacesExercise Dictionary
dictionary ([Text] -> ExerciseGenerator) -> [Text] -> ExerciseGenerator
forall a b. (a -> b) -> a -> b
$ Vocabulary -> [Text]
vocabularyBrivlaList Vocabulary
vocabulary)
, (Int
20, Dictionary
-> SimpleBridiGenerator
-> SimpleBridiDisplayer
-> ExerciseGenerator
generateContextualizedGismuPlaceMeaningExercise Dictionary
dictionary SimpleBridiGenerator
bridiGenerator SimpleBridiDisplayer
bridiDisplayer)
, (Int
20, ExerciseGenerator
questionExercises5)
, (Int
80, ExerciseGenerator
translationExercises5)
]
where
vocabulary :: Vocabulary
vocabulary = Vocabulary
vocabulary5_cumulative
bridiGenerator :: SimpleBridiGenerator
bridiGenerator = TranslationGenerator -> SimpleBridiGenerator
extractSimpleBridiGeneratorFromTranslationGenerator TranslationGenerator
translations5
bridiDisplayer :: SimpleBridiDisplayer
bridiDisplayer = [(Int, SimpleBridiDisplayer)] -> SimpleBridiDisplayer
forall a. [(Int, StdGen -> a)] -> StdGen -> a
combineGenerators [(Int
7, SimpleBridiDisplayer
displayStandardSimpleBridi), (Int
2, SimpleBridiDisplayer
displayVariantSimpleBridi), (Int
1, SimpleBridiDisplayer
displayReorderedStandardSimpleBridi)]
translationExercises5 :: ExerciseGenerator
translationExercises5 :: ExerciseGenerator
translationExercises5 = [(Int, ExerciseGenerator)] -> ExerciseGenerator
forall a. [(Int, StdGen -> a)] -> StdGen -> a
combineGenerators [(Int
1, ExerciseGenerator
restricted), (Int
5, ExerciseGenerator
unrestricted)] where
restricted :: ExerciseGenerator
restricted = Text
-> SentenceCanonicalizer
-> SentenceComparer
-> TranslationGenerator
-> ExerciseGenerator
generateBlacklistedWordTranslationExercise Text
"zo'e" SentenceCanonicalizer
sentenceCanonicalizer SentenceComparer
sentenceComparer TranslationGenerator
translations5_restricted
unrestricted :: ExerciseGenerator
unrestricted = SentenceCanonicalizer
-> SentenceComparer -> TranslationGenerator -> ExerciseGenerator
generateTranslationExercise SentenceCanonicalizer
sentenceCanonicalizer SentenceComparer
sentenceComparer TranslationGenerator
translations5
questionExercises5 :: ExerciseGenerator
questionExercises5 :: ExerciseGenerator
questionExercises5 = [Text] -> TranslationGenerator -> ExerciseGenerator
generateFillingBlanksExerciseByAlternatives [Text
"mo", Text
"ma"] (TranslationGenerator -> ExerciseGenerator)
-> TranslationGenerator -> ExerciseGenerator
forall a b. (a -> b) -> a -> b
$ TranslationGenerator -> TranslationGenerator
narrowTranslationGenerator (TranslationGenerator -> TranslationGenerator)
-> TranslationGenerator -> TranslationGenerator
forall a b. (a -> b) -> a -> b
$ [TranslationGenerator] -> TranslationGenerator
forall a. [StdGen -> a] -> StdGen -> a
combineGeneratorsUniformly [TranslationGenerator
translations5_ma, TranslationGenerator
translations5_mo]
questionExercises5_simplified :: ExerciseGenerator
questionExercises5_simplified :: ExerciseGenerator
questionExercises5_simplified = [Text] -> TranslationGenerator -> ExerciseGenerator
generateFillingBlanksExerciseByAlternatives [Text
"mo", Text
"ma"] (TranslationGenerator -> ExerciseGenerator)
-> TranslationGenerator -> ExerciseGenerator
forall a b. (a -> b) -> a -> b
$ TranslationGenerator -> TranslationGenerator
simplifyTerminatorsInTranslationGenerator (TranslationGenerator -> TranslationGenerator)
-> TranslationGenerator -> TranslationGenerator
forall a b. (a -> b) -> a -> b
$ TranslationGenerator -> TranslationGenerator
narrowTranslationGenerator (TranslationGenerator -> TranslationGenerator)
-> TranslationGenerator -> TranslationGenerator
forall a b. (a -> b) -> a -> b
$ [TranslationGenerator] -> TranslationGenerator
forall a. [StdGen -> a] -> StdGen -> a
combineGeneratorsUniformly [TranslationGenerator
translations5_ma, TranslationGenerator
translations5_mo]
exercises6 :: ExerciseGenerator
exercises6 :: ExerciseGenerator
exercises6 =
[(Int, ExerciseGenerator)] -> ExerciseGenerator
forall a. [(Int, StdGen -> a)] -> StdGen -> a
combineGenerators
[ (Int
30, Dictionary -> [Text] -> ExerciseGenerator
generateIsolatedBrivlaPlacesExercise Dictionary
dictionary ([Text] -> ExerciseGenerator) -> [Text] -> ExerciseGenerator
forall a b. (a -> b) -> a -> b
$ Vocabulary -> [Text]
vocabularyBrivlaList Vocabulary
vocabulary)
, (Int
10, Dictionary
-> SimpleBridiGenerator
-> SimpleBridiDisplayer
-> ExerciseGenerator
generateContextualizedGismuPlaceMeaningExercise Dictionary
dictionary SimpleBridiGenerator
bridiGenerator SimpleBridiDisplayer
bridiDisplayer)
, (Int
40, ExerciseGenerator
abstractionExercises6)
, (Int
70, ExerciseGenerator
translationExercises6)
]
where
vocabulary :: Vocabulary
vocabulary = Vocabulary
vocabulary6_cumulative
bridiGenerator :: SimpleBridiGenerator
bridiGenerator = TranslationGenerator -> SimpleBridiGenerator
extractSimpleBridiGeneratorFromTranslationGenerator TranslationGenerator
translations6
bridiDisplayer :: SimpleBridiDisplayer
bridiDisplayer = [(Int, SimpleBridiDisplayer)] -> SimpleBridiDisplayer
forall a. [(Int, StdGen -> a)] -> StdGen -> a
combineGenerators [(Int
7, SimpleBridiDisplayer
displayStandardSimpleBridi), (Int
2, SimpleBridiDisplayer
displayVariantSimpleBridi), (Int
1, SimpleBridiDisplayer
displayReorderedStandardSimpleBridi)]
translationExercises6 :: ExerciseGenerator
translationExercises6 :: ExerciseGenerator
translationExercises6 = SentenceCanonicalizer
-> SentenceComparer -> TranslationGenerator -> ExerciseGenerator
generateTranslationExercise SentenceCanonicalizer
sentenceCanonicalizer SentenceComparer
sentenceComparer TranslationGenerator
translations6
abstractionExercises6 :: ExerciseGenerator
abstractionExercises6 :: ExerciseGenerator
abstractionExercises6 = [Text] -> TranslationGenerator -> ExerciseGenerator
generateFillingBlanksExerciseByAlternatives [Text
"lo nu", Text
"lo du'u", Text
"lo se du'u"] (TranslationGenerator -> ExerciseGenerator)
-> TranslationGenerator -> ExerciseGenerator
forall a b. (a -> b) -> a -> b
$ TranslationGenerator -> TranslationGenerator
narrowTranslationGenerator (TranslationGenerator -> TranslationGenerator)
-> TranslationGenerator -> TranslationGenerator
forall a b. (a -> b) -> a -> b
$ [TranslationGenerator] -> TranslationGenerator
forall a. [StdGen -> a] -> StdGen -> a
combineGeneratorsUniformly [TranslationGenerator
translations6_nu, TranslationGenerator
translations6_du'u, TranslationGenerator
translations6_sedu'u]
abstractionExercises6_simplified :: ExerciseGenerator
abstractionExercises6_simplified :: ExerciseGenerator
abstractionExercises6_simplified = [Text] -> TranslationGenerator -> ExerciseGenerator
generateFillingBlanksExerciseByAlternatives [Text
"lo nu", Text
"lo du'u", Text
"lo se du'u"] (TranslationGenerator -> ExerciseGenerator)
-> TranslationGenerator -> ExerciseGenerator
forall a b. (a -> b) -> a -> b
$ TranslationGenerator -> TranslationGenerator
simplifyTerminatorsInTranslationGenerator (TranslationGenerator -> TranslationGenerator)
-> TranslationGenerator -> TranslationGenerator
forall a b. (a -> b) -> a -> b
$ TranslationGenerator -> TranslationGenerator
narrowTranslationGenerator (TranslationGenerator -> TranslationGenerator)
-> TranslationGenerator -> TranslationGenerator
forall a b. (a -> b) -> a -> b
$ [TranslationGenerator] -> TranslationGenerator
forall a. [StdGen -> a] -> StdGen -> a
combineGeneratorsUniformly [TranslationGenerator
translations6_nu, TranslationGenerator
translations6_du'u, TranslationGenerator
translations6_sedu'u]
exercises7 :: ExerciseGenerator
exercises7 :: ExerciseGenerator
exercises7 =
[(Int, ExerciseGenerator)] -> ExerciseGenerator
forall a. [(Int, StdGen -> a)] -> StdGen -> a
combineGenerators
[ (Int
20, Dictionary -> [Text] -> ExerciseGenerator
generateIsolatedBrivlaPlacesExercise Dictionary
dictionary ([Text] -> ExerciseGenerator) -> [Text] -> ExerciseGenerator
forall a b. (a -> b) -> a -> b
$ Vocabulary -> [Text]
vocabularyBrivlaList Vocabulary
vocabulary)
, (Int
10, Dictionary
-> SimpleBridiGenerator
-> SimpleBridiDisplayer
-> ExerciseGenerator
generateContextualizedGismuPlaceMeaningExercise Dictionary
dictionary SimpleBridiGenerator
bridiGenerator SimpleBridiDisplayer
bridiDisplayer)
, (Int
70, ExerciseGenerator
translationExercises7_restricted)
]
where
vocabulary :: Vocabulary
vocabulary = Vocabulary
vocabulary6_cumulative
bridiGenerator :: SimpleBridiGenerator
bridiGenerator = TranslationGenerator -> SimpleBridiGenerator
extractSimpleBridiGeneratorFromTranslationGenerator TranslationGenerator
translations7
bridiDisplayer :: SimpleBridiDisplayer
bridiDisplayer = SimpleBridiDisplayer -> SimpleBridiDisplayer
simplifyTerminatorsInBridiDisplayer (SimpleBridiDisplayer -> SimpleBridiDisplayer)
-> SimpleBridiDisplayer -> SimpleBridiDisplayer
forall a b. (a -> b) -> a -> b
$ ([(Int, SimpleBridiDisplayer)] -> SimpleBridiDisplayer
forall a. [(Int, StdGen -> a)] -> StdGen -> a
combineGenerators [(Int
7, SimpleBridiDisplayer
displayStandardSimpleBridi), (Int
2, SimpleBridiDisplayer
displayVariantSimpleBridi), (Int
1, SimpleBridiDisplayer
displayReorderedStandardSimpleBridi)])
translationExercises7_restricted :: ExerciseGenerator
translationExercises7_restricted :: ExerciseGenerator
translationExercises7_restricted = Text
-> SentenceCanonicalizer
-> SentenceComparer
-> TranslationGenerator
-> ExerciseGenerator
generateBlacklistedWordTranslationExercise Text
"ku" SentenceCanonicalizer
sentenceCanonicalizer SentenceComparer
sentenceComparer TranslationGenerator
translations7_restricted
exercises1to7 :: ExerciseGenerator
exercises1to7 :: ExerciseGenerator
exercises1to7 =
[(Int, ExerciseGenerator)] -> ExerciseGenerator
forall a. [(Int, StdGen -> a)] -> StdGen -> a
combineGenerators
[ (Int
5, SimpleBridiGenerator
-> TextGenerator -> SimpleBridiDisplayer -> ExerciseGenerator
generateEnglishOrLojbanBridiJufraExercise ([(Int, SimpleBridiGenerator)] -> SimpleBridiGenerator
forall a. [(Int, StdGen -> a)] -> StdGen -> a
combineGenerators [(Int
3, SimpleBridiGenerator
bridiGenerator), (Int
3, SimpleBridiGenerator
trivialBridiGenerator)]) TextGenerator
nonbridiGenerator SimpleBridiDisplayer
bridiDisplayer)
, (Int
5, SimpleBridiGenerator -> SimpleBridiDisplayer -> ExerciseGenerator
generateSelbriIdentificationExercise SimpleBridiGenerator
bridiGenerator SimpleBridiDisplayer
bridiDisplayer)
, (Int
5, Dictionary
-> SimpleBridiGenerator
-> SimpleBridiDisplayer
-> ExerciseGenerator
generateContextualizedGismuPlacePositionExercise Dictionary
dictionary SimpleBridiGenerator
bridiGenerator SimpleBridiDisplayer
bridiDisplayer)
, (Int
15, Dictionary
-> SimpleBridiGenerator
-> SimpleBridiDisplayer
-> ExerciseGenerator
generateContextualizedGismuPlaceMeaningExercise Dictionary
dictionary SimpleBridiGenerator
bridiGenerator SimpleBridiDisplayer
bridiDisplayer)
, (Int
15, Dictionary -> [Text] -> ExerciseGenerator
generateIsolatedBrivlaPlacesExercise Dictionary
dictionary ([Text] -> ExerciseGenerator) -> [Text] -> ExerciseGenerator
forall a b. (a -> b) -> a -> b
$ Vocabulary -> [Text]
vocabularyBrivlaList Vocabulary
vocabulary)
, (Int
60, ExerciseGenerator
translationExercises1to7_simplified)
, (Int
12, ExerciseGenerator
questionExercises5_simplified)
, (Int
12, ExerciseGenerator
abstractionExercises6_simplified)
]
where
vocabulary :: Vocabulary
vocabulary = Vocabulary
vocabulary7_cumulative
bridiGenerator :: SimpleBridiGenerator
bridiGenerator = TranslationGenerator -> SimpleBridiGenerator
extractSimpleBridiGeneratorFromTranslationGenerator TranslationGenerator
translations1to7
trivialBridiGenerator :: SimpleBridiGenerator
trivialBridiGenerator = Vocabulary -> SimpleBridiGenerator
extractTrivialBridiGeneratorFromVocabulary Vocabulary
vocabulary
nonbridiGenerator :: TextGenerator
nonbridiGenerator = Vocabulary -> TextGenerator
generateNonbridi Vocabulary
vocabulary
bridiDisplayer :: SimpleBridiDisplayer
bridiDisplayer = SimpleBridiDisplayer -> SimpleBridiDisplayer
simplifyTerminatorsInBridiDisplayer (SimpleBridiDisplayer -> SimpleBridiDisplayer)
-> SimpleBridiDisplayer -> SimpleBridiDisplayer
forall a b. (a -> b) -> a -> b
$ ([(Int, SimpleBridiDisplayer)] -> SimpleBridiDisplayer
forall a. [(Int, StdGen -> a)] -> StdGen -> a
combineGenerators [(Int
7, SimpleBridiDisplayer
displayStandardSimpleBridi), (Int
2, SimpleBridiDisplayer
displayVariantSimpleBridi), (Int
1, SimpleBridiDisplayer
displayReorderedStandardSimpleBridi)])
translationExercises1to7_simplified :: ExerciseGenerator
translationExercises1to7_simplified :: ExerciseGenerator
translationExercises1to7_simplified = Exercise -> Exercise
simplifyTerminatorsInCanonicalAnswer (Exercise -> Exercise) -> ExerciseGenerator -> ExerciseGenerator
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [(Int, ExerciseGenerator)] -> ExerciseGenerator
forall a. [(Int, StdGen -> a)] -> StdGen -> a
combineGenerators [(Int
4, ExerciseGenerator
translationExercises3_nice), (Int
1, ExerciseGenerator
translationExercises3_normal), (Int
5, ExerciseGenerator
translationExercises4), (Int
5, ExerciseGenerator
translationExercises5), (Int
6, ExerciseGenerator
translationExercises6), (Int
5, ExerciseGenerator
translationExercises7_restricted)]
exercises9 :: ExerciseGenerator
exercises9 :: ExerciseGenerator
exercises9 =
[(Int, ExerciseGenerator)] -> ExerciseGenerator
forall a. [(Int, StdGen -> a)] -> StdGen -> a
combineGenerators
[ (Int
20, Dictionary -> [Text] -> ExerciseGenerator
generateIsolatedBrivlaPlacesExercise Dictionary
dictionary ([Text] -> ExerciseGenerator) -> [Text] -> ExerciseGenerator
forall a b. (a -> b) -> a -> b
$ Vocabulary -> [Text]
vocabularyBrivlaList Vocabulary
vocabulary)
, (Int
70, ExerciseGenerator
translationExercises9)
, (Int
15, ExerciseGenerator
fillingBlanksExercises9)
]
where
vocabulary :: Vocabulary
vocabulary = Vocabulary
vocabulary9_cumulative
translationExercises9 :: ExerciseGenerator
translationExercises9 :: ExerciseGenerator
translationExercises9 = SentenceCanonicalizer
-> SentenceComparer -> TranslationGenerator -> ExerciseGenerator
generateTranslationExercise SentenceCanonicalizer
sentenceCanonicalizer SentenceComparer
sentenceComparer TranslationGenerator
translations9
fillingBlanksExercises9 :: ExerciseGenerator
fillingBlanksExercises9 :: ExerciseGenerator
fillingBlanksExercises9 = [Text] -> TranslationGenerator -> ExerciseGenerator
generateContextualizedFillingBlanksExerciseByAlternatives [Text
"poi", Text
"noi"] (TranslationGenerator -> TranslationGenerator
narrowTranslationGenerator TranslationGenerator
translations9)
exercises10 :: ExerciseGenerator
exercises10 :: ExerciseGenerator
exercises10 =
[(Int, ExerciseGenerator)] -> ExerciseGenerator
forall a. [(Int, StdGen -> a)] -> StdGen -> a
combineGenerators
[ (Int
20, Dictionary -> [Text] -> ExerciseGenerator
generateIsolatedBrivlaPlacesExercise Dictionary
dictionary ([Text] -> ExerciseGenerator) -> [Text] -> ExerciseGenerator
forall a b. (a -> b) -> a -> b
$ Vocabulary -> [Text]
vocabularyBrivlaList Vocabulary
vocabulary)
, (Int
70, ExerciseGenerator
translationExercises10)
]
where
vocabulary :: Vocabulary
vocabulary = Vocabulary
vocabulary10_cumulative
translationExercises10 :: ExerciseGenerator
translationExercises10 :: ExerciseGenerator
translationExercises10 = SentenceCanonicalizer
-> SentenceComparer -> TranslationGenerator -> ExerciseGenerator
generateTranslationExercise SentenceCanonicalizer
sentenceCanonicalizer SentenceComparer
sentenceComparer TranslationGenerator
translations10
exercises11 :: ExerciseGenerator
exercises11 :: ExerciseGenerator
exercises11 =
[(Int, ExerciseGenerator)] -> ExerciseGenerator
forall a. [(Int, StdGen -> a)] -> StdGen -> a
combineGenerators
[ (Int
20, Dictionary -> [Text] -> ExerciseGenerator
generateIsolatedBrivlaPlacesExercise Dictionary
dictionary ([Text] -> ExerciseGenerator) -> [Text] -> ExerciseGenerator
forall a b. (a -> b) -> a -> b
$ Vocabulary -> [Text]
vocabularyBrivlaList Vocabulary
vocabulary)
, (Int
80, ExerciseGenerator
translationExercises11)
]
where
vocabulary :: Vocabulary
vocabulary = Vocabulary
vocabulary11_cumulative
translationExercises11 :: ExerciseGenerator
translationExercises11 :: ExerciseGenerator
translationExercises11 = Text
-> SentenceCanonicalizer
-> SentenceComparer
-> TranslationGenerator
-> ExerciseGenerator
generateTranslationExerciseWithCustomTitle Text
"Translate using sumtcita" SentenceCanonicalizer
sentenceCanonicalizer SentenceComparer
sentenceComparer TranslationGenerator
translations11
exercises12 :: ExerciseGenerator
exercises12 :: ExerciseGenerator
exercises12 =
[(Int, ExerciseGenerator)] -> ExerciseGenerator
forall a. [(Int, StdGen -> a)] -> StdGen -> a
combineGenerators
[ (Int
10, Dictionary -> [Text] -> ExerciseGenerator
generateIsolatedBrivlaPlacesExercise Dictionary
dictionary ([Text] -> ExerciseGenerator) -> [Text] -> ExerciseGenerator
forall a b. (a -> b) -> a -> b
$ Vocabulary -> [Text]
vocabularyBrivlaList Vocabulary
vocabulary)
, (Int
70, ExerciseGenerator
translationExercises12_restricted)
, (Int
15, ExerciseGenerator
translationExercises12_unrestricted)
, (Int
20, ExerciseGenerator
fillingBlanksExercises12)
]
where
vocabulary :: Vocabulary
vocabulary = Vocabulary
vocabulary12_cumulative
translationExercises12_restricted :: ExerciseGenerator
translationExercises12_restricted :: ExerciseGenerator
translationExercises12_restricted = Text
-> SentenceCanonicalizer
-> SentenceComparer
-> TranslationGenerator
-> ExerciseGenerator
generateTranslationExerciseWithCustomTitle Text
"Translate <b>specifying temporal tenses</b>" SentenceCanonicalizer
sentenceCanonicalizer SentenceComparer
sentenceComparer TranslationGenerator
translations12_restricted
translationExercises12_unrestricted :: ExerciseGenerator
translationExercises12_unrestricted :: ExerciseGenerator
translationExercises12_unrestricted = SentenceCanonicalizer
-> SentenceComparer -> TranslationGenerator -> ExerciseGenerator
generateTranslationExercise SentenceCanonicalizer
sentenceCanonicalizer SentenceComparer
sentenceComparer TranslationGenerator
translations12_unrestricted
fillingBlanksExercises12 :: ExerciseGenerator
fillingBlanksExercises12 :: ExerciseGenerator
fillingBlanksExercises12 = [Text] -> TranslationGenerator -> ExerciseGenerator
generateContextualizedFillingBlanksExerciseByAlternatives [Text
"pu", Text
"ca", Text
"ba"] TranslationGenerator
translations12_restricted
exercises9to12 :: ExerciseGenerator
exercises9to12 :: ExerciseGenerator
exercises9to12 =
[(Int, ExerciseGenerator)] -> ExerciseGenerator
forall a. [(Int, StdGen -> a)] -> StdGen -> a
combineGenerators
[ (Int
10, Dictionary -> [Text] -> ExerciseGenerator
generateIsolatedBrivlaPlacesExercise Dictionary
dictionary ([Text] -> ExerciseGenerator) -> [Text] -> ExerciseGenerator
forall a b. (a -> b) -> a -> b
$ Vocabulary -> [Text]
vocabularyBrivlaList Vocabulary
vocabulary)
, (Int
70, ExerciseGenerator
translationExercises9to12)
]
where
vocabulary :: Vocabulary
vocabulary = Vocabulary
vocabulary12_cumulative
translationExercises9to12 :: ExerciseGenerator
translationExercises9to12 :: ExerciseGenerator
translationExercises9to12 = [(Int, ExerciseGenerator)] -> ExerciseGenerator
forall a. [(Int, StdGen -> a)] -> StdGen -> a
combineGenerators
[ (Int
5, ExerciseGenerator
translationExercises9)
, (Int
2, ExerciseGenerator
fillingBlanksExercises9)
, (Int
5, ExerciseGenerator
translationExercises10)
, (Int
5, ExerciseGenerator
translationExercises11)
, (Int
5, ExerciseGenerator
translationExercises12_restricted)
, (Int
1, ExerciseGenerator
translationExercises12_unrestricted)
, (Int
2, ExerciseGenerator
fillingBlanksExercises12)
]
exercises14 :: ExerciseGenerator
exercises14 :: ExerciseGenerator
exercises14 =
[(Int, ExerciseGenerator)] -> ExerciseGenerator
forall a. [(Int, StdGen -> a)] -> StdGen -> a
combineGenerators
[ (Int
70, ExerciseGenerator
translationExercises14)
]
translationExercises14 :: ExerciseGenerator
translationExercises14 :: ExerciseGenerator
translationExercises14 = SentenceCanonicalizer
-> SentenceComparer -> TranslationGenerator -> ExerciseGenerator
generateTranslationExercise SentenceCanonicalizer
sentenceCanonicalizer SentenceComparer
sentenceComparer (TranslationGenerator -> ExerciseGenerator)
-> TranslationGenerator -> ExerciseGenerator
forall a b. (a -> b) -> a -> b
$ [TranslationGenerator] -> TranslationGenerator
forall a. [StdGen -> a] -> StdGen -> a
combineGeneratorsUniformly [TranslationGenerator
translations14_zo, TranslationGenerator
translations14_lu]
exercises15 :: ExerciseGenerator
exercises15 :: ExerciseGenerator
exercises15 =
[(Int, ExerciseGenerator)] -> ExerciseGenerator
forall a. [(Int, StdGen -> a)] -> StdGen -> a
combineGenerators
[ (Int
70, ExerciseGenerator
translationExercises15)
]
translationExercises15 :: ExerciseGenerator
translationExercises15 :: ExerciseGenerator
translationExercises15 = SentenceCanonicalizer
-> SentenceComparer -> TranslationGenerator -> ExerciseGenerator
generateTranslationExercise SentenceCanonicalizer
sentenceCanonicalizer SentenceComparer
sentenceComparer (TranslationGenerator -> ExerciseGenerator)
-> TranslationGenerator -> ExerciseGenerator
forall a b. (a -> b) -> a -> b
$ [TranslationGenerator] -> TranslationGenerator
forall a. [StdGen -> a] -> StdGen -> a
combineGeneratorsUniformly [TranslationGenerator
translations15_expressions, TranslationGenerator
translations15_sentences]
exercises16 :: ExerciseGenerator
exercises16 :: ExerciseGenerator
exercises16 =
[(Int, ExerciseGenerator)] -> ExerciseGenerator
forall a. [(Int, StdGen -> a)] -> StdGen -> a
combineGenerators
[ (Int
70, ExerciseGenerator
translationExercises16)
]
translationExercises16 :: ExerciseGenerator
translationExercises16 :: ExerciseGenerator
translationExercises16 = Text
-> SentenceCanonicalizer
-> SentenceComparer
-> TranslationGenerator
-> ExerciseGenerator
generateTranslationExerciseWithCustomTitle Text
"Translate using <b>sumti connectives</b>" SentenceCanonicalizer
sentenceCanonicalizer SentenceComparer
sentenceComparer (TranslationGenerator -> ExerciseGenerator)
-> TranslationGenerator -> ExerciseGenerator
forall a b. (a -> b) -> a -> b
$ [TranslationGenerator] -> TranslationGenerator
forall a. [StdGen -> a] -> StdGen -> a
combineGeneratorsUniformly [TranslationGenerator
translations16_a, TranslationGenerator
translations16_e, TranslationGenerator
translations16_o, TranslationGenerator
translations16_u]
exercises17 :: ExerciseGenerator
exercises17 :: ExerciseGenerator
exercises17 =
[(Int, ExerciseGenerator)] -> ExerciseGenerator
forall a. [(Int, StdGen -> a)] -> StdGen -> a
combineGenerators
[ (Int
70, ExerciseGenerator
translationExercises17)
, (Int
50, ExerciseGenerator
fillingBlanksExercises17)
]
translationExercises17 :: ExerciseGenerator
translationExercises17 :: ExerciseGenerator
translationExercises17 = SentenceCanonicalizer
-> SentenceComparer -> TranslationGenerator -> ExerciseGenerator
generateTranslationExercise SentenceCanonicalizer
sentenceCanonicalizer SentenceComparer
sentenceComparer TranslationGenerator
translations17
fillingBlanksExercises17 :: ExerciseGenerator
fillingBlanksExercises17 :: ExerciseGenerator
fillingBlanksExercises17 = [Text] -> TranslationGenerator -> ExerciseGenerator
generateContextualizedFillingBlanksExerciseByAlternatives [Text
"na", Text
"na'e", Text
"no'e", Text
"to'e"] TranslationGenerator
translations17
exercises18 :: ExerciseGenerator
exercises18 :: ExerciseGenerator
exercises18 =
[(Int, ExerciseGenerator)] -> ExerciseGenerator
forall a. [(Int, StdGen -> a)] -> StdGen -> a
combineGenerators
[ (Int
70, ExerciseGenerator
translationExercises18)
]
translationExercises18 :: ExerciseGenerator
translationExercises18 :: ExerciseGenerator
translationExercises18 = SentenceCanonicalizer
-> SentenceComparer -> TranslationGenerator -> ExerciseGenerator
generateTranslationExercise SentenceCanonicalizer
sentenceCanonicalizer SentenceComparer
sentenceComparer TranslationGenerator
translations18
exercises14to18 :: ExerciseGenerator
exercises14to18 :: ExerciseGenerator
exercises14to18 =
[(Int, ExerciseGenerator)] -> ExerciseGenerator
forall a. [(Int, StdGen -> a)] -> StdGen -> a
combineGenerators
[ (Int
10, ExerciseGenerator
exercises14)
, (Int
10, ExerciseGenerator
exercises15)
, (Int
10, ExerciseGenerator
exercises16)
, (Int
10, ExerciseGenerator
exercises17)
, (Int
10, ExerciseGenerator
exercises18)
]
exercises20 :: ExerciseGenerator
exercises20 :: ExerciseGenerator
exercises20 = [(Int, ExerciseGenerator)] -> ExerciseGenerator
forall a. [(Int, StdGen -> a)] -> StdGen -> a
combineGenerators [(Int
1, Vocabulary -> ExerciseGenerator
generateMorphologicalClassExercise Vocabulary
vocabulary), (Int
1, ExerciseGenerator
morphologicalClassDefinitionExercises)] where
vocabulary :: Vocabulary
vocabulary = Vocabulary
vocabulary20_cumulative
morphologicalClassDefinitionExercises :: ExerciseGenerator
morphologicalClassDefinitionExercises :: ExerciseGenerator
morphologicalClassDefinitionExercises StdGen
r0 = Text -> [ExerciseSentence] -> Text -> [Text] -> Bool -> Exercise
SingleChoiceExercise Text
title [ExerciseSentence]
forall {a}. [a]
sentences Text
correctAlternative [Text]
incorrectAlternatives Bool
True where
morphologicalClassesWithDefinitions :: [(T.Text, T.Text)]
morphologicalClassesWithDefinitions :: [(Text, Text)]
morphologicalClassesWithDefinitions =
[ (Text
"brivla", Text
"Bridi word")
, (Text
"gismu", Text
"Root word")
, (Text
"lujvo", Text
"Compound word")
, (Text
"zi'evla", Text
"Free word")
, (Text
"cmevla", Text
"Name word")
, (Text
"cmavo", Text
"Grammar word")
]
((Text
selectedClass, Text
selectedDefinition), StdGen
_) = StdGen -> [(Text, Text)] -> ((Text, Text), StdGen)
forall a. StdGen -> [a] -> (a, StdGen)
chooseItemUniformly StdGen
r0 [(Text, Text)]
morphologicalClassesWithDefinitions
correctAlternative :: Text
correctAlternative = Text
selectedDefinition
incorrectAlternatives :: [Text]
incorrectAlternatives = ((Text, Text) -> Text) -> [(Text, Text)] -> [Text]
forall a b. (a -> b) -> [a] -> [b]
map (Text, Text) -> Text
forall a b. (a, b) -> b
snd ([(Text, Text)] -> [Text])
-> ([(Text, Text)] -> [(Text, Text)]) -> [(Text, Text)] -> [Text]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((Text, Text) -> Bool) -> [(Text, Text)] -> [(Text, Text)]
forall a. (a -> Bool) -> [a] -> [a]
filter ((SentenceComparer
forall a. Eq a => a -> a -> Bool
/= Text
selectedClass) (Text -> Bool) -> ((Text, Text) -> Text) -> (Text, Text) -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Text, Text) -> Text
forall a b. (a, b) -> a
fst) ([(Text, Text)] -> [Text]) -> [(Text, Text)] -> [Text]
forall a b. (a -> b) -> a -> b
$ [(Text, Text)]
morphologicalClassesWithDefinitions
title :: Text
title = Text
"Define <b>" Text -> Text -> Text
`T.append` Text
selectedClass Text -> Text -> Text
`T.append` Text
"</b>"
sentences :: [a]
sentences = []
exercises21 :: ExerciseGenerator
exercises21 :: ExerciseGenerator
exercises21 = [(Int, ExerciseGenerator)] -> ExerciseGenerator
forall a. [(Int, StdGen -> a)] -> StdGen -> a
combineGenerators [(Int
1, ExerciseGenerator
gadriProvidingExercise), (Int
3, ExerciseGenerator
gadriChoosingExercise)] where
gadriProvidingExercise :: ExerciseGenerator
gadriProvidingExercise = Text -> Dictionary -> TextGenerator -> ExerciseGenerator
generateLexiconProvidingExercise Text
"gadri" Dictionary
dictionary TextGenerator
gadriGenerator where
gadriChoosingExercise :: ExerciseGenerator
gadriChoosingExercise = Text -> Dictionary -> [Text] -> ExerciseGenerator
generateLexiconChoosingExercise Text
"gadri" Dictionary
dictionary [Text]
gadriList
gadriList :: [Text]
gadriList = [Text
"lo", Text
"le", Text
"la"]
gadriGenerator :: TextGenerator
gadriGenerator = [Text] -> TextGenerator
forall a. [a] -> StdGen -> (a, StdGen)
generatorFromList [Text]
gadriList
exercises22 :: ExerciseGenerator
exercises22 :: ExerciseGenerator
exercises22 = [(Int, ExerciseGenerator)] -> ExerciseGenerator
forall a. [(Int, StdGen -> a)] -> StdGen -> a
combineGenerators [(Int
1, ExerciseGenerator
basicNumberExercise), (Int
1, ExerciseGenerator
specialNumberExercise)] where
basicNumberExercise :: ExerciseGenerator
basicNumberExercise = Integer -> ExerciseGenerator
generateBasicNumberExercise Integer
500
specialNumberExercise :: ExerciseGenerator
specialNumberExercise = [(Int, ExerciseGenerator)] -> ExerciseGenerator
forall a. [(Int, StdGen -> a)] -> StdGen -> a
combineGenerators [(Int
1, ExerciseGenerator
specialNumberProvidingExercise), (Int
1, ExerciseGenerator
specialNumberChoosingExercise)] where
specialNumberProvidingExercise :: ExerciseGenerator
specialNumberProvidingExercise = Text -> Dictionary -> TextGenerator -> ExerciseGenerator
generateLexiconProvidingExercise Text
"number" Dictionary
dictionary TextGenerator
specialNumberGenerator
specialNumberChoosingExercise :: ExerciseGenerator
specialNumberChoosingExercise = Text -> Dictionary -> [Text] -> ExerciseGenerator
generateLexiconChoosingExercise Text
"number" Dictionary
dictionary [Text]
specialNumberList
specialNumberList :: [Text]
specialNumberList = [Text
"ro", Text
"so'a", Text
"so'e", Text
"so'i", Text
"so'o", Text
"so'u"]
specialNumberGenerator :: TextGenerator
specialNumberGenerator = [Text] -> TextGenerator
forall a. [a] -> StdGen -> (a, StdGen)
generatorFromList [Text]
specialNumberList
exercises23 :: ExerciseGenerator
exercises23 :: ExerciseGenerator
exercises23 = [(Int, ExerciseGenerator)] -> ExerciseGenerator
forall a. [(Int, StdGen -> a)] -> StdGen -> a
combineGenerators [(Int
1, ExerciseGenerator
isolatedEventContourExercises), (Int
3, ExerciseGenerator
translationExercises23)] where
isolatedEventContourExercises :: ExerciseGenerator
isolatedEventContourExercises = [ExerciseGenerator] -> ExerciseGenerator
forall a. [StdGen -> a] -> StdGen -> a
combineGeneratorsUniformly [ExerciseGenerator
eventContourProvidingExercises, ExerciseGenerator
eventContourChoosingExercises] where
eventContourProvidingExercises :: ExerciseGenerator
eventContourProvidingExercises = Text -> Dictionary -> TextGenerator -> ExerciseGenerator
generateLexiconProvidingExercise Text
"event contour" Dictionary
dictionary TextGenerator
eventContourGenerator
eventContourChoosingExercises :: ExerciseGenerator
eventContourChoosingExercises = Text -> Dictionary -> [Text] -> ExerciseGenerator
generateLexiconChoosingExercise Text
"event contour" Dictionary
dictionary [Text]
eventContourList
eventContourList :: [Text]
eventContourList = [Text
"pu'o", Text
"ca'o", Text
"ba'o", Text
"co'a", Text
"co'u"]
eventContourGenerator :: TextGenerator
eventContourGenerator = [Text] -> TextGenerator
forall a. [a] -> StdGen -> (a, StdGen)
generatorFromList [Text]
eventContourList
translationExercises23 :: ExerciseGenerator
translationExercises23 :: ExerciseGenerator
translationExercises23 = Text
-> SentenceCanonicalizer
-> SentenceComparer
-> TranslationGenerator
-> ExerciseGenerator
generateTranslationExerciseWithCustomTitle Text
"Translate <b>specifying event contours</b>" SentenceCanonicalizer
sentenceCanonicalizer SentenceComparer
sentenceComparer TranslationGenerator
translations23
exercises24 :: ExerciseGenerator
exercises24 :: ExerciseGenerator
exercises24 = [(Int, ExerciseGenerator)] -> ExerciseGenerator
forall a. [(Int, StdGen -> a)] -> StdGen -> a
combineGenerators [(Int
1, ExerciseGenerator
gadriProvidingExercise), (Int
1, ExerciseGenerator
gadriChoosingExercise)] where
gadriProvidingExercise :: ExerciseGenerator
gadriProvidingExercise = Text -> Dictionary -> TextGenerator -> ExerciseGenerator
generateLexiconProvidingExercise Text
"gadri" Dictionary
dictionary TextGenerator
completeGadriGenerator where
gadriChoosingExercise :: ExerciseGenerator
gadriChoosingExercise = Text -> Dictionary -> [Text] -> ExerciseGenerator
generateLexiconChoosingExercise Text
"gadri" Dictionary
dictionary [Text]
newGadriList
completeGadriList :: [Text]
completeGadriList = [Text
"lo", Text
"le", Text
"la"] [Text] -> [Text] -> [Text]
forall a. [a] -> [a] -> [a]
++ [Text]
newGadriList
newGadriList :: [Text]
newGadriList = [Text
"loi", Text
"lei", Text
"lai", Text
"lo'e", Text
"le'e"]
completeGadriGenerator :: TextGenerator
completeGadriGenerator = [Text] -> TextGenerator
forall a. [a] -> StdGen -> (a, StdGen)
generatorFromList [Text]
completeGadriList
exercises20to24 :: ExerciseGenerator
exercises20to24 :: ExerciseGenerator
exercises20to24 =
[(Int, ExerciseGenerator)] -> ExerciseGenerator
forall a. [(Int, StdGen -> a)] -> StdGen -> a
combineGenerators
[ (Int
10, ExerciseGenerator
exercises20)
, (Int
10, ExerciseGenerator
exercises21)
, (Int
10, ExerciseGenerator
exercises22)
, (Int
10, ExerciseGenerator
exercises23)
, (Int
10, ExerciseGenerator
exercises24)
]
exercises26 :: ExerciseGenerator
exercises26 :: ExerciseGenerator
exercises26 = ExerciseGenerator
translationExercises26
translationExercises26 :: ExerciseGenerator
translationExercises26 :: ExerciseGenerator
translationExercises26 = SentenceCanonicalizer
-> SentenceComparer -> TranslationGenerator -> ExerciseGenerator
generateTranslationExercise SentenceCanonicalizer
sentenceCanonicalizer SentenceComparer
sentenceComparer TranslationGenerator
translations26
exercises27 :: ExerciseGenerator
exercises27 :: ExerciseGenerator
exercises27 = [(Int, ExerciseGenerator)] -> ExerciseGenerator
forall a. [(Int, StdGen -> a)] -> StdGen -> a
combineGenerators [(Int
3, ExerciseGenerator
translationExercises27), (Int
1, ExerciseGenerator
directionalTenseExercise)] where
directionalTenseList :: [Text]
directionalTenseList = [Text
"zu'a", Text
"ri'u", Text
"ca'u", Text
"bu'u"]
directionalTenseGenerator :: TextGenerator
directionalTenseGenerator = [Text] -> TextGenerator
forall a. [a] -> StdGen -> (a, StdGen)
generatorFromList [Text]
directionalTenseList
directionalTenseProvidingExercise :: ExerciseGenerator
directionalTenseProvidingExercise = Text -> Dictionary -> TextGenerator -> ExerciseGenerator
generateLexiconProvidingExercise Text
"directional tense" Dictionary
dictionary TextGenerator
directionalTenseGenerator where
directionalTenseChoosingExercise :: ExerciseGenerator
directionalTenseChoosingExercise = Text -> Dictionary -> [Text] -> ExerciseGenerator
generateLexiconChoosingExercise Text
"directional tense" Dictionary
dictionary [Text]
directionalTenseList
directionalTenseExercise :: ExerciseGenerator
directionalTenseExercise = [ExerciseGenerator] -> ExerciseGenerator
forall a. [StdGen -> a] -> StdGen -> a
combineGeneratorsUniformly [ExerciseGenerator
directionalTenseProvidingExercise, ExerciseGenerator
directionalTenseChoosingExercise]
translationExercises27 :: ExerciseGenerator
translationExercises27 :: ExerciseGenerator
translationExercises27 = [(Int, ExerciseGenerator)] -> ExerciseGenerator
forall a. [(Int, StdGen -> a)] -> StdGen -> a
combineGenerators [(Int
1, ExerciseGenerator
translationExercises27_expressions), (Int
1, ExerciseGenerator
translationExercises27_sentences)] where
translationExercises27_expressions :: ExerciseGenerator
translationExercises27_expressions = Text
-> SentenceCanonicalizer
-> SentenceComparer
-> TranslationGenerator
-> ExerciseGenerator
generateTranslationExerciseWithCustomTitle Text
"Translate this expression" SentenceCanonicalizer
sentenceCanonicalizer SentenceComparer
sentenceComparer TranslationGenerator
translations27_expressions
translationExercises27_sentences :: ExerciseGenerator
translationExercises27_sentences = SentenceCanonicalizer
-> SentenceComparer -> TranslationGenerator -> ExerciseGenerator
generateTranslationExercise SentenceCanonicalizer
sentenceCanonicalizer SentenceComparer
sentenceComparer TranslationGenerator
translations27_sentences