2016-07-11 41 views
0

Dieser Code scheint <> als Interpolationsoperator zu verwenden. https://github.com/hlian/linklater/blob/master/examples/app/JointPhotographicExpertsGroupTonga.hsUnbekannter Haskell-Operator; `<>`

Ich kann die Dokumentation und Quelle für diesen Operator nicht finden. Irgendwelche Ideen was es tut/wo es herkommt.

+0

Es ist von [Data.Monoid] (https://hackage.haskell.org/package/base-4.9.0.0/docs/Data-Monoid.html) – pdexter

+0

Impliziter Import ist schrecklich. Es ist schade, dass Haskell das zugibt. – Igor

Antwort

3

Traditionell ist <> in erster Linie eine in Data.Monoid definierte Funktion.

(<>) :: Monoid a => a -> a -> a 
(<>) = mappend 

jedoch das semigroups Paket ist seit langem als ein Verfahren der in Data.SemigroupSemigroup Klasse verwendet. Ab GHC 8 ist Data.Semigroup in das base Paket umgezogen. Es gibt derzeit einen Plan für die Herstellung einer Superklasse von SemigroupMonoid. Sobald dies abgeschlossen ist, wird die <> Funktion vollständig durch die <> Methode ersetzt.

2

Verwenden Sie hayoo, um nach Definitionen in Hackage-Paketen zu suchen.

In diesem Fall scheint es, dass es der Operator mappend ist, der in Data.Monoid definiert ist.

+0

hayoo ist cool! Danke –

+0

Während ich verstehe, dass Mappend flexibler als ++ ist, wäre nicht ++ in diesem Fall völlig ausreichend gewesen? –

+0

Es ermöglicht einen einfachen Übergang zwischen der Verwendung von Strings und der Verwendung von Text - Sie müssen nicht durchgehen und ändern '++' in 'Text.append' – ErikR