ANNOUNCE: vacuum-cairo: a cairo frontend to vacuum for live Haskell data visualization

I am pleased to announce the release of vacuum-cairo, a Haskell library for interactive rendering and display of values on the GHC heap using Matt Morrow's vacuum library. This library takes vacuum's output, generates dot graph format from it, renders it to SVG with graphviz, and displays the resulting structure using the gtk2hs Cairo vector graphics bindings ... all at the GHCi command line. This tool is useful for examining Haskell data structures as they are represented directly in the heap. In particular, it makes sharing visible for the first time, as well as unboxed values. It should be useful for teaching Haskell, or for library authors debugging the design of their data structures. You can see pictures of the rendered display here: http://code.haskell.org/~dons/images/vacuum/intmap.png And youtube screencasts of vacuum-cairo in action: http://www.youtube.com/watch?v=oujaqo9GAmA Get it: cabal install vacuum-cairo And on Hackage: http://hackage.haskell.org/cgi-bin/hackage-scripts/package/vacuum-cairo -- Don

Great work. However I am have a problem running on windows - it needs librsvg: Prelude System.Vacuum.Cairo> view [1] Loading package mtl-1.1.0.2 ... linking ... done. Loading package parallel-1.1.0.0 ... linking ... done. Loading package glib-0.10.0 ... linking ... done. Loading package cairo-0.10.0 ... linking ... done. Loading package svgcairo-0.10.0 ... can't load .so/.DLL for: librsvg-2-2 (addDLL: could not load DLL) Prelude System.Vacuum.Cairo> Anyone know where I can get this? I have googled around and whilst there is the librsvg development site, there is no sign of a windows DLL. All I can find is some generic site which seems to provide DLLs. I don't trust it. Cheers Mark Don Stewart wrote:
I am pleased to announce the release of vacuum-cairo, a Haskell library for interactive rendering and display of values on the GHC heap using Matt Morrow's vacuum library.
This library takes vacuum's output, generates dot graph format from it, renders it to SVG with graphviz, and displays the resulting structure using the gtk2hs Cairo vector graphics bindings ... all at the GHCi command line.
This tool is useful for examining Haskell data structures as they are represented directly in the heap. In particular, it makes sharing visible for the first time, as well as unboxed values. It should be useful for teaching Haskell, or for library authors debugging the design of their data structures.
You can see pictures of the rendered display here:
http://code.haskell.org/~dons/images/vacuum/intmap.png
And youtube screencasts of vacuum-cairo in action:
http://www.youtube.com/watch?v=oujaqo9GAmA
Get it:
cabal install vacuum-cairo
And on Hackage:
http://hackage.haskell.org/cgi-bin/hackage-scripts/package/vacuum-cairo
-- Don _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

