необязательные аргументы в haskell - PullRequest
5 голосов
/ 07 мая 2010

Я объявил свой собственный тип:

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

и сейчас:

x = Bookinfo

все нормально, верное утверждение

но при создании bookId x выдается ошибка.

Если бы я мог обрабатывать ошибки в Haskell, это было бы нормально, но сейчас я не могу сделать это, поэтому мне интересно, как сделать так, чтобы не заданные значения полей принимали значение по умолчанию, и какое именно значение есть, когда я давать значения полей в construcotr?

спасибо за помощь

1 Ответ

12 голосов
/ 07 мая 2010
-- 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" }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...