Difference between revisions of "Lambdabot"

From HaskellWiki
Jump to navigation Jump to search
(linkify)
Line 12: Line 12:
 
commands. It has many plugins, including:
 
commands. It has many plugins, including:
   
* Haskell evaluation (with persistent declarations)
+
* [[Haskell]] evaluation (with persistent declarations)
 
* [[Hoogle]] interface
 
* [[Hoogle]] interface
 
* [[Pointfree]] refactoring
 
* [[Pointfree]] refactoring
* A theorem prover, Djinn.
+
* A theorem prover, [[Libraries_and_tools/Theorem_provers|Djinn]].
 
* Two [http://homepages.inf.ed.ac.uk/wadler/papers/free/free.ps free theorems] generators
 
* Two [http://homepages.inf.ed.ac.uk/wadler/papers/free/free.ps free theorems] generators
* A unit test generator and test framework, using QuickCheck
+
* A unit test generator and test framework, using [http://haskell.org/ghc/docs/latest/html/libraries/QuickCheck/Test-QuickCheck.html QuickCheck]
 
* A lambda calculus interpreter
 
* A lambda calculus interpreter
 
* A unlambda interpreter
 
* A unlambda interpreter
* A brainf*** interpreter
+
* A bf interpreter
 
* Haskell type and kind checking
 
* Haskell type and kind checking
 
* Dynamic plugin composition
 
* Dynamic plugin composition
* Haskell library source lookup
+
* Haskell [http://darcs.haskell.org/packages/ library source] lookup
 
* Language translation
 
* Language translation
  +
* [http://www.cse.unsw.edu.au/~dons/code/lambdabot/State/quote Quotes]
* Quotes
 
 
* Todo lists
 
* Todo lists
 
* Irc functions
 
* Irc functions
* Darcs patch tracking
+
* [http://darcs.net Darcs] patch tracking
 
* A vixen/eliza personality
 
* A vixen/eliza personality
 
* Random dice
 
* Random dice
* Project database
+
* [http://www.cse.unsw.edu.au/~dons/code/lambdabot/State/where Project database]
 
* Dictionary lookups
 
* Dictionary lookups
 
* Karma tracking
 
* Karma tracking
 
* User poll and election support
 
* User poll and election support
* Quotes
 
 
* Search google, wikipedia and more
 
* Search google, wikipedia and more
 
* Spell checking
 
* Spell checking
* Tiny url generation
+
* [http://tinyurl.com Tiny url] generation
 
* Much more...
 
* Much more...
   
Line 69: Line 68:
 
A list of various lambdabots over time.
 
A list of various lambdabots over time.
   
#hsskell lambdabot 4p172, GHC 6.5 (OpenBSD i386)
+
#haskell lambdabot 4p172, GHC 6.5 (OpenBSD i386)
 
#haskell lambdabot 3p396, GHC 6.4.1 (Linux i686 3.20GHz)
 
#haskell lambdabot 3p396, GHC 6.4.1 (Linux i686 3.20GHz)
 
#maya lambdabot 3.1p48, GHC 6.5 (OpenBSD i386)
 
#maya lambdabot 3.1p48, GHC 6.5 (OpenBSD i386)

Revision as of 07:25, 11 September 2006

Lambdabot

Lambdabot is an IRC bot written over several years by those on the #haskell IRC channel. It also operates in an offline mode as a Haskell development tool, and embedded as an extension to ghci.

Lambdabot lives here. Lambdabot's source is available via a darcs repository, here

Lambdabot is written in Haskell, and supports plugins for adding new commands. It has many plugins, including:

  • Haskell evaluation (with persistent declarations)
  • Hoogle interface
  • Pointfree refactoring
  • A theorem prover, Djinn.
  • Two free theorems generators
  • A unit test generator and test framework, using QuickCheck
  • A lambda calculus interpreter
  • A unlambda interpreter
  • A bf interpreter
  • Haskell type and kind checking
  • Dynamic plugin composition
  • Haskell library source lookup
  • Language translation
  • Quotes
  • Todo lists
  • Irc functions
  • Darcs patch tracking
  • A vixen/eliza personality
  • Random dice
  • Project database
  • Dictionary lookups
  • Karma tracking
  • User poll and election support
  • Search google, wikipedia and more
  • Spell checking
  • Tiny url generation
  • Much more...

Interacting with the Bot

Almost all commands start with an @. A command is invoked by writing @<command-name> [args]. For example @type map will make lambdabot respond with (a -> b) -> [a] -> [b].

The special command @eval has a synonym >, meaning that you can evaluate Haskell expressions dynamically with:

> map (+1) [1..10]
[2,3,4,5,6,7,8,9,10,11]

Good commands to know are @help and @list. The full command list is here.

Contributing

Lambdabot is an open-source application. The @version command provides details on where to find the source. Anyone may write a plugin. To submit a plugin, use darcs send to submit it to the bot's current maintainer.

For more info, see the sources or ask the bot itself. If you have any questions about Lambdabot, ask on the #haskell irc channel.

@version

A list of various lambdabots over time.

  #haskell                       lambdabot 4p172,  GHC 6.5   (OpenBSD i386)
  #haskell                       lambdabot 3p396,  GHC 6.4.1 (Linux i686 3.20GHz)
  #maya                          lambdabot 3.1p48, GHC 6.5   (OpenBSD i386)
  #dutchhack (irc.cyberarmy.net) lambdabot 3p399,  GHC 6.4.1 (Linux sparc64 )