【发布时间】:2019-06-09 06:51:26
【问题描述】:
作为 Haskell 的初学者,我正在尝试在 ghc 编译器中使用 -Wall 选项时让我的所有练习代码在没有警告的情况下编译。我也在尝试理解“$”和“.”的用法。避免使用过多的括号。
在下面的代码中
module Helpers (intSqrt1, intSqrt2) where
intSqrt1 :: Int -> Int
intSqrt1 x = truncate $ sqrt $ fromIntegral x
intSqrt2 :: Int -> Int
intSqrt2 x = truncate ( sqrt (fromIntegral x) :: Double)
intSqrt1 给出警告默认以下约束以键入“Double”。我可以通过将结果从 sqrt 强制转换为 Double(参见 intSqrt2)来抑制警告,但代价是添加两对括号。
有没有办法在这个函数中两全其美:即简洁的代码和抑制警告?
【问题讨论】:
-
我不熟悉那个警告,不能立即看出是什么原因造成的,但从简洁的代码来看,编写函数(imo)最惯用的方法就是@ 987654322@
标签: haskell