[Haskell-cafe] ANNOUNCE: planar-graph-1.0

2012-04-27 Thread Ivan Lazar Miljenovic
I uploaded this [1] yesterday, posted the blog article [2] about it...
but forgot to send a message to the lists!

[1]: http://hackage.haskell.org/package/planar-graph
[2]: http://ivanmiljenovic.wordpress.com/2012/04/27/announcing-planar-graph/

planar-graph is an implementation of, strangely enough, planar graphs
(that is, a graph that contains an embedding on a surface, can be
drawn with no edge crossings and has a specific ordering of edges).
It handles graphs on planes and spheres, but I'm not sure about other
surfaces (and there seems to be little demand for such).

This probably won't be of many use to people, but as I described in
the blog post, I've been using this as a test bed for graph library
design (specifically usage of abstract node/edge identifiers, using
half-edges and the serialisation/encoding setup).

-- 
Ivan Lazar Miljenovic
ivan.miljeno...@gmail.com
http://IvanMiljenovic.wordpress.com

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] ANNOUNCE: planar-graph-1.0

2012-04-27 Thread Thomas DuBuisson
Good work, Ivan.  Despite your numerous previous pointers, I still
haven't look at this API.  I'm glad to see this release, it's great
motivation and I'll probably look through it this weekend.

Thanks for all the graph library work you do,
Thomas

On Fri, Apr 27, 2012 at 4:07 PM, Ivan Lazar Miljenovic
ivan.miljeno...@gmail.com wrote:
 I uploaded this [1] yesterday, posted the blog article [2] about it...
 but forgot to send a message to the lists!

 [1]: http://hackage.haskell.org/package/planar-graph
 [2]: http://ivanmiljenovic.wordpress.com/2012/04/27/announcing-planar-graph/

 planar-graph is an implementation of, strangely enough, planar graphs
 (that is, a graph that contains an embedding on a surface, can be
 drawn with no edge crossings and has a specific ordering of edges).
 It handles graphs on planes and spheres, but I'm not sure about other
 surfaces (and there seems to be little demand for such).

 This probably won't be of many use to people, but as I described in
 the blog post, I've been using this as a test bed for graph library
 design (specifically usage of abstract node/edge identifiers, using
 half-edges and the serialisation/encoding setup).

 --
 Ivan Lazar Miljenovic
 ivan.miljeno...@gmail.com
 http://IvanMiljenovic.wordpress.com

 ___
 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


Re: [Haskell-cafe] ANNOUNCE: planar-graph-1.0

2012-04-27 Thread Felipe Almeida Lessa
Hello!

I'm sorry if this is a dumb question, I was just reading the API docs,
but: what happens if one by one I add all edges of a non-planar graph
using addEdge?  Are there any sanity checks that would tell me sorry,
but your graph isn't planar, or would it just give me wrong answers?

Cheers, =)

-- 
Felipe.

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] ANNOUNCE: planar-graph-1.0

2012-04-27 Thread Ivan Lazar Miljenovic
On 28 April 2012 11:38, Felipe Almeida Lessa felipe.le...@gmail.com wrote:
 Hello!

 I'm sorry if this is a dumb question, I was just reading the API docs,
 but: what happens if one by one I add all edges of a non-planar graph
 using addEdge?  Are there any sanity checks that would tell me sorry,
 but your graph isn't planar, or would it just give me wrong answers?

Wrong answers.  I'm assuming you have *some* intelligence :p

The original plans were to have Maybe variants that would perform such
sanity checks, but as I was going for performance (as my supervisor is
of the opinion that if it isn't C it isn't worth considering for pure
performance reasons) the default versions didn't include them, and it
slipped my mind until you just reminded me :)

I can add them in if anyone wants them: what it entails is to add the
edge and then perform planarity testing [3]; this can get expensive if
the graph is large (I did once work out an approach that involved just
checking the new face[s], but I don't recall what it was or whether it
was correct).

[3]: http://en.wikipedia.org/wiki/Planarity_testing

(My rationale for this library was to implement a graph-generating
algorithm; I knew what the ordering was, so I didn't need any will
adding this keep it planar checks.)

-- 
Ivan Lazar Miljenovic
ivan.miljeno...@gmail.com
http://IvanMiljenovic.wordpress.com

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe