小编Vel*_*ost的帖子

真实世界的Haskell代码没有编译?

我正在尝试在Real World Haskell中编译一些代码 - 第24章LineCount.hs.

我没有对代码进行任何更改.

但是,当我这样做时:

ghc -O2 --make -threaded LineCount.hs
Run Code Online (Sandbox Code Playgroud)

(按照书中的说明),我得到的信息是:

MapReduce.hs:6:7: Not in scope: `rnf'
Run Code Online (Sandbox Code Playgroud)

我可能做错了什么?

快速搜索显示,过去的包并行和严格并发存在一些问题,重新安装它们可以解决问题.但是,我试过了,它没有用.此外,值得注意的是,该问题已于2010年某个时候修复:https: //groups.google.com/forum/?fromgroups =#!msg/happs/gOieP4xfpNc/nrasm842JlUJ

注意:在同一章中编译其他文件时,我会收到各种其他错误.例如,在编译Strat.hs时,我得到:模块Control.Parallel.Strategies' does not exportparZipWith'.在编译LineChunks.hs时,我得到:Module Control.Parallel.Strategies' does not exportrnf'.

老实说,作为一名新手Haskell程序员,一旦我开始修改代码,我预计会遇到麻烦 - 但我没想到书中的代码有问题!

haskell

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

在图像上找到3x3滑动窗口

我有一张图片.

我想为图像中的每个像素获得3x3窗口(相邻像素).

我有这个Python代码:

for x in range(2,r-1,1):
    for y in range(2,c-1,1):
        mask5=numpy.array([cv.Get2D(copy_img,x-1,y-1),cv.Get2D(copy_img,x-1,y),cv.Get2D(copy_img,x-1,y+1),cv.Get2D(copy_img,x,y-1),cv.Get2D(copy_img,x,y),cv.Get2D(copy_img,x,y+1),cv.Get2D(copy_img,x+1,y-1),cv.Get2D(copy_img,x+1,y),cv.Get2D(copy_img,x+1,y+1)])
        cent=[cv.Get2D(copy_img,x,y)]
Run Code Online (Sandbox Code Playgroud)

mask5是3x3窗口.cent是中心像素.

有没有更有效的方法来做到这一点 - 即使用map,iterators - 除了我使用的两个嵌套循环之外的任何东西?

python opencv image-processing

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

做MapReduce的最佳功能语言?

我正在为一门课程做一个作业,这要求我用函数式语言实现一个并行的MapReduce引擎,然后用它来解决某些简单的问题.

你认为我应该使用哪种功能语言?

这是我的要求:

  • 应该相对容易学习,因为我只有大约2周的时间来完成这项任务.
  • 具有能够在网络上找到现有的MapReduce实现-我当然也不会在一般使用开源代码或互联网资源禁止我.
  • 应该适合这个问题,并且是一种总体上值得学习的语言(一种相对流行的语言).

我目前正在考虑Haskell和Clojure,但这两种语言对我来说都是新的 - 我不知道这些语言是否真的适合这种情况.

haskell functional-programming mapreduce clojure

6
推荐指数
2
解决办法
3399
查看次数

将单词列表解析为树

我有一个单词列表.例如:

reel
road
root
curd
Run Code Online (Sandbox Code Playgroud)

我想以反映以下结构的方式存储此数据:

Start -> r -> e -> reel
           -> o -> a -> road
                   o -> root
         c -> curd
Run Code Online (Sandbox Code Playgroud)

对我来说很明显,我需要实现一棵树.从这棵树,我必须能够轻松获得统计信息,如节点的高度,节点的后代数,搜索节点等.添加节点应该"自动"将其添加到树中的正确位置,因为此位置是唯一的.

它还希望能够以实际图形树的形式可视化数据.由于树将变得庞大,我需要在可视化上进行缩放/平移控制.当然,漂亮的可视化总是比丑陋的更好.

有没有人知道Python包可以让我简单地实现这一切?自己编写代码需要很长时间.您认为http://packages.python.org/ete2/适合此任务吗?

我正在使用Python 2.x,顺便说一下.


我发现NLTK有一个特里类 - nltk.containers.trie.这对我来说很方便,因为我已经使用了NLTK.有谁知道如何使用这个类?我在任何地方都找不到任何例子!例如,如何在trie中添加单词?

python tree parsing data-structures

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

最快速的字典匹配

我将不得不在Python中执行类似拼写检查的操作,如下所示:

我有一个巨大的单词列表(让我们称之为词典).我现在给了一些文本(我们称之为样本).我必须在词典中搜索每个样本单词.如果我找不到它,那个样本字就是错误.

简而言之 - 一个蛮力拼写检查器.但是,对每个样本字线性搜索词典必然会很慢.有什么更好的方法呢?

复杂因素是样本和词典都不是英文的.它是一种语言而不是26个字符,可以有超过300个 - 以Unicode格式存储.

任何算法/数据结构/并行化方法的建议都会有所帮助.以低于100%的准确度为代价的高速算法将是完美的,因为我不需要100%的准确度.我知道Norvig的算法,但它似乎是英语特有的.

python algorithm optimization spell-checking data-structures

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

创建单词及其句子上下文的字典

我有一个包含数十万个单词的 Python 列表。单词按照它们在文本中的顺序出现。

我希望为每个单词创建一个字典,该字典与包含该单词的字符串相关联,并且在该单词之前和之后出现 2 个(比如说)单词。

例如列表:“This”“is”“an”“example”“sentence”

应该成为字典:

"This" = "This is an"
"is" = "This is an example"
"an" = "This is an example sentence"
"example" = "is an example sentence"
"sentence" = "an example sentence"
Run Code Online (Sandbox Code Playgroud)

就像是:

WordsInContext = Dict()
ContextSize = 2
wIndex = 0
for w in Words:
    WordsInContext.update(w = ' '.join(Words[wIndex-ContextSize:wIndex+ContextSize]))
    wIndex = wIndex + 1
Run Code Online (Sandbox Code Playgroud)

这可能包含一些语法错误,但即使这些错误得到纠正,我确信这将是一种极其低效的方法。

有人可以建议一个更优化的方法吗?

python

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

查找两个字符串不同的位置

我有两个非常长的单词序列.

我需要找到他们不同的地方.例如,如果输入是

1st sequence: A B C D E F G
2nd sequence: A X D Y Z W G
Run Code Online (Sandbox Code Playgroud)

(这里的每个字符代表一个单词)

输出应该是:

B C -> X
E F -> Y Z W
Run Code Online (Sandbox Code Playgroud)

我的想法:我可以有两个序列的索引.最初,两者都指向A.增加两个指数.现在第一个索引指向B,第二个索引指向X.我现在可以搜索整个第二个序列中的B.没有找到它,我可以搜索整个第二个序列中的C,然后搜索D.我会找到一个D,并且因此可以解决问题.

显然,这种"蛮力"方法很糟糕.

什么是更好的方法?

我正在用Python编写我的代码,并使用NLTK,所以如果可以使用内置的NLTK功能部分或完全解决这个问题,那么它将更快(实现).

python string algorithm pattern-matching nltk

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

从python中的列表创建位置映射字典

我有很多单词的列表.

从中,我想创建一个字典,其中包含列表中的每个唯一单词作为键,以及它作为键的值出现在(列表索引)中的第一个位置.

有没有一种有效的方法来做到这一点?

python

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