我使用haddock并且不希望我的所有导出函数都显示在文档中.是否可以隐藏特定功能?我在http://www.haskell.org/haddock/doc/html/module-attributes.html找到了prune属性,但这不是我想要的,因为一些要导出的函数没有文档注释.
Kernighan和Ritchie 撰写的The C Programming Language一书,第二版在关于类型转换的章节中的第43页中说明:
的另一个例子
char,以int转换函数lower,其中单个字符映射到下壳体为ASCII字符集.如果字符不是大写字母,则lower返回不变.Run Code Online (Sandbox Code Playgroud)/* lower: convert c to lower case; ASCII only */ int lower(int c) { if (c >= 'A' && c <= 'Z') return c + 'a' - 'A'; else return c; }
它没有在文中明确提及,所以我想确保我理解正确:转换是在lower用类型变量调用函数时发生的char,不是吗?特别是,表达
c >= 'A'
Run Code Online (Sandbox Code Playgroud)
没有任何一个转换,从int到char,因为字符常量像'A'
作为被处理int内部从一开始,不是吗?编辑:或者这是否与charANSI C 有所不同(例如,字符常量被视为a ),本书涵盖了哪些内容?
我对以下段落如何与其后面的代码匹配感到困惑:
由于argv是指向指针数组的指针,因此我们可以操作指针而不是索引数组.下一个变体基于递增argv,它是指向char的指针,而argc倒计时:
#include <stdio.h>
/* echo command-line arguments; 2nd version */
main(int argc, char *argv[])
{
while (--argc > 0)
printf("%s%s", *++argv, (argc > 1) ? " " : "");
printf("\n");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
不char *argv[]只是一个指针数组?指向数组的指针不会被写成char *(*argv[])类似的东西吗?
作为旁注,通常我发现混合数组和指针的声明相当混乱,这是正常的吗?
http://en.wikipedia.org/wiki/Evaluation_strategy#Call_by_need说:
"按需调用是一个按名称调用的memoized版本,其中,如果评估函数参数,则存储该值以供后续使用. [...] Haskell是使用按需调用评估的最着名的语言."
但是,并不总是存储计算的值以便更快地访问(例如,考虑斐波纳契数的递归定义).我在#haskell问了一个人,答案是这个记忆是自动完成的"只在一个例子中,例如,如果你有'让foo = bar baz',foo将被评估一次".
我的问题是:实例究竟意味着什么,还有其他情况,而不是自动完成记忆的情况?
通过命令提示符使用Hlint对我有用,但是我在尝试执行GHCi集成时遇到问题.
http://community.haskell.org/~ndm/darcs/hlint/hlint.htm说"脚本位于hlint.ghci [link],并在数据目录中本地安装了一个副本.要使用,请添加内容到你的GHCi启动文件."
C:\ Users\X\AppData\Roaming\cabal\hlint-1.8.23包含此hlint.ghci文件.
现在我想找到GHCi启动文件.我使用的是Windows 7,根据http://www.haskell.org/ghc/docs/latest/html/users_guide/ghci-dot-files.html,ghci.conf文件应该在... /的文件夹中APPDATA/GHC.但是我的ghc文件夹(C:\ Users\X\AppData\Roaming\ghc)只包含一个ghci_history文件.
所以我将hlint.ghci文件复制到我的ghc文件夹并将其重命名为ghci.conf.从现在开始WinGHCi它崩溃,如果我启动GHCi它说:
interactive>:10:91:字符'\n'的字符串/字符文字中的词法错误
interactive>:4:105:字符'\n'的字符串/字符文字中的词法错误
我究竟做错了什么?该问题与缺少的GHCi启动文件有关吗?
我有这门课:
template<typename Bar, template<typename Bar> class Container>
class Foo
{
Container<Bar> myContainerBar;
};
Run Code Online (Sandbox Code Playgroud)
而这个子类:
class FooSpecialization : public Foo<std::string,std::vector>
{
};
Run Code Online (Sandbox Code Playgroud)
我在上面的第二个代码片段的第一行(在子类)得到以下错误:
模板参数列表中参数2的类型/值不匹配'模板类Container>类Foo'
我也试过了
class FooSpecialization : public Foo<std::string,std::vector<std::string>>
Run Code Online (Sandbox Code Playgroud)
没有成功.怎么了?我找不到解决这个问题的SO问题.