2010-05-07 6 views
5

j'ai déclaré mon propre type:arguments facultatifs dans haskell

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

et maintenant:

x = Bookinfo 

il est tout énoncé ok, valable

mais en faisant BookID x renvoie une erreur. Si je serais capable de gérer les erreurs dans Haskell ce serait ok mais maintenant je ne peux pas faire cela Donc, je suis curieux de savoir comment faire des valeurs non spécifiées de champs prennent la valeur par défaut, et quelle valeur exacte est là quand je suis ne pas donner des vcalues ​​de champs dans construcotr?

grâce à l'aide

+1

question similaires: http://stackoverflow.com/questions/7781096/is-there-a-better-way-to-have-optional-arguments-in-haskell – MatrixFrog

Répondre

12
-- 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" } 
Questions connexes