https://wiki.haskell.org/api.php?action=feedcontributions&user=MikeIzbicki&feedformat=atomHaskellWiki - User contributions [en]2020-09-28T10:19:16ZUser contributionsMediaWiki 1.27.4https://wiki.haskell.org/index.php?title=Monad_tutorials_timeline&diff=56574Monad tutorials timeline2013-08-10T06:00:06Z<p>MikeIzbicki: /* year 2013 */</p>
<hr />
<div>[[Category:History]]<br />
[[Category:Monad]]<br />
[[Category:Tutorials]]<br />
<br />
<span style="float:right">[[Image:Monad-tutorials-chart.png]]</span><br />
<br />
This is a comprehensive timeline of monad tutorials and related articles. <br />
<br />
Please update this list as it becomes outdated! If you find a tutorial, article, post, comment, or message that stands on its own as an explanation of monads, then please take a moment to paste the link somewhere on this page (register a throwaway account, if you prefer). The date, author, and blurb can be added later. This will greatly help others who are using this list as a resource for learning about monads.<br />
<br />
== before 2000 ==<br />
<br />
* 1992-08 [http://homepages.inf.ed.ac.uk/wadler/papers/marktoberdorf/baastad.pdf Monads for Functional Programming] (pdf) - Phil Wadler, a designer of Haskell [9100 words] <br />
*: "Shall I be pure or impure?" ... "A monad is a triple (M; unit; *) consisting of a type constructor M and two operations of the given polymorphic types."<br />
<br />
* 1995-05 [http://www-fp.dcs.st-and.ac.uk/~kh/papers/io-tutorial/io-tutorial.html Monadic IO in Haskell 1.3] - Andrew D. Gordon and Kevin Hammond<br />
*: "We describe the design and use of monadic I/O in Haskell 1.3"<br />
<br />
* 1999-02 [http://www-users.mat.uni.torun.pl/~fly/materialy/fp/haskell-doc/Monads.html What the hell are Monads?] - Noel Winstanley [2800 words]<br />
*: "Once upon a time, people wrote their Haskell programs by sequencing together operations in an ad-hoc way." ... "For our purposes, a monad is a triple of a type and ''then>'' & ''return'' operators defined over it so that the following laws apply: ..."<br />
<br />
* 1999-Spring [http://www.engr.mun.ca/~theo/Misc/haskell_and_monads.htm Monads for the working Haskell Programmer] - Theodore S. Norvell [4200 words, Haskell98, Gofer]<br />
*: "...monads can be used to implement several other programming features including: consuming input, producing output, exceptions and exception handling, nondeterminisim."<br />
<br />
== year 2002 ==<br />
<br />
* 2002 [http://en.wikibooks.org/wiki/Haskell/YAHT/Monads Yet Another Haskell Tutorial] (Chapter: Monads) - Hal Daumé III<br />
*: "The definition of a monad is a slightly trimmed-down version of our Computation class. The Monad class has four methods ..."<br />
<br />
== year 2003 ==<br />
<br />
* 2003-08 [http://www.haskell.org/haskellwiki/All_About_Monads All about Monads] - Jeff Newbern [22600 words] (Japanese translation: [http://www.sampou.org/haskell/a-a-monads/html/index.html モナドのすべて])<br />
*: A comprehensive introduction. Covers monad transformers and some common monads. An appendix presents monads as assembly lines.<br />
*:"A monad is a way to structure computations in terms of values and sequences of computations using those values."<br />
<br />
== year 2004 ==<br />
<br />
* 2004-07 [http://www.ccs.neu.edu/home/dherman/research/tutorials/monads-for-schemers.txt A Schemer's Introduction to Monads] - Dave Herman [1700 words, Lisp, Scheme]<br />
*: "The main insight of monads is that all side effects, from mutation to I/O to non-termination, have one thing in common: order of evaluation matters." ... "So monads are about talking about effects in the context of a pure semantics."<br />
<br />
* 2004-07 [[Monads as Containers]] ([http://ru-lambda.livejournal.com/12467.html Russian translation]) - Cale Gibbard [2900 words]<br />
*: "A monad is a container type together with a few methods defined on it. Monads model different kinds of computations." ... "it is more natural sometimes to begin with map (fmap), return and join"<br />
<br />
* 2004-08 [http://web.archive.org/web/20080515195640/http://sleepingsquirrel.org/monads/monads.html Monads in Perl] - Greg Buchholz [2200 words, Perl]<br />
*: "Essentially a monad is a hidden data structure (Fig. 1) which automatically passes state around for us. "<br />
<br />
== year 2005 ==<br />
<br />
* 2005-07 [http://moonbase.rydia.net/mental/writings/programming/monads-in-ruby/00introduction.html Monads in Ruby] - MenTaLguY<br />
*: Presents monads in a friendly language, starting from Identity<br />
*: "They let you chain pass [bind] operations together to make little computational pipelines, with rules of your choosing. They don’t manipulate values themselves — that’s the job of the blocks (functions) you plumb together using the monad."<br />
<br />
* 2005-11 [http://web.archive.org/web/20081206204420/http://www.loria.fr/~kow/monads/index.html Of monads and space suits] - Eric Kow<br />
*: Functions are space stations, parameters are astronauts and monads are space suits that let us safely travel from one function to another.<br />
<br />
== year 2006 ==<br />
<br />
* 2006-03 [http://en.wikibooks.org/w/index.php?title=Haskell/Understanding_monads&oldid=933545 Understanding Monads] - Eric Kow<br />
*: Monads as nuclear waste containers, an adaptation of monads as space suits with a new metaphor suggested by Paul Johnson<br />
*: "What we need is some way to capture the pattern 'do X and then do Y, where Y may be affected by X'. Monads are the way we do this." ... "In a sense, each monad is its own little minilanguage specially suited for its particular task."<br />
<br />
* 2006-07 [[The Monadic Way]] - Andrea Rossato<br />
*: A two-part tutorial. The first part shows you how build a simple evaluator, and the second part shows you how to "take the complexity" out of it by using techniques such as monad transformers<br />
*: Revised 2006-09 to include [[Meet Bob The Monadic Lover]]: "what monads look like and what they are useful for, from the perspective of a ... lover."<br />
<br />
* 2006-08 [http://sigfpe.blogspot.com/2006/08/you-could-have-invented-monads-and.html You could have invented monads! (and maybe you already have)] - Dan Piponi<br />
*: "Writing introductions to monads seems to have developed into an industry," Dan (sigfpe) observes. He argues that monads are not "something esoteric in need of explanation", but walks you through the process of reinventing monads to solve some very basic and practical problems.<br />
*: "So now I can reveal what a monad is. The triple of objects (m,unit,bind) is the monad, and to be a monad they must satisfy a bunch of laws such as the ones you've been proving."<br />
<br />
* 2006-10 [http://www.reddit.com/r/programming/comments/ox6s/ask_reddit_what_the_hell_are_monads/coxiv Ask Reddit: What the hell are monads?, an answer] - tmoertel [700 words]<br />
*: "I think of monads as computational environments in which you get to make up the rules." ... "monads are ... a general model of computation that lets you pick and choose the environmental features that you want for your computations."<br />
<br />
* 2006-10 [http://www.grabmueller.de/martin/www/pub/Transformers.en.html Monad Transformers Step by Step] - Martin Grabmüller<br />
*: Monad transformers are rarely covered in introductory tutorials. This "is not a paper about implementing transformers, but about using them to write elegant, clean and powerful programs in Haskell". Available as a 12 page PDF or .lhs file.<br />
<br />
* 2006-11 [http://www.haskell.org/pipermail/haskell-cafe/2006-November/019190.html There's a Monster in my Haskell!] Andrew Pimlott<br />
*: This delightful "tutorial" presents monads as monsters which devour values, use them to feed other monsters and regurgitate them when slain.<br />
<br />
* 2006-12 [http://blog.tmorris.net/maybe-monad-in-java/ Maybe Monad in Java] - Tony Morris<br />
*: Monads can also be useful in Java!<br />
<br />
== year 2007 ==<br />
<br />
* 2007-01 [http://koweycode.blogspot.com/2007/01/think-of-monad.html Think of a monad] - Don Stewart (reposted on Eric Kow's blog)<br />
*: Don integrates some pre-existing monadic metaphors, shedding light on monads in a truly comprehensive manner (illustration by Eric)<br />
* 2007-02 [http://kawagner.blogspot.com/2007/02/understanding-monads-for-real.html Understanding Monads. For Real] - Karsten Wagner<br />
*: A monad is like a macro<br />
* 2007-02 [http://patryshev.com/monad/m-intro.html Crash Course in Monads] Monads for Mathematicians - Vlad Patryshev<br />
*:Author's Description: This crash course starts with an EASY! introduction to categories and functors, then we define a monad, then give some basic examples of monads in categories, then present monadic terminology as used in programming languages.<br />
*: Then I lie down in a dark room with a warm wet cloth over my eyes.<br />
* 2007-04 [http://saxophone.jpberlin.de/MonadTransformer?source=http%3A%2F%2Fwww%2Ehaskell%2Eorg%2Fhaskellwiki%2FCategory%3AMonad&language=English The Real Monad Transformer] - Henning Thielemann<br />
*: Not a tutorial either, but an important aid in demystifying monads<br />
* 2007-03 [http://www.randomhacks.net/articles/2007/03/12/monads-in-15-minutes Monads in 15 Minutes] - Eric Kidd<br />
*: Eric boils monads down to 15 minutes, using backtracking and Maybe as motivating examples. Eric uses <hask>join</hask>, which seems quite rare for monad tutorials (cf Cale's ''Monads as containers'')<br />
* 2007-08 [[Monads as computation]] - Cale Gibbard<br />
*: A very straightforward presentation of monads. Notable for its "The whole point" section, which conveys why we bother with all this monad business.<br />
* 2007-08 [http://en.wikibooks.org/wiki/Haskell/Understanding%20monads Understanding Monads] (2) - Apfelmus<br />
*: Wikibook rewrite of the original monads tutorial. Less fluff, more pedagogy. [In progress at the time of this writing].<br />
* 2007-08 [[Monad (sans metaphors)]] - Claus Reinke<br />
*: From a discussion about monad tutorials on Haskell Café (the name is due to haskellwiki user 'Green tea').<br />
* 2007-11 [http://tobold.org/book/doio How to do IO in Haskell] - Toby Goodwin<br />
*: In some ways, a ''non''-monad tutorial, describes Haskell IO (with lots and lots of examples) with an emphasis on types, rather than monad theory<br />
<br />
== year 2008 ==<br />
<br />
* 2008-01 [http://www.reddit.com/r/programming/comments/64th1/monads_in_python_in_production_code_you_can_and/c02u9mb An explanation by 808140] [1588 words]<br />
*: "The best way to grok monads is to ... familiarize yourself with several common monads and their uses." ... "All that makes a monad, really, is that you can define two functions like unit and bind on them."<br />
<br />
* 2008-06 [http://spbhug.folding-maps.org/wiki/Monads Monads] (in Russian, [http://spbhug.folding-maps.org/wiki/MonadsEn English translation]) - Eugene Kirpichov [8200 words ru, 10000 en]<br />
*: "A monad is a triple (m, return, >>=), where: ..." ... "As we progressed, we saw that monads are most commonly used for two different purposes: structuring the control flow and describing imperative effectful computations (IO, State, IndentIO), and structuring data flow (Maybe, List, Dist)."<br />
<br />
* 2008-03 [http://book.realworldhaskell.org/read/monads.html Real World Haskell, Chapter 14: Monads] - Bryan O'Sullivan, Don Stewart, and John Goerzen<br />
*: "We aim to show you that a monad is often an obvious and useful tool to help solve a problem."<br />
<br />
* 2008-09 [http://stackoverflow.com/a/194207 What is a monad?, an answer] - JacquesB (other answers at link)<br />
*: "An alternative term is computation builder which is a bit more descriptive of what they are actually useful for." ... "In layman's terms, a monad is just a type for which the >>= operation is defined."<br />
<br />
== year 2009 ==<br />
* 2009-01 [http://byorgey.wordpress.com/2009/01/12/abstraction-intuition-and-the-monad-tutorial-fallacy/ Abstraction, intuition, and the “monad tutorial fallacy”] - Brent Yorgey [meta]<br />
*: Commentary on monad tutorials and why many may be so unhelpful. "What I term the 'monad tutorial fallacy,' then, consists in failing to recognize the critical role that struggling through fundamental details plays in the building of intuition."<br />
<br />
* 2009-03 [http://onclojure.com/2009/03/05/a-monad-tutorial-for-clojure-programmers-part-1/ A Monad Tutorial for Clojure Programmers] <br />
*: "Monads are about composing computational steps into a bigger multi-step computation."<br />
<br />
* 2009-03 [http://noordering.wordpress.com/2009/03/31/how-you-shouldnt-use-monad/ How you should(n’t) use Monad] - beelsebob<br />
*: "When we have functions that produce values that are hidden inside boxes, we have a problem. ... Monads add a single function called join, which is used to flatten out the layers of boxes: ..."<br />
<br />
*2009-06 [http://www.muitovar.com/monad/moncow.html The Greenhorn's Guide to becoming a Monad Cowboy] - Hans van Thiel [9600 words]<br />
*:Covers basics, with simple examples, in a ''for dummies'' style. Includes monad transformers and monadic functions. "Actually, programming monads is much like cattle driving! So, let's get started."<br />
<br />
*2009-10 [http://brandon.si/code/the-state-monad-a-tutorial-for-the-confused/ The State Monad: A Tutorial for the Confused?] - Brandon Simmons<br />
*:This is written for someone who has a good understanding of the Maybe and List monads, but has gotten stuck trying to understand State... State monad is just an abstraction for a function that takes a state and returns an intermediate value and some new state value.<br />
<br />
* 2009-11 [[What a Monad is not]] <br />
*: A desperate (futile?) attempt to end the eternal chain of monad tutorials.<br />
<br />
== year 2010 ==<br />
<br />
* 2010-03 [http://strabismicgobbledygook.wordpress.com/2010/03/06/a-state-monad-tutorial/ State Monad Tutorial] - Byron Johnson<br />
*: "My goal is to teach others to help them understand the State monad. ... After this point, you should be able to easily understand the other monads."<br />
<br />
* 2010-04 [http://just-bottom.blogspot.fi/2010/04/programming-with-effects-story-so-far.html Programming with effects – the story so far] - Patai Gergely<br />
*: Explains the relationships between the various abstractions over side effects, namely applicative functors, arrows, and monads.<br />
<br />
* 2010-07 [https://intoverflow.wordpress.com/2010/07/20/i-come-from-java-and-want-to-know-what-monads-are-in-haskell/ I come from Java and want to know what monads are in Haskell] - Tim Carstens [Java]<br />
*: Translates a simple Java class into a stack of monad transformers, with a metaphor about how monads are like conversations, and why this idea should be familiar to OO programmers.<br />
*: "What I am going to talk about is how to use monads to do something in Haskell that is easy to do in Java." ... "This is what different monads do: each comes with its own set of operations that are legal within the context that the monad is modeling."<br />
<br />
* 2010-08 [http://learnyouahaskell.com/a-fistful-of-monads Learn You a Haskell, A Fistful of Monads]<br />
*: "monads are just applicative functors that support >>=. The >>= function is pronounced as ''bind''."<br />
<br />
* 2010-08 [http://mvanier.livejournal.com/3917.html Yet Another Monad Tutorial, part 1] ([http://mvanier.livejournal.com/4305.html 2], [http://mvanier.livejournal.com/4586.html 3], [http://mvanier.livejournal.com/4647.html 4], [http://mvanier.livejournal.com/5103.html 5], [http://mvanier.livejournal.com/5343.html 6], [http://mvanier.livejournal.com/5406.html 7], [http://mvanier.livejournal.com/5846.html 8]) - Mike Vanier [7100 words p1, 45000 total] <!-- 7100 5400, 3100, 5600, 5500, 5800, 6700, 5800 words --><br />
*: "Monads are a generalization of functions, function application, and function composition to allow them to deal with richer notions of computation than standard functions."<br />
<br />
* 2010-10 [http://stackoverflow.com/a/3870310 A monad is just a monoid in the category of endofunctors, what's the problem?, an answer] - pelotom (other answers at link)<br />
*: "The original sentence is this: All told, a monad in X is just a monoid in the category of endofunctors of X, with product × replaced by composition of endofunctors and unit set by the identity endofunctor."<br />
<br />
== year 2011 ==<br />
* 2011-01 [http://bartoszmilewski.wordpress.com/2011/01/09/monads-for-the-curious-programmer-part-1/ Monads for the Curious Programmer: Part 1], [http://bartoszmilewski.wordpress.com/2011/03/14/monads-for-the-curious-programmer-part-2/ Part 2], [http://bartoszmilewski.wordpress.com/2011/03/17/monads-for-the-curious-programmer-part-3/ Part 3], and [http://bartoszmilewski.wordpress.com/2011/07/11/monads-in-c/ Monads in C++] - Bartosz Milewski [3400, 4300, 3400, and 5200 words]<br />
*: "Monads are hard to describe because they don’t correspond to anything in our everyday experience" ... "A monad is an endofunctor together with two special families of morphisms, both going vertically, one up and one down"<br />
<br />
* 2011-03 [http://scscript.blogspot.de/2011/03/monads-in-r-sapply-and-foreach.html monads in R: sapply and foreach] - Ferdinand Jamitzky<br />
*: "Monads are a powerful way of structuring functional programs"<br />
<br />
* 2011-04 [http://blog.jcoglan.com/2011/03/05/translation-from-haskell-to-javascript-of-selected-portions-of-the-best-introduction-to-monads-ive-ever-read/ Translation from Haskell to JavaScript of selected portions of the best introduction to monads I’ve ever read] - James Coglan [3200 words, Javascript] (cf. 2006 "You Could Have Invented Monads")<br />
*: "Monads are really about composing functions"<br />
<br />
* 2011-04 [http://ertes.de/articles/monads.html Understanding Haskell Monads] - Ertugrul Söylemez [12400 words]<br />
*: "A monad is a wrapper type around another type (the inner type), which adds a certain structure to the inner type and allows you to combine computations of the inner type in a certain way."<br />
<br />
* 2011-10 [http://unknownparallel.com/monads.php The Dead Simple, No Chit Chat, Zero-Analogy Haskell Monad Tutorial] - Dan Burton [1800 words]<br />
*: "Monads are simply Applicative Functors, which also define some way of flattening nested monadic values, and shoving monadic values into monadic functions. Applicative Functors are..."<br />
<br />
== year 2012 ==<br />
* 2012-02 [http://blog.g23.co/futures-monads-with-the-context-of-asynchrono Futures: Monads with the Context of Asynchronous Programming] - mr23<br />
*: "it's best to think of a monad as representing some context. What do I mean by context? ..."<br />
<br />
* 2012-02 [http://the-27th-comrade.appspot.com/blog/ahJzfnRoZS0yN3RoLWNvbXJhZGVyDAsSBUVudHJ5GOFdDA The Day Python Embarassed Imperative Programming] - The 27th Comrade<br />
*: "Monads are conditional function calls"<br />
<br />
* 2012-02 [http://youtu.be/Mw_Jnn_Y5iA Scala Monads] - Dan Rosen, Marakana [scala, video]<br />
<br />
* 2012-04 [http://softwaresimply.blogspot.com/2012/04/less-travelled-monad-tutorial-part-1.html The Less Travelled Monad Tutorial: Part 1], [http://softwaresimply.blogspot.ca/2012/04/ltmt-part-2-monads.html Part 2] - mightybyte<br />
*: "a monad is a certain type of context that provides two things: a way to put things into the context, and function application within the context"<br />
<br />
* 2012-04 [http://cdsmith.wordpress.com/2012/04/18/why-do-monads-matter/ Why Do Monads Matter?] - Chris Smith<br />
*: "... The category that they form is called a Kleisli category, and it’s basically another way of looking at monads."<br />
<br />
* 2012-08 [http://newartisans.com/2012/08/monads-in-pictures/ Monads in Pictures] - johnw<br />
*: "This is not a tutoral on monads, nor will I use any math terms here. This is for people who have learned enough about monads to use them, but want to get a better picture of what they’re doing and why they exist."<br />
<br />
== year 2013 ==<br />
* 2013-04 [http://adit.io/posts/2013-04-17-functors,_applicatives,_and_monads_in_pictures.html Functors, Applicatives, And Monads In Pictures].<br />
* 2013-05 [http://mergeconflict.com/kleisli-composition-a-la-up-goer-five/ Kleisli Composition à la Up-Goer Five].<br />
* 2013-06 [http://adit.io/posts/2013-06-10-three-useful-monads.html Three Useful Monads]<br />
* 2013-08 [http://izbicki.me/blog/functors-and-monads-for-analyzing-data Functors and monads for analyzing data]<br />
<br />
== Unknown ==<br />
<br />
* [http://www.alpheccar.org/content/60.html ]<br />
*: "I have identified three kinds of monads ... Monad as control of the sequencing ; Monad as control of side effects ; Monad as container"</div>MikeIzbickihttps://wiki.haskell.org/index.php?title=AI&diff=45327AI2012-04-20T05:39:59Z<p>MikeIzbicki: </p>
<hr />
<div>[[Category:Community]]<br />
[[Category:AI]]<br />
== Introduction ==<br />
This is the home for the Haskell AI Strike Force! Here we will collect code, problems, papers, ideas, and people for putting together a flexible AI toolkit in Haskell.<br />
<br />
== People ==<br />
If interested in contributing to or monitoring this project, please put your name, nickname (if applicable - e.g., if you talk on #haskell), and email address so we can keep each other up-to-date.<br />
<br />
Mark Wong-VanHaren (marklar) <markwvh at gmail><br />
<br />
Andrew Wagner (chessguy) <wagner dot andrew at gmail><br />
<br />
Bryan Green (shevek) <dbryan dot green at gmail><br />
<br />
Ricardo Herrmann <rherrmann at gmail><br />
<br />
Dan Doel (dolio) <dan dot doel at gmail><br />
<br />
Chung-chieh Shan (ccshan) <ccshan at cs dot rutgers dot edu><br />
<br />
Adam Wyner (Lawman) <adam dot wyner dot info><br />
<br />
Allan Erskine (thedatabase) <allan dot erskine at gmail><br />
<br />
Dave Tapley (DukeDave) <dukedave at gmail><br />
<br />
Lloyd Allison <lloyd dot allison at infotech dot monash dot edu dot au><br />
<br />
Jim Geovedi <jim at geovedi dot com><br />
<br />
Paul Berg (Procyon) <procyon at procyondevelopments dot com><br />
<br />
Eric Kow (kowey) <eric dot kow at gmail> [watching on the sidelines]<br />
<br />
Charles Blundell <blundellc at gmail><br />
<br />
Mathew Mills (mathewm) <mathewmills (at) gmail (dot) com><br />
<br />
Jason Morton (inverselimit) <jason.morton at gmail><br />
<br />
Jiri Hysek (dvekravy) <xhysek02 at stud dot fit dot vutbr dot cz> [NN, EA]<br />
<br />
Shahbaz Chaudhary <shahbazc at gmail> [interested in GP]<br />
<br />
Hans van Thiel <hthiel dot char á zonnet tot nl> [automated rule discovery, author of the Emping data mining utility]<br />
<br />
Alp Mestanogullari (Alpounet) <alp (at) mestan (dot) fr> [machine learning mainly]<br />
<br />
Chris Pettitt (cpettitt) <cpettitt at gmail><br />
<br />
Nathaniel Neitzke (nneitzke) <nightski at gmail><br />
<br />
Ricardo Honorato-Zimmer (_rata_) <rikardo dot horo at gmail dot com><br />
<br />
Raphael Javaux (RaphaelJ) <raphaeljavaux at gmail dot com><br />
<br />
Mahmut Bulut (regularlambda) <mahmutbulut0 at gmail dot com> (ML, natural language processing, swarming intelligence)<br />
<br />
Mike Izbicki <mike at izbicki.me><br />
<br />
== Ideas ==<br />
<br />
* In short, parts of this project can range from established ideas to new syntheses. ccshan: The high level of domain-specific abstraction that Haskell enables is ideal for AI, because AI programs are often "meta": we need to model agents who model the world, and sometimes to model agents who model agents who model the world, etc. In particular, monads are a good way to structure and solve decision processes, [http://conway.rutgers.edu/~ccshan/wiki/cs504/posts/Second_week.html as I've started to explore as part of a course on computational modeling that I'm teaching]. Given that [http://www.cs.yale.edu/homes/hudak-paul/hudak-dir/ACM-WS/position.html Haskell is a good language for modular interpreters and compilers], it would also be nice to create and refactor in Haskell an implementation of a [http://ai.stanford.edu/~shoham/www%20papers/RatProg.pdf rational programming language] like [http://www.eecs.harvard.edu/~avi/ Avi Pfeffer]'s [http://www.eecs.harvard.edu/~avi/IBAL/index.html IBAL] -- not only [http://www.eecs.harvard.edu/~nr/pubs/pmonad-abstract.html is probability distribution a monad], I just realized that [http://ttic.uchicago.edu/~dmcallester/bayes.ps a certain kind of variable elimination] is simply garbage collection in a call-by-need language!<br />
<br />
== Things that need a home ==<br />
<br />
If there are things that should be included in the project, but you're not sure where it should go, place it here! I'll start with:<br />
* http://catenova.org/~awagner/Simplifier<br />
**This was given to me by Alfonso Acosta (mentioned recently on haskell-cafe)<br />
<br />
*http://catenova.org/~awagner/GPLib<br />
**[[GPLib]] is a work in progress by yours truly, hopefully a future framework for genetic algorithms in haskell.<br />
<br />
*http://www.haskell.org/haskellwiki/Libraries_and_tools/Linguistics<br />
<br />
I've proposed a machine learning library for this year's Google Summer of Code. [http://hackage.haskell.org/trac/summer-of-code/ticket/1127] There has been a few interested (and seemingly well qualified) students, too. I'm not sure if it qualifes as "AI", but if you are interested in this project (as a potential student, mentor, or just...well, interested), please add yourself to the above link, and/or get in touch with me at <ketil at malde dot org>. --[[User:Ketil|Ketil]] 07:46, 26 March 2007 (UTC)<br />
<br />
Martin Erwig's probabilistic functional programming (PFP) project, including an implementation of the probability monad:<br />
*http://web.engr.oregonstate.edu/~erwig/pfp/<br />
<br />
Culmination of some recent posts about the probability monad on Random Hacks (including a darcs repository):<br />
*http://www.randomhacks.net/articles/2007/03/03/smart-classification-with-haskell <br />
<br />
sigfpe's coverage and highly algebraic view of the probability monad in Haskell:<br />
*http://sigfpe.blogspot.com/2007/02/monads-for-vector-spaces-probability.html<br />
<br />
Two links I found today that are interesting:<br />
*http://perception.inf.um.es/darcs/darcsweb.cgi<br />
*http://www-student.cs.york.ac.uk/~cb224/<br />
<br />
Polytypic unification - unification seems particularly useful for AI tasks (at least natural language stuff)... wouldn't be nice to have a generic library that does it for you?<br />
*http://www.cs.chalmers.se/~patrikj/poly/unify/<br />
<br />
Easy-to-use work-in-progress neural network library, by [[User:AlpMestan|Alp Mestan]] and Chaddaï Fouché :<br />
*http://github.com/alpmestan/HNN/tree/master<br />
<br />
== Proposed Module Hierarchy ==<br />
*AI<br />
**AI.Searching<br />
***AI.Searching.Evolutionary<br />
**AI.Logic<br />
**AI.Planning<br />
***AI.Planning.Swarm<br />
**AI.Probabilistic<br />
**AI.Learning<br />
***AI.Learning.Kernel<br />
***AI.Learning.NeuralNet<br />
**AI.Classification<br />
***AI.Classification.ExpertSystem<br />
**AI.Communication<br />
<br />
==Proposed sample format for a wiki page on a topic or sub-topic==<br />
<br />
'''AI/Logic/Fuzzy'''<br />
<br />
The slashes show that [[/Logic | Logic]] is a subpage of [[AI]] and [[/Logic/Fuzzy | Fuzzy]] is a subpage of [[AI/Logic]]. MediaWiki will then generate links back up the chain of pages. (Try the links to see)<br />
<br />
*Fuzzy logic is blah blah...<br />
*Sub-topics:<br />
**Trivial fuzzy logic in Haskell<br />
**Type 2 fuzzy logic<br />
*Links to existing literature:<br />
**General<br />
***My first fuzzy logic book<br />
**Specific to functional programming / Haskell<br />
***Fun with fuzzy functions<br />
*Typical problems:<br />
**Problem 1: blah blah blah<br />
**Problem 2: blah blah blah<br />
*List of people involved in the area<br />
** Me<br />
**Someone else<br />
*Body<br />
**List of goals<br />
**Progress being made on them<br />
**Code and documentation.<br />
<br />
==Current sub-pages==<br />
*[[/Logic/Fuzzy]]<br />
*[[/Genetic programming/Evolutionary chess]]<br />
*[[/Genetic programming/GPLib]]<br />
<br />
<br />
== External links ==<br />
<br />
* [http://hackage.haskell.org/packages/archive/pkg-list.html#cat:ai Packages at Hackage, marked AI]<br />
* [https://patch-tag.com/r/alpmestan/hasklab/wiki/ HaskLab Wiki]<br />
* [http://projects.haskell.org/cgi-bin/mailman/listinfo/hasklab The HaskLab mailing-list]<br />
* [http://projects.haskell.org/pipermail/hasklab/ The HaskLab Archives] (mailing-list archive)<br />
* [http://jpmoresmau.blogspot.com/2010/09/digit-recognition-with-neural-network.html Digit recognition with a neural network. First attempt!] (Blog article)<br />
* [http://jpmoresmau.blogspot.com/2010/09/haskell-neural-network-plugging-space.html Haskell Neural Network: plugging a space leak] (Blog article)</div>MikeIzbicki