2013-03-11 151 views
8

我在哪里可以找到fromRealFrac功能?根据the gentle intro该函数应该存在,并从一些谷歌搜索,我认为它应该在前奏 - 但ghci抱怨说,它不在范围内。哪里来自RealFrac?

我暂时使用fromRational . toRational,因为按照温柔的介绍,fromRealFrac是如何定义的。

+1

我的猜测是这个函数被(重新)移动后哈斯克尔98. – 2013-03-11 03:59:50

+1

这很可能是一个温和的介绍错字。你想要'realToFrac'。 – augustss 2013-03-11 09:35:04

回答

19

以前称为“fromRealFrac”的函数在Haskell 98报告中重命名为“realToFrac”。

Haskell 1.4 Prelude我们发现

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

然而,Haskell 98它被称为

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

这种变化列在Haskell 98 Report Errata

[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 

最近提交我可以找到的是this e报告回购。

+0

我想知道为什么没有人会在官方的haskell网站上修复“温和的介绍”。 – 2017-01-04 00:27:59

2

根据Hoogle,标准库中有no function named fromRealFrac 也许这是温柔介绍的作者自己编写的一个函数? 查看链接后,他们肯定会建议它在图书馆的某个地方......我也很困惑。