[Haskell-cafe] n00b question: defining datatype

Iain Barnett iainspeed at gmail.com
Thu Jul 23 14:43:02 EDT 2009


Hi,
I'm trying to get my head around datatypes, and wondering how I might define
a simple  "Task" datatype in Haskell.
data Task = Task { title :: String, completed :: Bool }
Ok, that's straightforward, but sometimes tasks become a list of tasks
themselves
data Task = Task { title :: String, completed :: Bool, subtasks :: [Task] }
But that's not really right, because obviously, some tasks don't have
subtasks. So I try this:
data Task = Task { title :: String, completed :: Bool } | TaskWithSubtasks {
title :: String, completed :: Bool, subtasks :: [Task] }
It's a bit more accurate, but it's repeating things, which is ok with a
simple type. Could anyone suggest a better way to define this? If I was
using C#, which I'm far more familiar with, I could overload the constructor
and refer to the smaller constructor. Is there a way to do that in Haskell,
or am I still thinking too OOP?
Iain
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20090723/bcf595cb/attachment.html


More information about the Haskell-Cafe mailing list