小编Gmp*_*Gmp的帖子

Haskell:不能使用getCPUTime

我有:

main :: IO ()
main = do
     iniciofibonaccimap <- getCPUTime
     let fibonaccimap = map fib listaVintesete
     fimfibonaccimap <- getCPUTime
     let difffibonaccimap = (fromIntegral (fimfibonaccimap - iniciofibonaccimap)) / (10^12)
     printf "Computation time fibonaccimap: %0.3f sec\n" (difffibonaccimap :: Double)

listaVintesete :: [Integer]
listaVintesete = replicate 100 27

fib :: Integer -> Integer
fib 0 = 0
fib 1 = 1
fib n = fib (n-1) + fib (n-2)
Run Code Online (Sandbox Code Playgroud)

*Main> main
Computation time fibonaccimap: 0.000 sec
Run Code Online (Sandbox Code Playgroud)

我不明白为什么会这样.帮帮我谢谢.

benchmarking haskell lazy-evaluation

4
推荐指数
2
解决办法
851
查看次数

基准测试和懒惰评估

这里有什么不对,懒惰评价呢?

teste.hs

module Main where  

import Control.Parallel(par,pseq)  
import Text.Printf  
import Control.Exception  
import System.CPUTime  
import Data.List  
import IO  
import Data.Char  
import Control.DeepSeq  

--Calcula o tempo entre o inicio e o fim de rodagem do programa  
time :: IO t -> IO t  
time a = do  
    start <- getCPUTime  
    v <- a
    end   <- getCPUTime  
    let diff = (fromIntegral (end - start)) / (10^12)  
    printf "Computation time: %0.3f sec\n" (diff :: Double)  
    return v  

learquivo :: FilePath -> IO ([[Int]])  
learquivo …
Run Code Online (Sandbox Code Playgroud)

haskell lazy-evaluation

2
推荐指数
1
解决办法
243
查看次数

错误:无法将预期类型Eval [a]'与推断类型()匹配

这个错误是什么?

1.hs:41:30:
无法匹配预期的类型Eval [a]' against inferred type()

module Main where   

import Control.Parallel(par,pseq)   
    import Text.Printf   
    import Control.Exception   
    import System.CPUTime   
    import Data.List   
    import IO   
    import Data.Char   
    import Control.DeepSeq  
    import Control.Parallel.Strategies 

--Calcula o tempo entre o inicio e o fim de rodagem do programa   
    time :: IO t -> IO t   
    time a = do   
        start <- getCPUTime   
        v <- a 
        end   <- getCPUTime   
        let diff = (fromIntegral (end - start)) / (10^12)   
        printf "Computation time: %0.3f sec\n" (diff :: Double) …
Run Code Online (Sandbox Code Playgroud)

haskell

2
推荐指数
1
解决办法
199
查看次数

如何强制评价这个表达式?

module Main where

import Control.Parallel(par,pseq)
import Text.Printf
import Control.Exception
import System.CPUTime
import Data.List
import IO
import Data.Char
import Control.DeepSeq

time :: IO t -> IO t
time a = do
   start <- getCPUTime
   v <- a
   end <- getCPUTime
   let diff = (fromIntegral (end - start)) / (10^12)
   printf "Computation time: %0.3f sec\n" (diff :: Double)
   return v

learquivo :: FilePath -> IO ([[Int]])
learquivo s = do
   content <- readFile s
   return (read content)

main :: IO ()
main …
Run Code Online (Sandbox Code Playgroud)

haskell lazy-evaluation

1
推荐指数
1
解决办法
1284
查看次数

在haskell中如何做到这一点?

我怎么能在haskell中这样做?

equal(S,S) -> true;
equal(S1, S2) -> {differ, S1, S2}.
Run Code Online (Sandbox Code Playgroud)

erlang haskell

1
推荐指数
1
解决办法
459
查看次数

标签 统计

haskell ×5

lazy-evaluation ×3

benchmarking ×1

erlang ×1