2013-03-11 10 views
8

Wo finde ich die fromRealFrac Funktion? Laut sollte die Funktion existieren und von ein wenig googeln, ich nehme an, es sollte in Prelude sein - aber ghci beklagt sich, dass es nicht in Reichweite ist.Wo ist fromRealFrac?

Ich benutze fromRational . toRational vorläufig, wie nach dem sanften Intro das ist, wie fromRealFrac definiert werden soll.

+1

Meine Vermutung ist, dass diese Funktion Post-Haskell 98 (neu) verschoben wurde. –

+1

Das ist höchstwahrscheinlich ein Tippfehler im sanften Intro. Du willst 'realToFrac'. – augustss

Antwort

19

Die früher als "fromRealFrac" bekannte Funktion wurde im Haskell 98 Report in "realToFrac" umbenannt.

Im Haskell 1.4 Prelude wir

fromRealFrac :: (RealFrac a, Fractional b) => a -> b 
fromRealFrac = fromRational . toRational 

jedoch finden, die von Haskell 98 als

realToFrac  :: (Real a, Fractional b) => a -> b 
realToFrac  = fromRational . toRational 

Diese Änderung aufgeführt ist in der Haskell 98 Report Errata bekannt ist:

[Apr 2001] Page 84, Section 6.4, Fig 7; and bottom of page 86, Section 6.4.6. 
    fromRealFrac :: (RealFrac a, Fractional b) => a -> b 
should be replaced by 
    realToFrac :: (Real a, Fractional b) => a -> b 

Die nächstgelegene befehle ich könnte finden, war this in th e Bericht Repo.

+0

Ich frage mich, warum es niemanden interessiert, das "sanfte Intro" auf der offiziellen Haskell-Website zu reparieren. –

2

Gemäß Hoogle ist no function named fromRealFrac in den Standardbibliotheken enthalten. Vielleicht ist es eine Funktion, die sich die Autoren des sanften Intro erfunden haben? Wenn man sich den Link anschaut, deutet das darauf hin, dass es irgendwo in einer Bibliothek ist ... Ich bin auch verwirrt.