haskell - 我的 sqrt 函数不会在 GHCi 中编译
问题描述
解决方案
(**) :: Floating a => a -> a -> a
只能应用于Floating
类型,并且还要求操作数和结果都具有相同的类型。
另一方面,您的类型签名说那x
是一个Int
(一个Int
不是类型类的成员),而且应该返回一个,所以这违反了的类型签名。Floating
x ** 0.5
Float
(**)
我们可以将类型类成员的任何类型转换为Integral
类型类成员的任何Num
类型fromIntegral :: (Integral a, Num b) => a -> b
。在这种情况下fromIntegral
,将因此将 a 转换Int
为 a Float
:
sqrt' :: Int -> Float
sqrt' x = fromIntegral x ** 0.5
推荐阅读
- javascript - 为什么 require("perf_hooks") 失败?
- swiftui - UIActivityViewController 能否与 SwiftUI 一起正常工作 - 看起来真的有问题
- avplayer - AVPlayer(苹果)中的等效带宽表(ExoPlayer,Android)是什么
- magento - Magento 2.4:执行命令会消耗整个内存并挂起系统
- sql - 在 SQL Server 中动态选择结果集到多行
- excel - 如何在 MS Excel 中使用 VLOOKUP 函数
- css - 使用 Bootstrap 组织应用程序 SASS 文件
- python - 如何最好地从大型数据框中提取特定值
- c - 二进制中点的不同表示
- azure - 有没有办法使用 Company Communicator App 向不同租户中的用户发送通知