Изучение значения оператора ":?:" В Haskell - PullRequest
2 голосов
/ 27 сентября 2019

Я изучаю Haskell, и я только что увидел эту странную структуру данных в своей книге, она выглядит так: data ListaOrd a = a :?: (ListaOrd a) | Nulo deriving Show.Было сказано, что это должно представлять упорядоченный список, но я не думаю, что я действительно понял это.У меня вопрос, что означает символ ":?:" В этом коде?

1 Ответ

7 голосов
/ 27 сентября 2019

Мой вопрос в том, что означает :?:

Вы здесь определяете конструктор данных, который является оператором :?:.Действительно, в GHCi вы можете запросить тип функции (:?:):

:t (:?:)
(:?:) :: a -> ListaOrd a -> ListaOrd 

Таким образом, он точно такой же, как если бы вы использовали другое имя, например:

data ListaOrd a = <b>Conso</b> a (ListaOrd a) | Nulo deriving Show

Но здесь мы определяем конструктор данных с именем (:?:), который также может использоваться с синтаксисом оператора.На самом деле вы, вероятно, уже использовали такой конструктор (ы) данных.Например, (:) является конструктором данных для списка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...