[Haskell-cafe] FP design

Tim Chevalier catamorphism at gmail.com
Mon Nov 5 19:41:43 EST 2007

On 11/5/07, Levi Stephen <levi.stephen at optusnet.com.au> wrote:
> Hi,
> I'm was wondering how most people work during when designing a functional
> program. Do you create data structures/types first? Do you work from some type
> signatures?
> For example, take a blog. Is the first step likely to be something like:
> data BlogEntry = BlogEntry { title::String,content::String,comments::[Comment] }
> type Blog = [BlogEntry]
> or more likely thinking about what functions will be required:
> addEntry :: BlogEntry -> Blog -> Blog
> displayBlog :: Blog -> HTML
> displayEntry :: BlogEntry -> HTML

I don't know how you can do one without the other. I would probably
start in a case like this by writing down a few basic types, then
trying to start to write down the function type signatures, which will
probably point to more types that need to be defined, iterating until
I reach a fixed point. I can't write type signatures unless I know
what the types are. But I don't know what the types should look like
unless I know what the interface should look like, either.

One thing that's for sure, though -- I always write type signatures
for top-level definitions. I can't think straight unless I write the
type signature before writing the code.


Tim Chevalier * catamorphism.org * Often in error, never in doubt
"Thus spake the Master Programmer: When you have learned to snatch the
error code from the trap frame, it will be time for you to leave."--J.

More information about the Haskell-Cafe mailing list