Pytanie W haskell, Co robi: +: średnia w definicji typu danych?


Jest to definicja nowego typu danych:

data Total a = Total a :+: Total a 
              |...

Co oznacza: +: średnia w definicji tego typu?


11
2017-10-04 18:07


pochodzenie


To nie jest poprawne w standardowym Haskell. To dziwne rozszerzenie GHC :) - singpolyma
@singpolyma: Jest to standard Składnia Haskell 98 (patrz consym produkcja). W końcu : Konstruktor list jest tylko szczególnym przypadkiem tego. Być może o tym myślałeś TypeOperators? - hammar
@hammar Oh, hmm, myślałem o tym TypeOperators. Nie wiedziałem, że używanie operatorów dla konstruktorów danych było standardem. To bardzo brzydkie. Zwykle brzydkie rzeczy to rozszerzenia :) - singpolyma


Odpowiedzi:


Jest to konstruktor danych zapisany w formie infiksowej. Możesz mieć operatora jako konstruktora, jeśli zaczyna się od : .


9
2017-10-04 18:12



Mówiąc nieprzyzwoicie, : jest symbolem wielkiej litery: D - Daniel Fischer
Dlaczego jest: po +? - Sam
@ user1720938: Dla symetrii wizualnej. Rzecz czysto estetyczna. - C. A. McCann
@ C.A.McCann: Z pewnością tylko na poziomie typu? Inaczej (+) będzie nazwą konstruktora, a nie nazwą wartości, a to pytanie dotyczy nazw konstruktora. - ehird
Aby dodać kontekst do komentarza @ C.A.McCann, który może nie być od razu jasny: podczas używania symboli w wpisz wyrażeń lubić Int + Char, rozszerzenie traktuje wszystkie symbole jako "wielkie litery". W sferze wartości : pozostaje jedynym wielkimi literami, symbole konstruktora wartości muszą zaczynać się od : nadal. - Daniel Fischer