Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

optional arguments in haskell

I have declared my own type:

data Book = Bookinfo {
              bookId :: Int,
              title :: String
          } deriving(Show)

and now:

x = Bookinfo

it is all ok, valid statement

but making bookId x throws an error.

If I would be able to handle errors in Haskell that would be ok but right now I cant do this So Im curious how to make not specified values of fields take default value, and what exactly value is there when I'm not giving vcalues of fields in construcotr ?

thanks for help

like image 932
gruber Avatar asked May 07 '10 18:05

gruber


1 Answers

-- this one is not a Book but actually a function that can make one:
alternativeCtrFunc = Bookinfo

defaultBook = Bookinfo { bookId = 3, title = "Welcome to the Monkey House" }

x = defaultBook
y = defaultBook { bookId = 7 }
z = defaultBook { title = "The Cider House Rules" }
like image 100
yairchu Avatar answered Sep 24 '22 01:09

yairchu