小编Sar*_*rcy的帖子

Haskell - 缓存函数调用的简单方法

我有以下功能:

millionsOfCombinations = [[a, b, c, d] | 
  a <- filter (...some filter...) someListOfAs, 
  b <- (...some other filter...) someListOfBs, 
  c <- someListOfCs, d <- someListOfDs]

aLotOfCombinationsOfCombinations = [[comb1, comb2, comb3] | 
  comb1 <- millionsOfCombinations, 
  comb2 <- millionsOfCombinations,
  comb3 <- someList,
  ...around 10 function calls to find if
    [comb1, comb2, comb3] is actually useful]
Run Code Online (Sandbox Code Playgroud)

评估millionsOfCombinations需要40秒.在一个非常快的工作站上.评估aLotOfCombinationsOfCombinations!! 0花了2天:-(

我怎样才能加快这段代码的速度?到目前为止,我有两个想法 - 使用分析器.myapp +RTS -sstderr在使用GHC编译后尝试运行,但得到一个空白的屏幕,并且不想等待它完成的几天.

第二个想法是以某种方式缓存millionsOfCombinations.我是否正确理解对于每个值aLotOfCombinationsOfCombinations,millionsOfCombinations多次评估?如果是这样,我该如何缓存结果?显然我刚刚开始学习Haskell.我知道有一种方法可以用monad进行调用缓存,但我仍然不理解这些东西.

performance haskell

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

WinHugs - 如何声明变量和函数

我2小时前下载了WinHugs,仍然无法弄清楚如何声明简单的东西.我想按照书"7种语言在7个星期",但这样的东西let x = 10,并double x = x * 2给出了语法错误.

haskell

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

使用ReSharper在Visual Studio中运行方法

我刚看了一个会议演示录音.主持人正在使用VS 2010和ReSharper.他有一个快捷方式来运行光标所在的方法.怎么做?

谢谢

resharper visual-studio-2010

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