[Haskell] Announcing Djinn, version 2004-12-11, a coding wizard
Donald Bruce Stewart
dons at cse.unsw.edu.au
Sun Dec 11 18:50:07 EST 2005
> Howdy, y'all!
> I've written a small program that takes a (Haskell) type
> and gives you back a function of that type if one exists.
> It's kind of fun, so I thought I'd share it.
> It's probably best explained with a sample session.
> calvin% djinn
> Welcome to Djinn version 2005-12-11.
> Type :h to get help.
> # Djinn is interactive if not given any arguments.
> # Let's see if it can find the identity function.
> Djinn> f ? a->a
> f :: a -> a
> f x1 = x1
> # Yes, that was easy. Let's try some tuple munging.
> Djinn> sel ? ((a,b),(c,d)) -> (b,c)
> sel :: ((a, b), (c, d)) -> (b, c)
> sel ((_, v5), (v6, _)) = (v5, v6)
I've written a little plugin to use Djinn from lambdabot. You
can interact with it on the #haskell irc channel *right now*
15:39:01 <dons> @djinn a -> b -> a
15:39:02 <lambdabot> x :: a -> b -> a
15:39:02 <lambdabot> x x1 _ = x1
15:39:11 <dons> @djinn (a -> b -> c) -> ((a,b) -> c)
15:39:11 <lambdabot> x :: (a -> b -> c) -> (a, b) -> c
15:39:11 <lambdabot> x x1 (v3, v4) = x1 v3 v4
15:39:27 <dons> @djinn (a -> b) -> (c -> b) -> Either a c -> b
15:39:27 <lambdabot> x :: (a -> b) -> (c -> b) -> Either a c -> b
15:39:27 <lambdabot> x x1 x2 x3 = case x3 of
15:39:27 <lambdabot> Left l4 -> x1 l4
15:39:27 <lambdabot> Right r5 -> x2 r5
15:40:06 <xerox> @djinn a -> [a] -> [a]
15:40:07 <lambdabot> x :: a -> [a] -> [a]
15:40:07 <lambdabot> x _ x2 = x2
15:40:08 <dons> @help djinn
15:40:09 <lambdabot> @djinn <type>
15:40:09 <lambdabot> Generates Haskell code from a type.
And then we go crazy with @djinn for about 10 minutes :)
Great stuff Lennart.
More information about the Haskell