Мой вопрос в том, что означает :?:
Вы здесь определяете конструктор данных, который является оператором :?:
.Действительно, в GHCi вы можете запросить тип функции (:?:)
:
:t (:?:)
(:?:) :: a -> ListaOrd a -> ListaOrd
Таким образом, он точно такой же, как если бы вы использовали другое имя, например:
data ListaOrd a = <b>Conso</b> a (ListaOrd a) | Nulo deriving Show
Но здесь мы определяем конструктор данных с именем (:?:)
, который также может использоваться с синтаксисом оператора.На самом деле вы, вероятно, уже использовали такой конструктор (ы) данных.Например, (:)
является конструктором данных для списка.