2010-05-07 16 views
5

me han declarado mi propio tipo:argumentos opcionales en Haskell

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

y ahora:

x = Bookinfo 

es todo comunicado bien, válida

pero haciendo bookId x genera un error.

Si fuera capaz de manejar los errores en Haskell, estaría bien, pero ahora no puedo hacer esto. Tengo curiosidad por saber cómo hacer que los valores no especificados de los campos tengan valor predeterminado, y qué valor hay exactamente cuando estoy no dando vcalues ​​de campos en construcotr?

gracias por la ayuda

+1

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

Respuesta

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" } 
Cuestiones relacionadas