I have this problem too, but I don't understand it because librsvg-2-2.dll is in the same directory as the rest of the gtk2hs DLLs - c:/gtk2hs/0.10.0/bin on my system. Yesterday I was also having trouble with not being able to find the glib DLL but that problem has mysteriously vanished today leaving me with just the rsvg one. The problem happens with 'ghci -package svgcairo' so it's nothing specific to vacuum-cairo (unsurprisingly). This might be best asked about on the gtk2hs mailing list (https://lists.sourceforge.net/lists/listinfo/gtk2hs-users). Mark Wassell wrote:
Great work. However I am have a problem running on windows - it needs librsvg:
Prelude System.Vacuum.Cairo> view [1] Loading package mtl-1.1.0.2 ... linking ... done. Loading package parallel-1.1.0.0 ... linking ... done. Loading package glib-0.10.0 ... linking ... done. Loading package cairo-0.10.0 ... linking ... done. Loading package svgcairo-0.10.0 ... can't load .so/.DLL for: librsvg-2-2 (addDLL: could not load DLL) Prelude System.Vacuum.Cairo>
Anyone know where I can get this? I have googled around and whilst there is the librsvg development site, there is no sign of a windows DLL. All I can find is some generic site which seems to provide DLLs. I don't trust it.
Cheers
Mark
Don Stewart wrote:
I am pleased to announce the release of vacuum-cairo, a Haskell library for interactive rendering and display of values on the GHC heap using Matt Morrow's vacuum library.
This library takes vacuum's output, generates dot graph format from it, renders it to SVG with graphviz, and displays the resulting structure using the gtk2hs Cairo vector graphics bindings ... all at the GHCi command line.
This tool is useful for examining Haskell data structures as they are represented directly in the heap. In particular, it makes sharing visible for the first time, as well as unboxed values. It should be useful for teaching Haskell, or for library authors debugging the design of their data structures.
You can see pictures of the rendered display here:
http://code.haskell.org/~dons/images/vacuum/intmap.png
And youtube screencasts of vacuum-cairo in action:
http://www.youtube.com/watch?v=oujaqo9GAmA
Get it:
cabal install vacuum-cairo
And on Hackage:
http://hackage.haskell.org/cgi-bin/hackage-scripts/package/vacuum-cair
o
-- Don _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
=============================================================================== Please access the attached hyperlink for an important electronic communications disclaimer: http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html ===============================================================================

Maybe GHCi has a bug when it comes to DLL lookup. I had an application that worked fine when compiled with GHC, but failed with GHCi (libglew.dll not found) I used procmonhttp://technet.microsoft.com/en-us/sysinternals/bb896645.aspx to monitor which files the GHC* processes searched, and it seemed that the compiled version looked for libglew32.dll, while GHCi was looking for libglew.dll Since this only happened with our own wrapper project, I thought we made a mistake, but maybe you could also use procmon to figure out what GHCi is doing, it might be a bug. On Tue, Mar 31, 2009 at 11:11 AM, Sittampalam, Ganesh < ganesh.sittampalam@credit-suisse.com> wrote:
I have this problem too, but I don't understand it because librsvg-2-2.dll is in the same directory as the rest of the gtk2hs DLLs - c:/gtk2hs/0.10.0/bin on my system. Yesterday I was also having trouble with not being able to find the glib DLL but that problem has mysteriously vanished today leaving me with just the rsvg one.
The problem happens with 'ghci -package svgcairo' so it's nothing specific to vacuum-cairo (unsurprisingly). This might be best asked about on the gtk2hs mailing list (https://lists.sourceforge.net/lists/listinfo/gtk2hs-users).
Mark Wassell wrote:
Great work. However I am have a problem running on windows - it needs librsvg:
Prelude System.Vacuum.Cairo> view [1] Loading package mtl-1.1.0.2 ... linking ... done. Loading package parallel-1.1.0.0 ... linking ... done. Loading package glib-0.10.0 ... linking ... done. Loading package cairo-0.10.0 ... linking ... done. Loading package svgcairo-0.10.0 ... can't load .so/.DLL for: librsvg-2-2 (addDLL: could not load DLL) Prelude System.Vacuum.Cairo>
Anyone know where I can get this? I have googled around and whilst there is the librsvg development site, there is no sign of a windows DLL. All I can find is some generic site which seems to provide DLLs. I don't trust it.
Cheers
Mark
Don Stewart wrote:
I am pleased to announce the release of vacuum-cairo, a Haskell library for interactive rendering and display of values on the GHC heap using Matt Morrow's vacuum library.
This library takes vacuum's output, generates dot graph format from it, renders it to SVG with graphviz, and displays the resulting structure using the gtk2hs Cairo vector graphics bindings ... all at the GHCi command line.
This tool is useful for examining Haskell data structures as they are represented directly in the heap. In particular, it makes sharing visible for the first time, as well as unboxed values. It should be useful for teaching Haskell, or for library authors debugging the design of their data structures.
You can see pictures of the rendered display here:
http://code.haskell.org/~dons/images/vacuum/intmap.png
And youtube screencasts of vacuum-cairo in action:
http://www.youtube.com/watch?v=oujaqo9GAmA
Get it:
cabal install vacuum-cairo
And on Hackage:
http://hackage.haskell.org/cgi-bin/hackage-scripts/package/vacuum-cair
o
-- Don _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
=============================================================================== Please access the attached hyperlink for an important electronic communications disclaimer: http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html
===============================================================================
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

2009/3/31 Peter Verswyvelen
Maybe GHCi has a bug when it comes to DLL lookup. I had an application that worked fine when compiled with GHC, but failed with GHCi (libglew.dll not found) I used procmon to monitor which files the GHC* processes searched, and it seemed that the compiled version looked for libglew32.dll, while GHCi was looking for libglew.dll Since this only happened with our own wrapper project, I thought we made a mistake, but maybe you could also use procmon to figure out what GHCi is doing, it might be a bug.
ghci has a custom linker which behaves differently from gnu ld, which is what ghc uses. I don't recall the exact details (if I ever knew them), just that it differs. So something that works with ghc won't necessarily do so with ghci. Alistair

On Wed, Apr 1, 2009 at 8:46 AM, Alistair Bayley
ghci has a custom linker which behaves differently from gnu ld, which is what ghc uses. I don't recall the exact details (if I ever knew them), just that it differs. So something that works with ghc won't necessarily do so with ghci.
Right. And should this be considered as a bug or a feature? If it is a feature, then we should be able to specify different libraries for GHCi in the cabal file no?

On Mar 31, 2009, at 7:40 AM, Don Stewart wrote:
I am pleased to announce the release of vacuum-cairo, a Haskell library for interactive rendering and display of values on the GHC heap using Matt Morrow's vacuum library.
Awesome! I want to try this. I have problems though installing it on an Intel MacBook running $ ghc --version The Glorious Glasgow Haskell Compilation System, version 6.10.1 $ cabal --version cabal-install version 0.6.2 using version 1.6.0.2 of the Cabal library $ ghc-pkg list gtk /Library/Frameworks/GHC.framework/Versions/610/usr/lib/ghc-6.10.1/./ package.conf: gtk-0.10.0 I have installed gtk2hs using the instructions at http://www.haskell.org/haskellwiki/Gtk2Hs#Using_the_GTK.2B_OS_X_Framework A simple cabal update; cabal install vacuum-cairo gives me: $ cabal install vacuum-cairo Resolving dependencies... cabal: cannot configure vacuum-cairo-0.3.1. It requires svgcairo -any There is no available version of svgcairo that satisfies -any I have installed libsvg-cairo using MacPorts and it seems installed in /opt/local/lib: $ ls /opt/local/lib/libsvg-cairo.* /opt/local/lib/libsvg-cairo.1.0.1.dylib /opt/local/lib/libsvg-cairo.1.dylib /opt/local/lib/libsvg-cairo.a /opt/local/lib/libsvg-cairo.dylib /opt/local/lib/libsvg-cairo.la But cabal-install still gives the same error. Even with --extra-lib- dirs set: $ cabal install --extra-lib-dirs=/opt/local/lib/ vacuum-cairo Resolving dependencies... cabal: cannot configure vacuum-cairo-0.3.1. It requires svgcairo -any There is no available version of svgcairo that satisfies -any Hence, I downloaded the tarball and tried to use this instead to install vacuum-cairo, which lead to another problem: I cannot install the vacuum package because of a dependencies conflict due to the package ghc-6.10.1 requiring two different versions of process: $ cabal install vacuum Resolving dependencies... cabal: dependencies conflict: ghc-6.10.1 requires process ==1.0.1.1 however process-1.0.1.1 was excluded because ghc-6.10.1 requires process ==1.0.1.0 Funny. Any ideas on how to get this cool package installed? Thanks! Sebastian

Unfortunately the .DMG based frameworks do not have the cairo svg framework (or the opengl framework), and it's non-trivial to get it added on. If you need it, best bet right now is probably to go for a macports install. -Ross On Mar 31, 2009, at 8:01 AM, Sebastian Fischer wrote:
On Mar 31, 2009, at 7:40 AM, Don Stewart wrote:
I am pleased to announce the release of vacuum-cairo, a Haskell library for interactive rendering and display of values on the GHC heap using Matt Morrow's vacuum library.
Awesome! I want to try this.
I have problems though installing it on an Intel MacBook running
$ ghc --version The Glorious Glasgow Haskell Compilation System, version 6.10.1
$ cabal --version cabal-install version 0.6.2 using version 1.6.0.2 of the Cabal library
$ ghc-pkg list gtk /Library/Frameworks/GHC.framework/Versions/610/usr/lib/ghc-6.10.1/./ package.conf: gtk-0.10.0
I have installed gtk2hs using the instructions at
http://www.haskell.org/haskellwiki/Gtk2Hs#Using_the_GTK.2B_OS_X_Framework
A simple cabal update; cabal install vacuum-cairo gives me:
$ cabal install vacuum-cairo Resolving dependencies... cabal: cannot configure vacuum-cairo-0.3.1. It requires svgcairo -any There is no available version of svgcairo that satisfies -any
I have installed libsvg-cairo using MacPorts and it seems installed in /opt/local/lib:
$ ls /opt/local/lib/libsvg-cairo.* /opt/local/lib/libsvg-cairo.1.0.1.dylib /opt/local/lib/libsvg-cairo.1.dylib /opt/local/lib/libsvg-cairo.a /opt/local/lib/libsvg-cairo.dylib /opt/local/lib/libsvg-cairo.la
But cabal-install still gives the same error. Even with --extra-lib- dirs set:
$ cabal install --extra-lib-dirs=/opt/local/lib/ vacuum-cairo Resolving dependencies... cabal: cannot configure vacuum-cairo-0.3.1. It requires svgcairo -any There is no available version of svgcairo that satisfies -any
Hence, I downloaded the tarball and tried to use this instead to install vacuum-cairo, which lead to another problem: I cannot install the vacuum package because of a dependencies conflict due to the package ghc-6.10.1 requiring two different versions of process:
$ cabal install vacuum Resolving dependencies... cabal: dependencies conflict: ghc-6.10.1 requires process ==1.0.1.1 however process-1.0.1.1 was excluded because ghc-6.10.1 requires process ==1.0.1.0
Funny.
Any ideas on how to get this cool package installed?
Thanks! Sebastian _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

Is there a Mac OSX packaging team? sebf:
On Mar 31, 2009, at 7:40 AM, Don Stewart wrote:
I am pleased to announce the release of vacuum-cairo, a Haskell library for interactive rendering and display of values on the GHC heap using Matt Morrow's vacuum library.
Awesome! I want to try this.
I have problems though installing it on an Intel MacBook running
$ ghc --version The Glorious Glasgow Haskell Compilation System, version 6.10.1
$ cabal --version cabal-install version 0.6.2 using version 1.6.0.2 of the Cabal library
$ ghc-pkg list gtk /Library/Frameworks/GHC.framework/Versions/610/usr/lib/ghc-6.10.1/./ package.conf: gtk-0.10.0
I have installed gtk2hs using the instructions at
http://www.haskell.org/haskellwiki/Gtk2Hs#Using_the_GTK.2B_OS_X_Framework
A simple cabal update; cabal install vacuum-cairo gives me:
$ cabal install vacuum-cairo Resolving dependencies... cabal: cannot configure vacuum-cairo-0.3.1. It requires svgcairo -any There is no available version of svgcairo that satisfies -any
I have installed libsvg-cairo using MacPorts and it seems installed in /opt/local/lib:
$ ls /opt/local/lib/libsvg-cairo.* /opt/local/lib/libsvg-cairo.1.0.1.dylib /opt/local/lib/libsvg-cairo.1.dylib /opt/local/lib/libsvg-cairo.a /opt/local/lib/libsvg-cairo.dylib /opt/local/lib/libsvg-cairo.la
But cabal-install still gives the same error. Even with --extra-lib-dirs set:
$ cabal install --extra-lib-dirs=/opt/local/lib/ vacuum-cairo Resolving dependencies... cabal: cannot configure vacuum-cairo-0.3.1. It requires svgcairo -any There is no available version of svgcairo that satisfies -any
Hence, I downloaded the tarball and tried to use this instead to install vacuum-cairo, which lead to another problem: I cannot install the vacuum package because of a dependencies conflict due to the package ghc-6.10.1 requiring two different versions of process:
$ cabal install vacuum Resolving dependencies... cabal: dependencies conflict: ghc-6.10.1 requires process ==1.0.1.1 however process-1.0.1.1 was excluded because ghc-6.10.1 requires process ==1.0.1.0
Funny.
Any ideas on how to get this cool package installed?
Thanks! Sebastian _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

Don Stewart:
Is there a Mac OSX packaging team?
Unfortunately, it's not just a packaging problem. (Well, packing of Haskell libraries, that is.) There are two version of GTK+ Mac OS X: (1) the MacPorts version and (2) a native GTK+ framework. Unfortunately, both are not satisfactory. The MacPorts version is based on X windows, which is supported on Macs right out of the box, but to be honest, X programs on the Mac are ugly and annoying. Moreover, whether the MacPorts version builds at all seems to be a matter of luck - I have been out of luck more than once. MacPorts is also pretty useless once you want to distribute your GTK-GUI programs to other Mac users. The native GTK+ framework is a port of GTK+ to the native Mac GUI and dead easy to install (it has a binary installer). Unfortunately, it lacks many of GTK+'s optional components (most notably libglade). It is however in beta right now, so we can only hope that there will be more of the optional components in the final version. Manuel
sebf:
On Mar 31, 2009, at 7:40 AM, Don Stewart wrote:
I am pleased to announce the release of vacuum-cairo, a Haskell library for interactive rendering and display of values on the GHC heap using Matt Morrow's vacuum library.
Awesome! I want to try this.
I have problems though installing it on an Intel MacBook running
$ ghc --version The Glorious Glasgow Haskell Compilation System, version 6.10.1
$ cabal --version cabal-install version 0.6.2 using version 1.6.0.2 of the Cabal library
$ ghc-pkg list gtk /Library/Frameworks/GHC.framework/Versions/610/usr/lib/ghc-6.10.1/./ package.conf: gtk-0.10.0
I have installed gtk2hs using the instructions at
http://www.haskell.org/haskellwiki/Gtk2Hs#Using_the_GTK.2B_OS_X_Framework
A simple cabal update; cabal install vacuum-cairo gives me:
$ cabal install vacuum-cairo Resolving dependencies... cabal: cannot configure vacuum-cairo-0.3.1. It requires svgcairo -any There is no available version of svgcairo that satisfies -any
I have installed libsvg-cairo using MacPorts and it seems installed in /opt/local/lib:
$ ls /opt/local/lib/libsvg-cairo.* /opt/local/lib/libsvg-cairo.1.0.1.dylib /opt/local/lib/libsvg-cairo.1.dylib /opt/local/lib/libsvg-cairo.a /opt/local/lib/libsvg-cairo.dylib /opt/local/lib/libsvg-cairo.la
But cabal-install still gives the same error. Even with --extra-lib- dirs set:
$ cabal install --extra-lib-dirs=/opt/local/lib/ vacuum-cairo Resolving dependencies... cabal: cannot configure vacuum-cairo-0.3.1. It requires svgcairo -any There is no available version of svgcairo that satisfies -any
Hence, I downloaded the tarball and tried to use this instead to install vacuum-cairo, which lead to another problem: I cannot install the vacuum package because of a dependencies conflict due to the package ghc-6.10.1 requiring two different versions of process:
$ cabal install vacuum Resolving dependencies... cabal: dependencies conflict: ghc-6.10.1 requires process ==1.0.1.1 however process-1.0.1.1 was excluded because ghc-6.10.1 requires process ==1.0.1.0
Funny.
Any ideas on how to get this cool package installed?
Thanks! Sebastian _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

On 2009 Mar 31, at 8:01, Sebastian Fischer wrote:
$ cabal install vacuum-cairo Resolving dependencies... cabal: cannot configure vacuum-cairo-0.3.1. It requires svgcairo -any There is no available version of svgcairo that satisfies -any
This is looking for the Haskell svgcairo package, in other words the Haskell binding for the libsvg-cairo package that you have installed. -- brandon s. allbery [solaris,freebsd,perl,pugs,haskell] allbery@kf8nh.com system administrator [openafs,heimdal,too many hats] allbery@ece.cmu.edu electrical and computer engineering, carnegie mellon university KF8NH

On Mar 31, 2009, at 7:15 PM, Brandon S. Allbery KF8NH wrote:
cabal: cannot configure vacuum-cairo-0.3.1. It requires svgcairo -any There is no available version of svgcairo that satisfies -any
This is looking for the Haskell svgcairo package, in other words the Haskell binding for the libsvg-cairo package that you have installed.
Where do I get this? (It's not on Hackage) Is it usually installed with Gtk2Hs? On Mar 31, 2009, at 7:36 PM, Manuel M T Chakravarty wrote:
The native GTK+ framework is a port of GTK+ to the native Mac GUI and dead easy to install (it has a binary installer). Unfortunately, it lacks many of GTK+'s optional components (most notably libglade). It is however in beta right now, so we can only hope that there will be more of the optional components in the final version.
So, I assume, there's no way to get the Haskell bindings for libsvg- cairo when using the native GTK+ framework? What a pity! Sebastian

On 2009 Mar 31, at 13:52, Sebastian Fischer wrote:
On Mar 31, 2009, at 7:15 PM, Brandon S. Allbery KF8NH wrote:
cabal: cannot configure vacuum-cairo-0.3.1. It requires svgcairo - any There is no available version of svgcairo that satisfies -any
This is looking for the Haskell svgcairo package, in other words the Haskell binding for the libsvg-cairo package that you have installed.
Where do I get this? (It's not on Hackage) Is it usually installed with Gtk2Hs?
Yes, if the libsvg-cairo library is found when you run configure for gtk2hs, it will be built. So if you built gtk2hs before installing libsvg-cairo, rebuild and reinstall gtk2hs. -- brandon s. allbery [solaris,freebsd,perl,pugs,haskell] allbery@kf8nh.com system administrator [openafs,heimdal,too many hats] allbery@ece.cmu.edu electrical and computer engineering, carnegie mellon university KF8NH

On Apr 1, 2009, at 4:02 AM, Brandon S. Allbery KF8NH wrote:
Yes, if the libsvg-cairo library is found when you run configure for gtk2hs, it will be built.
The version of libsvg-cairo that I have installed from MacPorts does not seem to work together with the native GTK+ framework for Macs. Reconfiguring gtk2hs still tells me: * The following packages will be built: ... * svgcairo : no ... Although the installer for the native GTK+ framework does not mention svg-cairo, it seems to be included: $ ls /Library/Frameworks/Cairo.framework/Resources/dev/lib/pkgconfig/ cairo-svg.pc /Library/Frameworks/Cairo.framework/Resources/dev/lib/pkgconfig/cairo- svg.pc Or am I misinterpreting the existence of this file? Trying to force gtk2hs to build svgcairo with --enable-svg complains: "librsvg requirement not met". Installing librsvg from MacPorts failed, but I guess it wouldn't have worked together with the native GTK+ anyway. Cheers, Sebastian

This is AWESOME! If only I had this when I started learning Haskell :-)
On Tue, Mar 31, 2009 at 7:40 AM, Don Stewart
I am pleased to announce the release of vacuum-cairo, a Haskell library for interactive rendering and display of values on the GHC heap using Matt Morrow's vacuum library.
This library takes vacuum's output, generates dot graph format from it, renders it to SVG with graphviz, and displays the resulting structure using the gtk2hs Cairo vector graphics bindings ... all at the GHCi command line.
This tool is useful for examining Haskell data structures as they are represented directly in the heap. In particular, it makes sharing visible for the first time, as well as unboxed values. It should be useful for teaching Haskell, or for library authors debugging the design of their data structures.
You can see pictures of the rendered display here:
http://code.haskell.org/~dons/images/vacuum/intmap.png
And youtube screencasts of vacuum-cairo in action:
http://www.youtube.com/watch?v=oujaqo9GAmA
Get it:
cabal install vacuum-cairo
And on Hackage:
http://hackage.haskell.org/cgi-bin/hackage-scripts/package/vacuum-cairo
-- Don _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

Don Stewart wrote:
I am pleased to announce the release of vacuum-cairo, a Haskell library for interactive rendering and display of values on the GHC heap using Matt Morrow's vacuum library.
Awesome stuff, kudos to you and Matt Morrow! I thought it'd be fun to visualize data structures in three dimensions. Attached is quick and dirty hack based on your code and Ubigraph server (http://ubietylab.net/ubigraph/). The demo video (apologies for poor quality): http://www.youtube.com/watch?v=3mMH1cHWB6c If someone finds it fun enough, I'll cabalize it and upload to Hackage.

Holy crap! That looks amazing. I think you should most definitely upload it.
2009/4/1 Gleb Alexeyev
Don Stewart wrote:
I am pleased to announce the release of vacuum-cairo, a Haskell library for interactive rendering and display of values on the GHC heap using Matt Morrow's vacuum library.
Awesome stuff, kudos to you and Matt Morrow!
I thought it'd be fun to visualize data structures in three dimensions. Attached is quick and dirty hack based on your code and Ubigraph server ( http://ubietylab.net/ubigraph/).
The demo video (apologies for poor quality): http://www.youtube.com/watch?v=3mMH1cHWB6c
If someone finds it fun enough, I'll cabalize it and upload to Hackage.
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

Please upload!! moonpatio:
Holy crap! That looks amazing. I think you should most definitely upload it.
2009/4/1 Gleb Alexeyev
Don Stewart wrote:
I am pleased to announce the release of vacuum-cairo, a Haskell library for interactive rendering and display of values on the GHC heap using Matt Morrow's vacuum library.
Awesome stuff, kudos to you and Matt Morrow!
I thought it'd be fun to visualize data structures in three dimensions. Attached is quick and dirty hack based on your code and Ubigraph server ( http://ubietylab.net/ubigraph/).
The demo video (apologies for poor quality): http://www.youtube.com/watch?v =3mMH1cHWB6c
If someone finds it fun enough, I'll cabalize it and upload to Hackage.
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

Don Stewart wrote:
Please upload!!
I've run into 2 problems while trying to do this. The first one - haxr won't build with HTTP-4000, so I had to edit haxr.cabal and add the upper version bound for HTTP. The second one is puzzling me. I've cabal-installed the package, but keep getting linking errors from ghci (though interactive loading of the same module from source works fine): Prelude> :m + System.Vacuum.Ubigraph Prelude System.Vacuum.Ubigraph> view 42 Loading package syb ... linking ... done. <Loading lots of packages skipped> Loading package vacuum-0.0.6 ... linking ... done. Loading package haxr-3000.1.1.2 ... linking ... done. Loading package vacuum-ubigraph-0.1.0.2 ... linking ... <interactive>: /home/gleb/.cabal/lib/vacuum-ubigraph-0.1.0.2/ghc-6.10.1/HSvacuum-ubigraph-0.1.0.2.o: unknown symbol `vacuumzmubigraphzm0zi1zi0zi2_GraphicsziUbigraph_lvl_closure' ghc: unable to load package `vacuum-ubigraph-0.1.0.2' Prelude System.Vacuum.Ubigraph> Non-working package is here: http://hackage.haskell.org/cgi-bin/hackage-scripts/package/vacuum-ubigraph-0.... Any hints appreciated.

Hi,
The linking problem might be due to a bug in the cabal file: if you
have modules that are not exposed, you still need to list them in the
"other-modules" section.
-Iavor
On Thu, Apr 2, 2009 at 10:01 AM, Gleb Alexeyev
Don Stewart wrote:
Please upload!!
I've run into 2 problems while trying to do this. The first one - haxr won't build with HTTP-4000, so I had to edit haxr.cabal and add the upper version bound for HTTP.
The second one is puzzling me.
I've cabal-installed the package, but keep getting linking errors from ghci (though interactive loading of the same module from source works fine):
Prelude> :m + System.Vacuum.Ubigraph Prelude System.Vacuum.Ubigraph> view 42 Loading package syb ... linking ... done. <Loading lots of packages skipped> Loading package vacuum-0.0.6 ... linking ... done. Loading package haxr-3000.1.1.2 ... linking ... done. Loading package vacuum-ubigraph-0.1.0.2 ... linking ... <interactive>: /home/gleb/.cabal/lib/vacuum-ubigraph-0.1.0.2/ghc-6.10.1/HSvacuum-ubigraph-0.1.0.2.o: unknown symbol `vacuumzmubigraphzm0zi1zi0zi2_GraphicsziUbigraph_lvl_closure' ghc: unable to load package `vacuum-ubigraph-0.1.0.2' Prelude System.Vacuum.Ubigraph>
Non-working package is here: http://hackage.haskell.org/cgi-bin/hackage-scripts/package/vacuum-ubigraph-0....
Any hints appreciated.
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

Iavor Diatchki wrote:
Hi, The linking problem might be due to a bug in the cabal file: if you have modules that are not exposed, you still need to list them in the "other-modules" section.
This was the problem, thanks!

Very nice.
Gleb Alexeyev

Did you use hubigraph? http://ooxo.org/hubigraph/ This cabalized project doesn't appear to be on hackage! gleb.alexeev:
Don Stewart wrote:
I am pleased to announce the release of vacuum-cairo, a Haskell library for interactive rendering and display of values on the GHC heap using Matt Morrow's vacuum library.
Awesome stuff, kudos to you and Matt Morrow!
I thought it'd be fun to visualize data structures in three dimensions. Attached is quick and dirty hack based on your code and Ubigraph server (http://ubietylab.net/ubigraph/).
The demo video (apologies for poor quality): http://www.youtube.com/watch?v=3mMH1cHWB6c
If someone finds it fun enough, I'll cabalize it and upload to Hackage.
module Ubigraph where
import Network.XmlRpc.Client
type Url = String type VertexId = Int type EdgeId = Int
defaultServer = "http://127.0.0.1:20738/RPC2"
void :: IO Int -> IO () void m = m >> return ()
clear :: Url -> IO () clear url = void (remote url "ubigraph.clear")
newVertex :: Url -> IO VertexId newVertex url = remote url "ubigraph.new_vertex"
newEdge :: Url -> VertexId -> VertexId -> IO EdgeId newEdge url = remote url "ubigraph.new_edge"
removeVertex :: Url -> VertexId -> IO () removeVertex url vid = void (remote url "ubigraph.remove_vertex" vid)
removeEgde :: Url -> EdgeId -> IO () removeEgde url eid= void (remote url "ubigraph.remove_edge" eid)
zeroOnSuccess :: IO Int -> IO Bool zeroOnSuccess = fmap (==0)
newVertexWithId :: Url -> VertexId -> IO Bool newVertexWithId url vid = zeroOnSuccess (remote url "ubigraph.new_vertex_w_id" vid)
newEdgeWithId :: Url -> EdgeId -> VertexId -> VertexId -> IO Bool newEdgeWithId url eid x y = zeroOnSuccess (remote url "ubigraph.new_edge_w_id" eid x y)
setVertexAttribute :: Url -> VertexId -> String -> String -> IO Bool setVertexAttribute url vid attr val = zeroOnSuccess (remote url "ubigraph.set_vertex_attribute" vid attr val)
setEdgeAttribute :: Url -> VertexId -> String -> String -> IO Bool setEdgeAttribute url eid attr val = zeroOnSuccess (remote url "ubigraph.set_edge_attribute" eid attr val)
module VacuumUbigraph where
import GHC.Vacuum import Data.Char import Text.Printf import Data.List
import qualified Data.IntMap as IntMap import qualified Data.IntSet as IntSet
import qualified Ubigraph as U
nodeStyle n = case nodeName n of ":" -> ("(:)", "cube", "#0000ff")
-- atomic stuff is special k | k `elem` ["S#" ,"I#" ,"W#" ,"I8#" ,"I16#" ,"I32#" ,"I64#" ,"W8#" ,"W16#" ,"W32#" ,"W64#"] -> (showLit n, "sphere", "#00ff00") -- chars "C#" -> (show . chr . fromIntegral . head . nodeLits $ n, "sphere", "#00ff00") "D#" -> ("Double", "sphere", "#009900") "F#" -> ("Float", "sphere", "#009900")
-- bytestrings "PS" -> (printf "ByteString[%d,%d]" (nodeLits n !! 1) (nodeLits n !! 2), "cube", "#ff0000") "Chunk" -> (printf "Chunk[%d,%d]" (nodeLits n !! 1) (nodeLits n !! 2), "cube", "#ff0000")
-- otherwise just the constructor and local fields c | z > 0 -> (c ++ show (take (fromIntegral z) $ nodeLits n), "cube", "#990000") | otherwise -> (c, "cube", "#990000") where z = itabLits (nodeInfo n) where showLit n = show (head $ nodeLits n)
view a = do U.clear srv mapM_ renderNode nodes mapM_ renderEdge edges where g = vacuum a alist = toAdjList g nodes = nub $ map fst alist ++ concatMap snd alist edges = concatMap (\(n, ns) -> map ((,) n) ns) alist
style nid = maybe ("...", "cube", "#ff0000") nodeStyle (IntMap.lookup nid g)
renderNode nid = do U.newVertexWithId srv nid let (label, shape, color) = style nid U.setVertexAttribute srv nid "label" label U.setVertexAttribute srv nid "shape" shape U.setVertexAttribute srv nid "color" color
renderEdge (a, b) = do e <- U.newEdge srv a b U.setEdgeAttribute srv e "stroke" "dotted" U.setEdgeAttribute srv e "arrow" "true"
srv = U.defaultServer
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

On Wed, Apr 1, 2009 at 4:13 PM, Don Stewart
Did you use hubigraph?
This cabalized project doesn't appear to be on hackage!
The same author also has http://ooxo.org/dtwitzen/ and http://github.com/smly/sys35tools/tree/master -- gwern

Did you use hubigraph?
Ah, there it is, then. Btw, more interesting than the 3d nature of the visualizations is that Ubigraph seems to have been designed for incremental updates of the layout (see the paper available via their home site). The lack of support for this in standard graph layout packages was the main reason that I had to give GHood its own naive layout algorithm. So I was delighted to see the design criteria for Ubigraph - until I noticed that it is not only unavailable for Windows, but closed source as well:-( Let us hope that at least one of these two items is going to change soon? Then both Hood and Vacuum visual animations could use the same backend, offering visualizations of both data and observations. A platform-independent, open-source, 2d/3d graph layout engine for incrementally updated graphs (where the graph after the update has to be similar enough to the one before that one can follow the animation and make sense of the data displayed) might be a good project for frp+opengl hackers - force equations between nodes, influenced by edges, and keeping the structure stable while adding nodes (parsed from an input stream). Claus
This cabalized project doesn't appear to be on hackage!
gleb.alexeev:
Don Stewart wrote:
I am pleased to announce the release of vacuum-cairo, a Haskell library for interactive rendering and display of values on the GHC heap using Matt Morrow's vacuum library.
Awesome stuff, kudos to you and Matt Morrow!
I thought it'd be fun to visualize data structures in three dimensions. Attached is quick and dirty hack based on your code and Ubigraph server (http://ubietylab.net/ubigraph/).
The demo video (apologies for poor quality): http://www.youtube.com/watch?v=3mMH1cHWB6c
If someone finds it fun enough, I'll cabalize it and upload to Hackage.
module Ubigraph where
import Network.XmlRpc.Client
type Url = String type VertexId = Int type EdgeId = Int
defaultServer = "http://127.0.0.1:20738/RPC2"
void :: IO Int -> IO () void m = m >> return ()
clear :: Url -> IO () clear url = void (remote url "ubigraph.clear")
newVertex :: Url -> IO VertexId newVertex url = remote url "ubigraph.new_vertex"
newEdge :: Url -> VertexId -> VertexId -> IO EdgeId newEdge url = remote url "ubigraph.new_edge"
removeVertex :: Url -> VertexId -> IO () removeVertex url vid = void (remote url "ubigraph.remove_vertex" vid)
removeEgde :: Url -> EdgeId -> IO () removeEgde url eid= void (remote url "ubigraph.remove_edge" eid)
zeroOnSuccess :: IO Int -> IO Bool zeroOnSuccess = fmap (==0)
newVertexWithId :: Url -> VertexId -> IO Bool newVertexWithId url vid = zeroOnSuccess (remote url "ubigraph.new_vertex_w_id" vid)
newEdgeWithId :: Url -> EdgeId -> VertexId -> VertexId -> IO Bool newEdgeWithId url eid x y = zeroOnSuccess (remote url "ubigraph.new_edge_w_id" eid x y)
setVertexAttribute :: Url -> VertexId -> String -> String -> IO Bool setVertexAttribute url vid attr val = zeroOnSuccess (remote url "ubigraph.set_vertex_attribute" vid attr val)
setEdgeAttribute :: Url -> VertexId -> String -> String -> IO Bool setEdgeAttribute url eid attr val = zeroOnSuccess (remote url "ubigraph.set_edge_attribute" eid attr val)
module VacuumUbigraph where
import GHC.Vacuum import Data.Char import Text.Printf import Data.List
import qualified Data.IntMap as IntMap import qualified Data.IntSet as IntSet
import qualified Ubigraph as U
nodeStyle n = case nodeName n of ":" -> ("(:)", "cube", "#0000ff")
-- atomic stuff is special k | k `elem` ["S#" ,"I#" ,"W#" ,"I8#" ,"I16#" ,"I32#" ,"I64#" ,"W8#" ,"W16#" ,"W32#" ,"W64#"] -> (showLit n, "sphere", "#00ff00") -- chars "C#" -> (show . chr . fromIntegral . head . nodeLits $ n, "sphere", "#00ff00") "D#" -> ("Double", "sphere", "#009900") "F#" -> ("Float", "sphere", "#009900")
-- bytestrings "PS" -> (printf "ByteString[%d,%d]" (nodeLits n !! 1) (nodeLits n !! 2), "cube", "#ff0000") "Chunk" -> (printf "Chunk[%d,%d]" (nodeLits n !! 1) (nodeLits n !! 2), "cube", "#ff0000")
-- otherwise just the constructor and local fields c | z > 0 -> (c ++ show (take (fromIntegral z) $ nodeLits n), "cube", "#990000") | otherwise -> (c, "cube", "#990000") where z = itabLits (nodeInfo n) where showLit n = show (head $ nodeLits n)
view a = do U.clear srv mapM_ renderNode nodes mapM_ renderEdge edges where g = vacuum a alist = toAdjList g nodes = nub $ map fst alist ++ concatMap snd alist edges = concatMap (\(n, ns) -> map ((,) n) ns) alist
style nid = maybe ("...", "cube", "#ff0000") nodeStyle (IntMap.lookup nid g)
renderNode nid = do U.newVertexWithId srv nid let (label, shape, color) = style nid U.setVertexAttribute srv nid "label" label U.setVertexAttribute srv nid "shape" shape U.setVertexAttribute srv nid "color" color
renderEdge (a, b) = do e <- U.newEdge srv a b U.setEdgeAttribute srv e "stroke" "dotted" U.setEdgeAttribute srv e "arrow" "true"
srv = U.defaultServer
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

Wed, Apr 1, 2009 at 11:20 PM, Claus Reinke
A platform-independent, open-source, 2d/3d graph layout engine
for incrementally updated graphs (where the graph after the update has to be similar enough to the one before that one can follow the animation and make sense of the data displayed) might be a good project for frp+opengl hackers - force equations between nodes, influenced by edges, and keeping the structure stable while adding nodes (parsed from an input stream).
Something like this? http://en.wikipedia.org/wiki/Force-based_algorithms Yes, I'm all for it :-) The only problem is finding time to do it :-( Although QuickSilver might be able to pull this off easily? Claus
This cabalized project doesn't appear to be on hackage!
gleb.alexeev:
Don Stewart wrote:
I am pleased to announce the release of vacuum-cairo, a Haskell library for interactive rendering and display of values on the GHC heap using Matt Morrow's vacuum library.
Awesome stuff, kudos to you and Matt Morrow!
I thought it'd be fun to visualize data structures in three dimensions. Attached is quick and dirty hack based on your code and Ubigraph server (http://ubietylab.net/ubigraph/).
The demo video (apologies for poor quality): http://www.youtube.com/watch?v=3mMH1cHWB6c
If someone finds it fun enough, I'll cabalize it and upload to Hackage.
module Ubigraph where
import Network.XmlRpc.Client
type Url = String type VertexId = Int type EdgeId = Int
defaultServer = "http://127.0.0.1:20738/RPC2"
void :: IO Int -> IO () void m = m >> return ()
clear :: Url -> IO () clear url = void (remote url "ubigraph.clear")
newVertex :: Url -> IO VertexId newVertex url = remote url "ubigraph.new_vertex"
newEdge :: Url -> VertexId -> VertexId -> IO EdgeId newEdge url = remote url "ubigraph.new_edge"
removeVertex :: Url -> VertexId -> IO () removeVertex url vid = void (remote url "ubigraph.remove_vertex" vid)
removeEgde :: Url -> EdgeId -> IO () removeEgde url eid= void (remote url "ubigraph.remove_edge" eid)
zeroOnSuccess :: IO Int -> IO Bool zeroOnSuccess = fmap (==0)
newVertexWithId :: Url -> VertexId -> IO Bool newVertexWithId url vid = zeroOnSuccess (remote url "ubigraph.new_vertex_w_id" vid)
newEdgeWithId :: Url -> EdgeId -> VertexId -> VertexId -> IO Bool newEdgeWithId url eid x y = zeroOnSuccess (remote url "ubigraph.new_edge_w_id" eid x y)
setVertexAttribute :: Url -> VertexId -> String -> String -> IO Bool setVertexAttribute url vid attr val = zeroOnSuccess (remote url "ubigraph.set_vertex_attribute" vid attr val)
setEdgeAttribute :: Url -> VertexId -> String -> String -> IO Bool setEdgeAttribute url eid attr val = zeroOnSuccess (remote url "ubigraph.set_edge_attribute" eid attr val)
module VacuumUbigraph where
import GHC.Vacuum import Data.Char import Text.Printf import Data.List
import qualified Data.IntMap as IntMap import qualified Data.IntSet as IntSet
import qualified Ubigraph as U
nodeStyle n = case nodeName n of ":" -> ("(:)", "cube", "#0000ff")
-- atomic stuff is special k | k `elem` ["S#" ,"I#" ,"W#" ,"I8#" ,"I16#" ,"I32#" ,"I64#" ,"W8#" ,"W16#" ,"W32#" ,"W64#"] -> (showLit n, "sphere", "#00ff00") -- chars "C#" -> (show . chr . fromIntegral . head . nodeLits $ n, "sphere", "#00ff00") "D#" -> ("Double", "sphere", "#009900") "F#" -> ("Float", "sphere", "#009900")
-- bytestrings "PS" -> (printf "ByteString[%d,%d]" (nodeLits n !! 1) (nodeLits n !! 2), "cube", "#ff0000") "Chunk" -> (printf "Chunk[%d,%d]" (nodeLits n !! 1) (nodeLits n !! 2), "cube", "#ff0000")
-- otherwise just the constructor and local fields c | z > 0 -> (c ++ show (take (fromIntegral z) $ nodeLits n), "cube", "#990000") | otherwise -> (c, "cube", "#990000") where z = itabLits (nodeInfo n) where showLit n = show (head $ nodeLits n)
view a = do U.clear srv mapM_ renderNode nodes mapM_ renderEdge edges where g = vacuum a alist = toAdjList g nodes = nub $ map fst alist ++ concatMap snd alist edges = concatMap (\(n, ns) -> map ((,) n) ns) alist
style nid = maybe ("...", "cube", "#ff0000") nodeStyle (IntMap.lookup nid g)
renderNode nid = do U.newVertexWithId srv nid let (label, shape, color) = style nid U.setVertexAttribute srv nid "label" label U.setVertexAttribute srv nid "shape" shape U.setVertexAttribute srv nid "color" color
renderEdge (a, b) = do e <- U.newEdge srv a b U.setEdgeAttribute srv e "stroke" "dotted" U.setEdgeAttribute srv e "arrow" "true"
srv = U.defaultServer
_______________________________________________
Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

Peter Verswyvelen wrote:
Something like this?
http://en.wikipedia.org/wiki/Force-based_algorithms
Yes, I'm all for it :-) The only problem is finding time to do it :-( Although QuickSilver might be able to pull this off easily?
A basic version is easy, yes. http://roobarb.jellybean.co.uk/~jules/forces.1.tgz It makes no attempt to analyze when stable state is reached, has no way to add heuristics, has no output or save format, or indeed input format. I haven't hacked it into vacuum because I don't have GHC 6.10 installed. All that being said, it's a quick proof of concept, it comes with some fun examples including most of the platonic solids and a couple of chemical modules. It may be a starting point for someone wanting to do something cleverer. Compile with -threaded. It bundles my simple Reactive implementation which separates the framerate from the simulation speed and lets you rotate / zoom in/out. obligatory screenshot: http://roobarb.jellybean.co.uk/~jules/Picture%2012.png Jules

Don Stewart wrote:
Did you use hubigraph?
This cabalized project doesn't appear to be on hackage!
Oh, I wasn't aware of hubigraph until now. Ubigraph has very simple XML-RPC-based API so I used it directly. Hubigraph, of course, looks nicer with its custom monad, datatypes for shapes etc. BTW, it seems that you didn't notice the complete source code attached to my first message. Like I said it's just a quick and dirty hack, all real job is done by vacuum, Ubigraph server and a bit of code copy-pasted from vacuum-cairo.

When I try to install the hubigraph I get the following error:
:~/Desktop/hubigraph-0.1$ cabal install
Resolving dependencies...
'haxr-3000.1.1.2' is cached.
Configuring haxr-3000.1.1.2...
Preprocessing library haxr-3000.1.1.2...
Building haxr-3000.1.1.2...
[1 of 6] Compiling Network.XmlRpc.DTD_XMLRPC ( Network/XmlRpc/DTD_XMLRPC.hs,
dist/build/Network/XmlRpc/DTD_XMLRPC.o )
Network/XmlRpc/DTD_XMLRPC.hs:183:4:
Warning: Pattern match(es) are overlapped
In the definition of `fromElem':
fromElem (CMisc _ : rest) = ...
fromElem (CString _ s : rest) = ...
fromElem rest = ...
[2 of 6] Compiling Network.XmlRpc.Base64 ( Network/XmlRpc/Base64.hs,
dist/build/Network/XmlRpc/Base64.o )
[3 of 6] Compiling Network.XmlRpc.Internals ( Network/XmlRpc/Internals.hs,
dist/build/Network/XmlRpc/Internals.o )
[4 of 6] Compiling Network.XmlRpc.Server ( Network/XmlRpc/Server.hs,
dist/build/Network/XmlRpc/Server.o )
[5 of 6] Compiling Network.XmlRpc.Client ( Network/XmlRpc/Client.hs,
dist/build/Network/XmlRpc/Client.o )
Network/XmlRpc/Client.hs:113:23:
Not in scope: type constructor or class `ConnError'
Network/XmlRpc/Client.hs:113:51:
Not in scope: type constructor or class `ConnError'
cabal: Error: some packages failed to install:
HUBIGraph-0.1 depends on haxr-3000.1.1.2 which failed to install.
haxr-3000.1.1.2 failed during the building phase. The exception was:
exit: ExitFailure 1
Any ideas?
Thanks,
Daryoush
On Thu, Apr 2, 2009 at 12:25 AM, Gleb Alexeyev
Don Stewart wrote:
Did you use hubigraph?
This cabalized project doesn't appear to be on hackage!
Oh, I wasn't aware of hubigraph until now. Ubigraph has very simple XML-RPC-based API so I used it directly. Hubigraph, of course, looks nicer with its custom monad, datatypes for shapes etc.
BTW, it seems that you didn't notice the complete source code attached to my first message. Like I said it's just a quick and dirty hack, all real job is done by vacuum, Ubigraph server and a bit of code copy-pasted from vacuum-cairo.
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

Daryoush Mehrtash wrote:
When I try to install the hubigraph I get the following error:
skip
Network/XmlRpc/Client.hs:113:23: Not in scope: type constructor or class `ConnError'
Network/XmlRpc/Client.hs:113:51: Not in scope: type constructor or class `ConnError' cabal: Error: some packages failed to install: HUBIGraph-0.1 depends on haxr-3000.1.1.2 which failed to install. haxr-3000.1.1.2 failed during the building phase. The exception was: exit: ExitFailure 1
Any ideas?
I've just run into this problem as well. It seems that haxr doesn't build with HTTP-4000, though its cabal file doesn't specify the upper bound.
participants (16)
-
Alistair Bayley
-
Brandon S. Allbery KF8NH
-
Claus Reinke
-
Daryoush Mehrtash
-
Don Stewart
-
Gleb Alexeyev
-
Gwern Branwen
-
Iavor Diatchki
-
Jules Bean
-
Manuel M T Chakravarty
-
Mark Wassell
-
Matt Morrow
-
Peter Verswyvelen
-
Ross Mellgren
-
Sebastian Fischer
-
Sittampalam, Ganesh