Как я могу реализовать функцию head
или singleton
в purescript путем сопоставления с образцом? Проблема в том, что компилятору требуется явное определение самого широкого шаблона, но я не могу сгенерировать значение по умолчанию для типа, который я не знаю.
fromSingleton :: forall a. a -> Array a -> a
fromSingleton _ [x] = x
fromSingleton def [] = def
возвращает:
A case expression could not be determined to cover all inputs.
The following additional cases are required to cover all inputs:
_ _
Alternatively, add a Partial constraint to the type of the enclosing value.
Но это предложение выглядит глупо, я не могу добавить:
fromSingleton _ _ = ??? (a -- is any type, how can I implement default for it?)