Ich bin relativ neu in Haskell; Was stellt die <=
Syntax dar und was ist der Unterschied zwischen <=
und =>
? Beispiele von beiden wären hilfreich.Die Bedeutung von <= vs. => in Haskell
Antwort
Die beiden völlig unabhängig sind; sie scheinen nur wegen ASCII verwandt zu sein. Es macht mehr Sinn, wenn man sich ihre Unicode-Äquivalente aussehen:
=>
ist ein Pfeil:⇒
. Es wird verwendet, Einschränkungen bei Typ Signaturen zu spezifizieren:Eq a => a -> a -> Bool
Eq a =>
Die in der obigen Signatur bedeutet, dass die Typvariablea
kann jeder Typ sein, der eine Instanz der KlasseEq
ist. Das heißt, jeder Typ, der entwederderiving (Eq)
oder eine explizite Instanz wieinstance Eq Type where ...
hat.In Funktionssignaturen gibt
->
ein normales Argument an, während=>
Constraints in der Signatur angibt. Im obigen Beispiel (Eq a => a -> a -> Bool
) nimmt die Funktion zwei Argumente vom Typa
und gibt uns eineBool
. DerEq a =>
Teil ist kein explizites Argument für die Funktion; es sagt uns nur, dassa
Teil vonEq
sein muss (das heißt, es muss vergleichbar sein mit==
).<=
ist kleiner oder gleich. Das heißt, es ist≤
, nicht⇐
. Es ist eine normale Funktion in der Standard-Bibliothek, die Teil derOrd
Klasse ist:λ> :t (<=) (<=) :: Ord a => a -> a -> Bool
Sie es in einem normalen Ausdruck verwenden können:
λ> 10 <= 12 True
Der einzige Grund, symmetrisch sie scheinen, weil das ist Die ASCII-Approximation von ≤
und ⇐
ist die gleiche, aber das ist nur eine Einschränkung in der Notation. Ansonsten sind sie völlig unabhängig voneinander.
Sie können die eindeutigen Unicode-Symbole in Ihrem Code verwenden. Die Erweiterung UnicodeSyntax
ermöglicht die Verwendung von ⇒
für =>
und das base-unicode-symbols
Paket enthält Unicode-Versionen von Standardbibliotheksfunktionen einschließlich ≤
für <=
.
Sie sind völlig verschiedene Dinge.
=>
(sowie->
) ist integrierter Typ-Level-Syntax. Es wird verwendet, um Einschränkungen zu bezeichnen. Zum Beispiel kann die Signaturabs :: Num a => a -> a
sagt man, dass die
abs
Funktion einen Wert vom Typ nimmta
und einen Wert von der gleichen Art ergibt, unter der Bedingunga
einen Nummerntyp (das heißt, erfüllt denNum a
constraint). Eine solche Beschränkung wird normalerweise & dagger; a Typ Klasse; in diesem Fallclass Num a where ...
können Sie lesen den
=>
Pfeil als eine Art-Funktionszuordnung zu:abs
zuerst die Informationen von welche spezifischen Art von Nummera
ist als “ implizites Argument ”, dann ein eine solche Zahl als ein explizites Argument, und nur dann gibt das Ergebnis.<=
ist keine Syntax, es ist nur ein Infix-Operator, der in der Standardbibliothek definiert ist. Genauer gesagt ist es der "less-than" -Operator, den Mathematiker schreiben ≤.
Sie können solche Operatoren auf Hayoo nachschlagen, keine Notwendigkeit, Fragen über sie zu stellen.
& Dolch; Streng genommen ist eine Klasse keine Einschränkung, sondern ein Constraint-Konstruktor “ ”, d. H. Eine Typ-Level-Funktion, deren Ergebnis vom Typ Constraint
ist. Zum Beispiel wird Num :: * -> Constraint
angewendet auf z.B. Int :: *
bedeutet, dass Num Int
eine Einschränkung ist. (Diese sind nicht Signaturen geben aber Art Signaturen, das heißt “ Arten von Typ-Ebene Dinge ”.)
- 1. Was ist die Bedeutung von <#= #>
- 2. Haskell Daten:> Konstruktor Bedeutung
- 3. Bedeutung von >>, <<, | und & JavaScript
- 4. Was bedeutet "<>" in haskell Beispielcode?
- 5. Die Bedeutung von 'in Haskell Funktionsname?
- 6. <%# %> vs <%= %>
- 7. Bedeutung von <ApplicationName> _prefix.pch Datei
- 8. <applet> vs <object>
- 9. ASP.NET <%= %> vs <%: %>
- 10. <?> vs <T>
- 11. Rails ERB <%- ... -%> vs. <% ... %>
- 12. GameObject.FindObjectOfType <>() vs GetComponent <>()
- 13. „<>“ vs „NOT IN“
- 14. Unbekannter Haskell-Operator; `<>`
- 15. <Module runAllManagedModulesForAllRequests = „true“ /> Bedeutung
- 16. IEnumerable <T> VS IList <T> VS IQueryable <T>
- 17. Rails ERb Best Practices (<% %> vs <% -%> vs <%- -%>)
- 18. Bedeutung von "<-" in Swift
- 19. <out T> vs <T> in Generics
- 20. Bedeutung von „? <=“ Operator
- 21. Bedeutung von >> in print-Anweisung
- 22. Was bedeutet <$> in Haskell?
- 23. << - Bedeutung in Ruby
- 24. XSD Formatierung <element><complexType> vs <complex /><element/>
- 25. Bedeutung von - <? Xml version = "1.0" encoding = "utf-8"?>
- 26. Die Bedeutung von Tilde in Haskell-Typen (Typ Gleichheit)
- 27. "String.h" VS <string.h>
- 28. SortedSet <T> vs HashSet <T>
- 29. Ivy: <ivy: settings> vs. <ivy: configure>
- 30. bash: $ [<Arithmetik-Ausdruck>] vs. $ ((<Arithmetik-expression>))
'<=' ist nur der "kleiner als oder gleich" Operator/Funktion, nehme ich an? – Mephy
In Haskell weiß ich, dass => unterscheidet sich von -> aber ich bin mir nicht sicher, wie. Ich habe beide <= and => in Notation verwendet – McLeodx