This folder has two kinds of packages:
-
for implementing, code generation of monads,
-
utilization of the monad pipeline design pattern for different tasks.
The approach taken here treats the Monadic programming pipeline as a Software design pattern.
The monads are obtained through code generation -- see the packages: MaybeMonadCodeGenerator, StateMonadCodeGenerator, and the article [1].
Using the State Monad package several packages are developed for different tasks in Machine Learning and Natural Language Processing.
-
Classifier creation and testing, MonadicContextualClassification.m.
-
Text analysis, MonadicTextAnalyzer.m.
-
Latent semantic analysis, MonadicLatentSemanticAnalysis.m.
-
Phrase completion, MonadicPhraseCompletion.m.
-
Quantile regression, MonadicQuantileRegression.m.
The monad tracing package MonadicTracing.m demonstrates how a monad can act as Decorator in the Decorator design pattern.
The document "Package structure and develoment workflow" gives details of the structure and typical development workflow of the packages in this folder.
The WTC 2017 presentation "Monadic Programming: With Application to Data Analysis, Machine Learning and Language Processing", [2], gives a good introduction and overview of the approach taken.
[1] Anton Antonov, "Monad code generation and extension", (2017), MathematicaForPrediction at GitHub.
[2] Anton Antonov, "Monadic Programming: With Application to Data Analysis, Machine Learning and Language Processing", Wolfram Technology Conference 2017. (YouTube video.)
[3] Anton Antonov, "A monad for classification workflows", (2018), MathematicaForPrediction at GitHub.