lambdabot: Lambdabot is a development tool and advanced IRC bot

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.

[maintain]

Lambdabot is an IRC bot written over several years by those on the #haskell IRC channel.

It operates as a command line tool, embedded in an editor, embedded in GHCi, via internet relay chat and on the web.


[Skip to ReadMe]

Properties

Versions4.0, 4.1, 4.2.1, 4.2.2, 4.2.2.1, 4.2.3.0, 4.2.3.1, 4.2.3.2, 4.2.3.3, 4.3, 4.3.0.1, 5.0, 5.0.1, 5.0.2, 5.0.2.1, 5.0.2.2, 5.0.3, 5.1, 5.1.0.1, 5.1.0.2, 5.1.0.2, 5.1.0.4
Change logChangelog
Dependenciesbase (>=3 && <5), lambdabot-core (>=5.1.0.1 && <5.2), lambdabot-haskell-plugins (>=5.1.0.1 && <5.2), lambdabot-irc-plugins (>=5.1.0.1 && <5.2), lambdabot-misc-plugins (>=5.1.0.1 && <5.2), lambdabot-novelty-plugins (>=5.1.0.1 && <5.2), lambdabot-reference-plugins (>=5.1.0.1 && <5.2), lambdabot-social-plugins (>=5.1.0.1 && <5.2), mtl (>=2) [details]
LicenseLicenseRef-GPL
AuthorJames Cook
MaintainerJames Cook <mokus@deepbondi.net>
CategoryDevelopment, Web
Home pagehttps://wiki.haskell.org/Lambdabot
Bug trackerhttps://github.com/lambdabot/lambdabot/issues
Source repositoryhead: git clone https://github.com/lambdabot/lambdabot.git
Executableslambdabot
UploadedSun Jul 1 18:39:06 UTC 2018 by BertramFelgenhauer

Downloads

Maintainers' corner

For package maintainers and hackage trustees


Readme for lambdabot-5.1.0.2

[back to package description]

About Lambdabot

Lambdabot is an IRC bot written over several years by those on the Freenode #haskell IRC channel.

It operates as a command line tool, embedded in an editor, embedded in GHCi, via internet relay chat and on the web.

Installation

The easiest way to install lambdabot is from hackage, by the following commands:

cabal install --constraint 'transformers installed' lambdabot djinn
hoogle data

The second command fetches the data for Lambdabot's @hoogle command, which is a thin wrapper around the hoogle command line tool. Invoking lambdabot will (hopefully) display a lambdabot> prompt.

It is also possible to install lambdabot in a sandbox. In that case, use cabal exec lambdabot to launch lambdabot.

Files

Some lambdabot modules maintain state. The state is stored in ./State/ if that directory exits; otherwise, it will end up on ~/.lambdabot/State/. State files of particular interest are:

Customization

The state file Pristine.hs defines the environment in which Haskell code is run. To customize lambdabot's modules, unpack the lambdabot package

cabal unpack lambdabot; cd lambdabot-<version>

You can then edit src/Modules.hs to configure the loaded modules.

Using Lambdabot

Lambdabot has a number of modules, most of which provide several commands. Type @listmodules to obtain a list of module names, and then @list <module> to list a module's commands. Executing @help command displays a short description of the command.

The following sample session demonstrates some useful lambdabot commands.

lambdabot> > sum [1..10]
 55
lambdabot> @let foo = 42
lambdabot> > product [1..foo]
 1405006117752879898543142606244511569936384000000000
lambdabot> @undefine
    Not in scope:‘foo’
    Perhaps you meant ‘Data.Traversable.for’ (imported from Data.Traversable)
lambdabot> @type map
(a -> b) -> [a] -> [b]
lambdabot> @djinn (b -> c) -> (a -> b) -> a -> c
f a b c = a (b c)
lambdabot> @pl \x y z -> y z x
flip flip
lambdabot> @unpl flip flip
(\ b c f -> c f b)
lambdabot> @undo do x <- step1; step2; step3
step1 >>= \ x -> step2 >> step3

Further Information