[Haskell-cafe] Re: What do _you_ want to see in FGL?
Ivan Lazar Miljenovic
ivan.miljenovic at gmail.com
Sun May 16 01:58:48 EDT 2010
Heinrich Apfelmus <apfelmus at quantentunnel.de> writes:
> Ivan Lazar Miljenovic wrote:
>> Heinrich Apfelmus writes:
>>> I'd be happy with either one. :) In both cases, I want to specify a
>>> custom vertex type.
>>
>> Except an abstract type isn't a custom vertex type...
>>
>>> I can either do that directly if the library permits, though I think the
>>> solution with associated types is too cumbersome to be useful for my
>>> make example.
>>
>> Why?
>
> I was under the impression that I would have to define a new graph data
> type with FilePath as vertex type and make that an instance of Graph
> ? In that case, it would be much shorter for me to stick with the clumsy
>
> nodeMap = Map.fromList nodes
> index k = Map.findIndex k nodeMap
> nodes' = map (\(a,b) -> (index a, b)) nodes
> edges' = map (\(a,b,c) -> (index a, index b, c)) edges
Well, we'll provide a Map-based one that lets you specify the vertex
type as a type parameter; this functionality (type parameter being ued
for the vertex type) won't be required since not all graphs will be able
to chop and choose which vertex type to use.
> In the make example, I didn't need to get a node based on its label
> either. But the graph was a graph of FilePaths and I still have to
> implement an association between that and Int . (In fact, I don't know
> of any graph whose nodes are unique integers conceptually.)
>
> In other words, I have to make sure that every FilePath is mapped to a
> unique integer which I can then glue into a graph. This is not hard to
> do with a Data.Map and the four lines of code above do exactly that.
> However, I still had to think about it and it took me way too long to
> come up with these four lines. What I would like to see is that the
> *library* has thought about that for me already.
Right; I'm going to look at merging this import-like functionality from
Graphalyze (which already does this).
> [snip]
>
> To summarize: an abstract Node type relieves me from thinking about
> the association between my conceptual node type and unique identifiers.
> I'd be happy with anything along these lines, the interface above is
> just a suggestion.
Well, you can consider the current Int vertex type to be a (not-so-)
abstract vertex type; it might be an idea to wrap this up so people
don't mess with it themselves though.
--
Ivan Lazar Miljenovic
Ivan.Miljenovic at gmail.com
IvanMiljenovic.wordpress.com
More information about the Haskell-Cafe
mailing list