Frage

ich einen Fehler in GHCI erhalten, wenn ich versuche, eine neue Art zu definieren:

Prelude> data Point = Pt Int Int
<interactive>:1:0: parse error on input `data'
Prelude> let data Point = Pt Int Int
<interactive>:1:4: parse error on input `data'

Was mache ich falsch?

War es hilfreich?

Lösung

titaniumdecoy, ich erinnere mich, dass mit dieser Art von GHCi Geheimnis geholfen, wenn ich die häufig gemacht Punkt gelernt, dass Dinge wie ‚läßt Quadrat x = x * x‘ innerhalb der GHCi Schreiben wie ist let a = f b mit do Notation in der IO Monade zu schreiben - - sagen wir in dieser Art Beispiel:

palindromize :: IO ()
palindromize = do
  a <- readFile "foo.txt"
  let b = reverse a
  putStrLn (a ++ b)

In ähnlicher Weise, wenn Sie einen Ausdruck in der GHCi neu zu definieren, es ist eine Art des folgend in do Notation wie zu tun, was durchaus legitim ist:

makeMess :: IO ()
makeMess = do
   a <- readFile "foo.txt"
   let b = reverse a
   putStrLn (a ++ b)
   let b = a
   putStrLn (a ++ b)

Niemand würde einen Datentyp deklarieren in der Mitte eine solche Sequenz, aber wäre es an anderer Stelle im Modul tun. Ich hätte gedacht, dass es irgendeine Art von theoretischer Einwand war, aber Don S. Bemerkung deutet darauf hin, es gibt nicht ein.

Andere Tipps

Es ist

Nur für historische Referenz, die HBI Haskell interaktive Umgebung erlaubt Voll Haskell in der Befehlszeile, einschließlich Typen, Klassen und so weiter. Es gibt keine a priori GHCi kann in ähnlicher Weise nicht funktionieren, und die Benutzer können eine Front-End zu GHC-API schreiben, die diese ... unterstützt

GHCI nicht zulässt, dass Sie Arten von interaktiven Eingabe definieren -. Stattdessen müssen Sie Ihre Typdefinition in einer Datei setzen und die Datei in GHCI :load

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top