为什么 GHCi 在下面给出了错误的答案?
温室气体
?> ((-20.24373193905347)^12)^2 - ((-20.24373193905347)^24)
4.503599627370496e15
Run Code Online (Sandbox Code Playgroud)
蟒蛇3
>>> ((-20.24373193905347)**12)**2 - ((-20.24373193905347)**24)
0.0
Run Code Online (Sandbox Code Playgroud)
更新 我将按如下方式实现 Haskell 的 (^) 函数。
powerXY :: Double -> Int -> Double
powerXY x 0 = 1
powerXY x y
| y < 0 = powerXY (1/x) (-y)
| otherwise =
let z = powerXY x (y `div` 2)
in if odd y then z*z*x else z*z
main = do
let x = -20.24373193905347
print $ powerXY (powerXY x 12) 2 - powerXY x …Run Code Online (Sandbox Code Playgroud) 我想编写一个程序,它的主线程派生一个新线程进行计算并等待它完成一段时间。如果子线程没有在给定时间内完成,它就会超时并被杀死。我有以下代码。
import Control.Concurrent
fibs :: Int -> Int
fibs 0 = 0
fibs 1 = 1
fibs n = fibs (n-1) + fibs (n-2)
main = do
mvar <- newEmptyMVar
tid <- forkIO $ do
threadDelay (1 * 1000 * 1000)
putMVar mvar Nothing
tid' <- forkIO $ do
if fibs 1234 == 100
then putStrLn "Incorrect answer" >> putMVar mvar (Just False)
else putStrLn "Maybe correct answer" >> putMVar mvar (Just True)
putStrLn "Waiting for result or timeout"
result …Run Code Online (Sandbox Code Playgroud) 我对简单(单焦点)Haskell 程序有一些经验,但现在我正在尝试用 Haskell 编写更大的应用程序。我在构建应用程序时遇到问题。
比方说,我们有三个模块(概念)的应用程序- Main,Logic和AppIO。Main在启动程序和使用功能Logic和AppIO做的工作。Logic抽象应用程序逻辑,我们需要它的多个实现。使用哪种Logic实现Main由用户配置决定。AppIO用于与外界对话的函数。
我的Main模块有一个newtype App = App { unapp :: ReaderT r (ExceptT e m) a }monad 转换器。同样,Logic并AppIO拥有自己的 monad 变压器堆栈。我正在考虑在基础上创建一个App带有Logic和AppIO转换器的monad 转换器。
在这一点上,我有一些问题。
Logic并且AppIO拥有自己的 monad 变压器堆栈还是应该App在他们的类型签名中拥有?我不喜欢App使用模块类型,因为我认为模块应该相互不可知。Logic如果我不让它本身成为变压器,我将如何给出自己的状态?Logic并且在他们的转换器堆栈中AppIO …我对 Purescript 很陌生,所以这可能是一个天真的问题。
我想编写一个 Purescript 函数,该函数从浏览器上的 HTML 输入元素读取输入并将一些输出写入另一个 HTML 输入元素。
使用普通的 Javascript,它就像document.getElementById('output').value = myFun(document.getElementById('input'));. 我如何只用 Purescript 做到这一点?