Hi all

I thought about these things too. My 2 cents:

Am Sun, 27 Jul 2008 15:58:40 -0400
schrieb Paul Hudak <[EMAIL PROTECTED]>:

> First of all, I should make it clear that we don't intend to
> eliminate anything.  But I (and many of my students) believe that
> darcs Haskore is currently unwieldy for a newcomer to grasp.  

Yep, I got started with the original package in minutes (I was
especially impressed about TestHaskore, and the OS-specific
midiplayers.)  With the darcs version I had to tweak the .cabal file,
remove some subdirs that didnt compile with that modified .cabal,  had
to install a lot of additional packages etcpp. That was really
cumbersome.

> This can be partly alleviated by tutorial material, but I believe
> that the problem is more deeply rooted.  In particular, we would like
> to:
> 
>     * Reconsider some of the basic premises in the design of core
> Haskore.
>     * Revisit the organization of Haskore (in terms of the core, media
>       types, interfaces, etc).
>     * Reconsider some of the coding conventions (such as the use of
>       generic types named "T" in each module).

I had a discussion on the last point with a colluege at our department
(Software-Engineering) recently. In OO-Software, I typically think in
Components, Layers and Interfaces and the goal for good design is to
minimize dependencies so you can exchange components later, or locate
problems easily.

One thing I have no idea about in FP is how to make a good design for a
large program. In Java, or C++ there is a quite good mapping from the
language to the filesystem: 

Java: Classes and Interfaces -> *.java, Packages -> Directories
C/C++: Headers -> *.h, Implementation -> *.c

One "concept" is mapped to some kind of file. In Haskell there are only
"modules" and I cant grasp the corresponding "concepts" and how they
should be mapped to files:

1) A (arbitrary?) collection of functions -> One file? What functions
belong together?

2) A generic Type -> One file (this seems to be the way Henning went,
explained here: http://www.haskell.org/haskellwiki/Qualified_names )
what functions belong to the Type? And how should I organize the other
functions ?

Or the other way around ( since we have only "modules"): What makes up
a module, why not put everything in one module, or do one module per
function (as extrema) ?  What is the "right" way?

I would be really happy if someone could direct me to some books or
stuff on the web where such things are discussed. Because this is
really really interesting ... (perhaps mail me privately ...)

Oops, back to haskore: In general I like Hennings approach, but perhaps
it's to much "OO-style"? And perhaps there are parts of the code that
cannot be organized in this way. Perhaps we need different kinds of
modules ?

In any way one needs explicit "guidelines", then any contributors can
adhere to them, and any occasional (or heavy) src-code reader will know
what a construct like (e.g.) "Music.T.fromSomething something" means.

> > Will the entire Haskore continue to be released as one package, or as
> > multiple packages?
> 
> One package.

As I mention above: for me, a clean design has very few and clear
dependencies, for me part of the problem with the current codebase is
that some things are too complicated. Therefore, I would like to think
about splitting off some things that IMHO do note belong to the "core"
of haskore. 

I think especially of these interfaces to "sound-generators": I would
like to use haskore on top of a standard ghc installation and simply
play some MIDI. Other components like complicated interfaces to csound
and supercollider, or lilypond, or interesting apps that _use_ haskore
to create or analyse specific kinds of music could very well be their
own projects.

haskells infrastructure in these regards is quite good nowadays
(hackage, mkcabal etc) so it shoudl not be a problem of ressources...

BTW: We could use the wiki-pages to organize the efforts, I like
todo-lists, overviews, mission statements, code conventions, links to
documentation (tutorial and haddock) etc. I would do it, but I will
wait for some statements from Henning ;-)

Best regards, Sebastian.
_______________________________________________
haskell-art mailing list
haskell-art@lists.lurk.org
http://lists.lurk.org/mailman/listinfo/haskell-art

Reply via email to