小编Eri*_*ikR的帖子

卸载Haskell平台

在我运行configure后,在/ usr/local下将目录作为haskell-platform(由说明建议)创建为/ usr/loca,但是直到稍后才注意到,我拼错了Prefix.我把它移到了正确的位置,而不是把一个munged目录留在那里.当然,这一切都破了.事实证明/ usr/loca遍布整个地方.

然后我将Synaptic删除了ghc6(这是ubuntu 10.04,并且说明当天运行6.12.1/2010.1).当我重新安装时,它仍然认为软件包在/ usr/loca上?我甚至删除了package.cache,但是在文件路径中使用/ usr/loca重新创建了它,即使我在/ usr/local上使用正确的路径运行configure也是如此.

这个前缀来自哪里?在这一点上,我会尽快摆脱整个事情.我在哪里寻找要删除的点点滴滴?没有wiki或docs讨论如何摆脱这件事.Mac发行版中似乎有一个卸载程序,但我找不到*nix.

haskell-platform

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

perl:全局匹配,保存和替换正则表达式的最佳方式

在字符串中,我想在字符串中查找正则表达式的所有匹配项,保存匹配项并替换匹配项.有没有一个光滑的方式来做到这一点?

例:

my $re = qr{\wat};
my $text = "a cat a hat the bat some fat for a rat";
... (substitute $re -> 'xxx' saving matches in @matches)
# $text -> 'a xxx a xxx the xxx some xxx for a xxx'
# @matches -> qw(cat hat bat fat rat)
Run Code Online (Sandbox Code Playgroud)

我试过了,@matches = ($text =~ s{($re)}{xxx}g)但它给了我一个数.

我是否必须在模式的末尾添加一些可执行代码$re

更新:这是一个使用代码执行扩展模式的方法(?{ ... }):

use re 'eval';  # perl complained otherwise
my $re = qr{\wat};
my …
Run Code Online (Sandbox Code Playgroud)

regex perl

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

安装后测试perl

从源代码构建perl时,可以选择make test在最终目标中安装perl之前运行.

是否有可能make test在安装perl之后做相同的操作?

请注意,我没有原始来源.我想要做的是为我安装的相同版本的perl下载源tar存档,然后针对已安装的perl运行测试(来自源tar存档).

可能/不可能?易/难?我该怎么做?

perl

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

捆绑使用http:而不是git:?

我正在安装gitlabhq,并且在Gemfile中有对某些资源的'git:// ...'的引用.

但是,我在公司防火墙后面,所以我必须使用http://.

我可以手动编辑Gemfile,但我想知道是否有另一种方法告诉bundler使用http://用于git存储库?

ruby git gem bundler

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

如果perl -cw发出警告,则设置退出状态

如果发出编译警告,我希望perl -cw ...返回非零退出状态.

例如假设a.pm是文件:

use warnings;
asd;
Run Code Online (Sandbox Code Playgroud)

然后perl -cw a.pm报道:

Unquoted string "asd" may clash ...
Useless use of a constant in void context ...
a.pm syntax OK
Run Code Online (Sandbox Code Playgroud)

并且退出状态设置为0.我希望能够检测到发出了编译警告 - 最好是设置退出状态.

perl

5
推荐指数
2
解决办法
765
查看次数

ghci - 在交互模式下急切的编译?

以下程序类型检查我是否在命令行上指定它(例如ghci file.hs):

import Data.Ratio
foo = let x = [1..]
          y = (1%2) + (head x)
       in y
Run Code Online (Sandbox Code Playgroud)

但是,如果我以交互方式输入它,我将收到类型错误:

