Ich habe ein Typ-Synonym in Haskell gemacht:
%Vor%Dann habe ich seinen Typ überprüft:
%Vor% Natürlich weiß ich, dass Foo a
ein Typ-Synonym für [a]
ist, seit ich es gerade geschrieben habe.
Aber wenn ich eine Bibliothek verwende, die Foo Integer
zurückgibt, woher soll ich wissen, was Foo
ist?
Ich habe :t Foo
ohne Erfolg versucht.
Versuchen Sie Folgendes: :i Foo
:i
gibt Informationen über ein gebundenes Symbol.
:t
gibt die Typunterschrift für Ausdrücke an. (Deshalb funktionierte es nicht für dich - Foo
ist kein Ausdruck, wie eine Funktion oder ein Wert).
Beispiel:
%Vor%Und hier ist Bonusinformation:
:i
ist auch toll für ADTs, es gibt Ihnen die Konstruktoren und sagt Ihnen, welche Instanzen sie ableiten (natürlich von den importierten Modulen). Zum Beispiel:
Und es ist auch toll für Typklassen, zum Beispiel:
%Vor%Und, wie erwähnt, kann auch für Funktionen verwendet werden:
%Vor% Es ist fast genau wie :t
, nur dass es Ihnen auch sagt, in welchem Modul das Symbol definiert ist.
Warum also :t
? es ist flexibler. :i
funktioniert nur für gebundene Symbole. Z.B. :t (+5)
ist gültig. :i (+5)
ist nicht.
Tags und Links haskell