haskell中的可选参数

gru*_*ber 5 parameters constructor haskell

我宣布了自己的类型:

data Book = Bookinfo {
              bookId :: Int,
              title :: String
          } deriving(Show)
Run Code Online (Sandbox Code Playgroud)

现在:

x = Bookinfo
Run Code Online (Sandbox Code Playgroud)

一切都好,有效的声明

但是使bookId x抛出错误.

如果我能够处理Haskell中的错误就可以了但是现在我无法做到这一点我很好奇如何使未指定的字段值采用默认值,当我没有给出vcalues时,究竟有什么价值construcotr中的字段?

感谢帮助

yai*_*chu 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" }
Run Code Online (Sandbox Code Playgroud)