在我运行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.
在字符串中,我想在字符串中查找正则表达式的所有匹配项,保存匹配项并替换匹配项.有没有一个光滑的方式来做到这一点?
例:
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) 从源代码构建perl时,可以选择make test在最终目标中安装perl之前运行.
是否有可能make test在安装perl之后做相同的操作?
请注意,我没有原始来源.我想要做的是为我安装的相同版本的perl下载源tar存档,然后针对已安装的perl运行测试(来自源tar存档).
可能/不可能?易/难?我该怎么做?
我正在安装gitlabhq,并且在Gemfile中有对某些资源的'git:// ...'的引用.
但是,我在公司防火墙后面,所以我必须使用http://.
我可以手动编辑Gemfile,但我想知道是否有另一种方法告诉bundler使用http://用于git存储库?
如果发出编译警告,我希望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.我希望能够检测到发出了编译警告 - 最好是设置退出状态.
以下程序类型检查我是否在命令行上指定它(例如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].
我能做些什么吗?是否存在交互模式与批处理模式不同的其他情况?
这是一种解决欧拉问题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) 我想弄清楚如何在惰性列表的计算中使用可变状态.
例如,这是一个使用可变数组(源)实现的天真的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) 在这段代码中:
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)
这是怎么回事???我希望处理程序处理任何异常。
我有兴趣获取特定语言集的 github 存储库数量(如果可能的话,包含历史数据。)
以下是我尝试自己开始收集统计数据的一些事情:
https://github.com/search?q=language%3Aperl&type=&ref=simplesearch
https://api.github.com/legacy/repos/search/KEYWORD?language=perl
但不幸的是,这似乎需要关键字才能获得任何结果。另外,我只需要一个计数,而不需要每个存储库上的元数据。
我也对历史数据感兴趣,而且这些统计数据似乎已经在某个地方可用了。
关于通过语言和/或历史数据获取回购计数的更好方法有什么想法吗?