2012-04-22 7 views
5

Ich habe ein Programm, das sowohl Int als auch Integer verwendet, weil einige der Funktionen Ergebnisse liefern, die ziemlich groß sind. Ich bin es leid, fromIntegral überall zu verwenden, und ich fragte mich, ob es einen Weg gibt, Haskell zu veranlassen, den Unterschied zwischen Int und Integer nach Kompilation zu ignorieren.Kann Haskell Ints vs. Integers ignorieren?

+4

Nein, gibt es nicht. Das Ignorieren der Tatsache, dass sie unterschiedliche Typen und unterschiedliche Eigenschaften sind, wäre in einer Sprache, die ebenso wie Haskell typisiert ist, böse. Ich stimme zu, dass es manchmal schmerzhaft ist, aber das Ignorieren des Unterschieds wäre schlimmer; und den ganzen Punkt der Typsicherheit vermissen, die Haskell bietet. –

+8

Nein, gibt es nicht. Und es ist eine gute Sache: Typ Sicherheit. Sie können jedoch eine Konvertierung mit einem kürzeren Namen definieren :) –

+3

In GHC wird 'Integer' intern' Int' so lange wie möglich verwenden, daher ist es nicht unbedingt sinnvoll, 'Int' zu verwenden in diesem Fall. – geekosaur

Antwort

13

Lösung: Entfernen Sie die Int s aus Ihrem Programm und verwenden Sie einfach alle Integer s. Wie von Geekosaur bemerkt, können Sie the generic functions from Data.List (z. B. genericLength) verwenden. Wenn Sie uns Ihren spezifischen Programmcode zur Verfügung stellen, könnten wir konkretere Vorschläge machen.