Prelude> import Data.Ratio
Prelude Data.Ratio> let x = [1..]
Prelude Data.Ratio> let y = (1%2) + (head x)
<interactive>:1:23:
    Couldn't match expected type `Ratio a0' with actual type `Integer'
Run Code Online (Sandbox Code Playgroud)

它似乎x正在急切地打字,[Integer]而不是更普遍的(Num t, Enum t) => [t].

我能做些什么吗?是否存在交互模式与批处理模式不同的其他情况?

haskell ghci

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

Euler 43 - 是否有一个monad来帮助写这个列表理解?

这是一种解决欧拉问题43的方法(如果没有给出正确答案,请告诉我).是否有monad或其他合成糖可以帮助跟踪notElem条件?

toNum xs = foldl (\s d -> s*10+d) 0 xs

numTest xs m = (toNum xs) `mod` m == 0

pandigitals = [ [d0,d1,d2,d3,d4,d5,d6,d7,d8,d9] |
                d7 <- [0..9],
                d8 <- [0..9], d8 `notElem` [d7],
                d9 <- [0..9], d9 `notElem` [d8,d7],
                numTest [d7,d8,d9] 17,
                d5 <- [0,5],  d5 `notElem` [d9,d8,d7],
                d3 <- [0,2,4,6,8], d3 `notElem` [d5,d9,d8,d7],
                d6 <- [0..9], d6 `notElem` [d3,d5,d9,d8,d7],
                numTest [d6,d7,d8] 13,
                numTest [d5,d6,d7] 11,
                d4 <- [0..9], d4 `notElem` [d6,d3,d5,d9,d8,d7],
                numTest [d4,d5,d6] 7,
                d2 …
Run Code Online (Sandbox Code Playgroud)

monads haskell list-comprehension

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

使用可变状态计算的惰性列表?

我想弄清楚如何在惰性列表的计算中使用可变状态.

例如,这是一个使用可变数组()实现的天真的Eratosthenes Sieve :

import Control.Monad.ST
import Data.Array.ST
import Data.Array.Unboxed
import Control.Monad
import Data.List

prime :: Int -> UArray Int Bool
prime n = runSTUArray $ do
    arr <- newArray ( 2 , n ) True :: ST s ( STUArray s Int Bool )
    forM_ ( takeWhile ( \x -> x*x <= n ) [ 2 .. n ] ) $ \i -> do
        ai <- readArray arr i
        when ( ai  ) $ forM_ [ i^2 …
Run Code Online (Sandbox Code Playgroud)

state haskell mutable lazy-evaluation

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

使用 `handle` 产生的歧义类型变量

在这段代码中:

import System.Posix.Files
import Control.Exception

safeStat :: FilePath -> IO (Maybe FileStatus)
safeStat path =
  handle (\_ -> return Nothing) (getFileStatus path >>= (return . Just))
Run Code Online (Sandbox Code Playgroud)

我收到此错误(在 ghci 中):

Ambiguous type variable `e0' in the constraint:
  (Exception e0) arising from a use of `handle'
...
Run Code Online (Sandbox Code Playgroud)

我可以通过执行以下操作来消除错误:

nothing :: IOException -> Maybe a
nothing _ = Nothing

safeStat :: FilePath -> IO (Maybe FileStatus)
safeStat path =
  handle (return . nothing) (getFileStatus path >>= (return . Just))
Run Code Online (Sandbox Code Playgroud)

这是怎么回事???我希望处理程序处理任何异常。

haskell exception-handling

5
推荐指数
2
解决办法
847
查看次数

github 存储库按语言(和历史数据)计数?

我有兴趣获取特定语言集的 github 存储库数量(如果可能的话,包含历史数据。)

以下是我尝试自己开始收集统计数据的一些事情:

  1. 屏幕抓取页面如下:

https://github.com/search?q=language%3Aperl&type=&ref=simplesearch

  1. 使用github API:

https://api.github.com/legacy/repos/search/KEYWORD?language=perl

但不幸的是,这似乎需要关键字才能获得任何结果。另外,我只需要一个计数,而不需要每个存储库上的元数据。

我也对历史数据感兴趣,而且这些统计数据似乎已经在某个地方可用了。

关于通过语言和/或历史数据获取回购计数的更好方法有什么想法吗?

github github-api

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