可有人请解释为什么int (0.4 * 10.0)
是4
又int ((2.4 - 2.0) * 10.0)
是3
?
然后还请解释如何获得4
.即我真的必须这样做int (System.Math.Round((2.4 - 2.0) * 10.0))
吗?
对于应该如此简单的事情来说,这太丑了.
有没有办法argv[0]
在Haskell程序中设置(比如用ghc编译的程序)?
我在System.Environment中找到了getProgName
和withProgName
函数,但它似乎没有改变什么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) 我在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)
有人可以解释为什么这不起作用,我应该做什么呢,拜托?
最好的方法是什么?unsafePerformIO
?模板Haskell?别的什么?我从来没有使用过这些,所以我不知道使用它们的许多细节.
请注意,程序将在每次运行时进行编译,因此在编译时或运行时生成字符串无关紧要.我还需要在整个代码中的大量位置使用此字符串,因此我无法以"正确"方式执行此操作并将其作为IO操作,这将需要将太多其他代码放入IO monad中.
有没有办法解析haskell
源和给定的导入检查它是否是多余的?
haskell-src
应该是有用的,但我在这里找不到类似的东西.
我至少有两件事情我不明白:
List.foldBack : ('T -> 'State -> 'State) -> 'T list -> 'State -> 'State
List.fold : ('State -> 'T -> 'State) -> 'State -> 'T list -> 'State
任何好的理由为什么会有人把所有参数反向的签名foldBack
相比fold
?
我一直在用C++测试我的日志记录子系统的三个选项.一个是Log4cplus,一个是Pantheios,最后一个是我们自己编写的简单日志库.
Log4cplus比其他两个慢得多.以下是记录1,000,000个日志条目的结果:
我想知道我是否缺少任何性能调整.
我应该补充一点,我总是使用根记录器,我正在记录文件和记录:
LOG4CPLUS_INFO(rootLogger, "Replace me with the text!");
谢谢,Reza
$*
shell脚本中的确切含义是什么?
例如,请考虑以下代码段
$JAVA_HOME/bin/java/com/test/Testclass $*
Run Code Online (Sandbox Code Playgroud) 我尝试遍历目录树.天真的深度优先遍历似乎不会以懒惰的方式生成数据并且耗尽内存.我接下来尝试了广度优先的方法,它显示了同样的问题 - 它使用了所有可用的内存然后崩溃.
我的代码是:
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) 有什么区别:
git clean -f temp1.txt
Run Code Online (Sandbox Code Playgroud)
和
rm temp1.txt
Run Code Online (Sandbox Code Playgroud)
Git doc说:
git-clean
- 从工作树中删除未跟踪的文件
那么这样做的重点是什么,而不仅仅是系统命令呢?