小编ДМИ*_*КОВ的帖子

在F#中将float转换为int

可有人请解释为什么int (0.4 * 10.0)4int ((2.4 - 2.0) * 10.0)3

然后还请解释如何获得4.即我真的必须这样做int (System.Math.Round((2.4 - 2.0) * 10.0))吗?

对于应该如此简单的事情来说,这太丑了.

f#

9
推荐指数
4
解决办法
9618
查看次数

在Haskell中设置argv [0]?

有没有办法argv[0]在Haskell程序中设置(比如用ghc编译的程序)?

我在System.Environment中找到了getProgNamewithProgName函数,但它似乎没有改变什么ps报告(Ubuntu).

import System.Environment

main =
  do name <- getProgName
     putStrLn $ "Hello, my name is " ++ name
     withProgName "other" $ do
       newname <- getProgName
       putStrLn $ "Name now set to " ++ newname
       putStrLn "What is your name: "
       -- allow time to run ps
       ans <- getLine
       putStrLn $ "Pleased to meet you, " ++ ans
Run Code Online (Sandbox Code Playgroud)

ubuntu haskell ps argv

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

在Haskell中使用元组定义递归数据类型

我在Haskell中定义新的数据类型时遇到了麻烦.

我正在尝试创建一个数据类型NumPair,它将是一个包含两个整数或整数和另一个整数的元组NumPair.

例如,(2, 2), (0, 5), (1, (2, 3)) and (0, (4, (3, 121)))一切都应该有效NumPairs.

这是我为了尝试这样做而编写的代码:

data NumPair = (Int, Int) | (Int, NumPair) deriving (Eq, Show)
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么这不起作用,我应该做什么呢,拜托?

haskell

9
推荐指数
2
解决办法
5817
查看次数

在编译时或运行时生成随机字符串,并在程序的其余部分中使用它

最好的方法是什么?unsafePerformIO?模板Haskell?别的什么?我从来没有使用过这些,所以我不知道使用它们的许多细节.

请注意,程序将在每次运行时进行编译,因此在编译时或运行时生成字符串无关紧要.我还需要在整个代码中的大量位置使用此字符串,因此我无法以"正确"方式执行此操作并将其作为IO操作,这将需要将太多其他代码放入IO monad中.

io haskell template-haskell unsafe-perform-io

9
推荐指数
3
解决办法
3264
查看次数

检查导入是否冗余

有没有办法解析haskell源和给定的导入检查它是否是多余的?

haskell-src 应该是有用的,但我在这里找不到类似的东西.

haskell

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

为什么foldBack的签名与F#中的fold折扣有很大不同?

我至少有两件事情我不明白:

  • 从左侧到右侧折叠的重构不仅需要在签名上进行大量更改,而且在每个地方都需要依赖于文件夹功能
  • 在没有翻转参数的情况下,无法将其链接到列表

List.foldBack : ('T -> 'State -> 'State) -> 'T list -> 'State -> 'State

List.fold : ('State -> 'T -> 'State) -> 'State -> 'T list -> 'State

任何好的理由为什么会有人把所有参数反向的签名foldBack相比fold

f#

9
推荐指数
2
解决办法
768
查看次数

Log4cplus真的这么慢吗?

我一直在用C++测试我的日志记录子系统的三个选项.一个是Log4cplus,一个是Pantheios,最后一个是我们自己编写的简单日志库.

Log4cplus比其他两个慢得多.以下是记录1,000,000个日志条目的结果:

  • log4cplus:200秒编辑:设置缓冲区大小减少到120
  • mylogger:55秒
  • Pantheios:35

我想知道我是否缺少任何性能调整.

我应该补充一点,我总是使用根记录器,我正在记录文件和记录: LOG4CPLUS_INFO(rootLogger, "Replace me with the text!");

谢谢,Reza

c++ performance logging pantheios log4cplus

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

shell脚本中$*的含义是什么

$*shell脚本中的确切含义是什么?

例如,请考虑以下代码段

$JAVA_HOME/bin/java/com/test/Testclass $*
Run Code Online (Sandbox Code Playgroud)

unix linux bash shell special-characters

8
推荐指数
3
解决办法
8252
查看次数

目录树的广度优先遍历不是懒惰的

我尝试遍历目录树.天真的深度优先遍历似乎不会以懒惰的方式生成数据并且耗尽内存.我接下来尝试了广度优先的方法,它显示了同样的问题 - 它使用了所有可用的内存然后崩溃.

我的代码是:

getFilePathBreadtFirst :: FilePath -> IO [FilePath]
getFilePathBreadtFirst fp = do
  fileinfo <- getInfo fp 
  res :: [FilePath]  <- if isReadableDirectory fileinfo
          then do
                children  <- getChildren fp 
                lower    <-  mapM getFilePathBreadtFirst children  
                return (children ++  concat lower)
           else return [fp]        -- should only return the files? 
  return res 

getChildren :: FilePath -> IO [FilePath]
getChildren path = do 
          names <- getUsefulContents path
          let namesfull = map (path </>) names
          return namesfull

testBF fn = do  -- …
Run Code Online (Sandbox Code Playgroud)

haskell

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

git clean和system rm之间的区别

有什么区别:

git clean -f temp1.txt
Run Code Online (Sandbox Code Playgroud)

rm temp1.txt
Run Code Online (Sandbox Code Playgroud)

Git doc说:

git-clean - 从工作树中删除未跟踪的文件

那么这样做的重点是什么,而不仅仅是系统命令呢?

git

8
推荐指数
3
解决办法
1093
查看次数