Tag: 语法

Haskell / GHC中的`forall`关键字是做什么的?

我开始了解如何在所谓的“存在types”中使用forall关键字: data ShowBox = forall s. Show s => SB s 然而,这只是一个子集,因为它是如何使用的,而我根本无法把它用在这样的事情上: runST :: forall a. (forall s. ST sa) -> a 或者解释为什么这些不同: foo :: (forall a. a -> a) -> (Char,Bool) bar :: forall a. ((a -> a) -> (Char, Bool)) 或者整个RankNTypes东西… 我倾向于select清晰,不含行话的英语,而不是学术环境中正常的语言。 我试图阅读的大部分解释(我可以通过search引擎find的)有这些问题: 他们不完整。 他们解释了使用这个关键字(比如“存在types”)的一部分,这让我感觉很开心,直到我读完以不同的方式使用它的代码(比如runST , foo和bar )。 他们密集的假设,我已阅读离散math的任何分支,类别理论或抽象代数本周stream行的最新。 (如果我再也不读“实施细节咨询文件”,那就太快了。) 他们的写作方式经常会把简单的概念变成扭曲和破碎的语法和语义。 所以… 谈到实际的问题。 […]

块声明语法列表

Objective C中的块语法(实际上C,我假定)是出了名的不协调。 将块作为parameter passing看起来不同于将块声明为ivars,这看起来与typedef块不同。 是否有一个完整的块声明语法列表,我可以随时为您提供快速参考?

为什么一个杂散的结束标记会生成一个空的段落?

显然,如果在body元素中有一个没有匹配开始标记的</p>结束标记,大多数(如果不是所有的话)浏览器都会在它的位置生成一个空的段落: <!DOCTYPE html> <title></title> <body> </p> </body> 即使在结束标记周围存在任何文本,也不会将其作为此p元素的一部分 – 它将始终为空,并且文本节点将始终独立存在: <!DOCTYPE html> <title></title> <body> some text</p>more text </body> 如果body的上述内容被包裹在<p>和</p>标记中,我会留给你猜测会发生什么: <!DOCTYPE html> <title></title> <body> <p>some text</p>more text</p> </body> 有趣的是,如果</p>标签前面没有<body>或</body>标签,除了IE9和更老版本的浏览器都不会生成空白段落(IE≤9则始终创build一个) IE10和更高版本的行为与所有其他浏览器相同): <!DOCTYPE html> <title></title> </p> <!DOCTYPE html> <title></title> </p><body> <!DOCTYPE html> <title></title> </p></body> 我找不到任何引用规定,没有相应的开始标签的结束标签应该生成一个空的元素,但不应该让人感到意外,因为它甚至不是有效的HTML。 事实上,我只find浏览器用p元素(以及某种程度上也是br元素)来做到这一点,但是为什么没有任何解释。 在使用传统的HTMLparsing器和HTML5parsing器的浏览器中,它是相当一致的,不过,在怪癖模式和标准模式下都适用。 所以,这可能是公平的,这是为了向后兼容早期规范或传统行为。 事实上,我的确发现了这个评论的答案, 这个问题基本上证实了这个问题: 为什么<p>标签有效的原因是原来的<p>被定义为“新的段落”标记,而不是p是一个容器元素。 相当于成为“新线”的标志。 你可以从1992年的这个文档中看到: http://www.w3.org/History/19921103-hypertext/hypertext/WWW/MarkUp/Tags.html和1993年的这个: http://www.w3。 org / MarkUp […]

Ruby Proc语法

我昨天提出的一个问题的答案是下面这段Ruby代码: def overlap?(r1,r2) r1.include?(r2.begin) || r2.include?(r1.begin) end def any_overlap?(ranges) ranges.sort_by(&:begin).each_cons(2).any? do |r1,r2| overlap?(r1, r2) end end 我得到each_cons ,但奇怪的是&:begin符号? 救我从句法地狱! 谢谢!

各种符号(*,&等)与参数组合的区别是什么?

可能重复: c ++ * vs&在函数声明中 我知道这对你们中的许多人来说似乎是一个非常基本的问题,但尽pipe我的search量最好,但我真的有一个不可能的时间find一个好的,彻底的解释。 我确定答案是在那里,所以我的search条件必须是可怕的。 在C ++中,使用各种符号及其组合来标记参数(以及这些参数的参数)。 究竟是什么意思呢? 例如: void func(int *var)和void func(int **var)什么区别? 那么int &var呢? 同样的问题代表了返回types以及参数。 与int* func(int var)相比, int& func(int var)是什么意思? 在参数中, y = func(*x)与y = func(&x)什么不同? 如果只有你能指出我正确的方向,我很乐意阅读有关这一主题的大量文章。 另外,我非常熟悉一般的编程概念:OO,generics/模板等,而不是C / C ++中使用的符号。 编辑:看来我可能给人的印象是我不知道什么是指针。 我不知道这可能是:) 所以澄清:我完全理解指针如何工作。 我不是在抓, 而是很奇怪的找不到答案,就是例如'void func(int&var)'的含义。 在赋值语句的情况下,'&'运算符将在右侧,如'int * x =&y;',但是在上面,'&'运算符实际上在左侧。 换句话说,它是运行在l值上,而不是r值。 这显然不能有相同的意思。 我希望我现在更有意义?

任何validationSQL语法的Java库?

我不确定这是否存在,所以我想我会挖掘别人的智慧。 我想知道是否有任何可用于validationSQL查询语法的Java库。 我知道有许多偏离常规的SQL规范,所以它可能只会对像SQL:2006这样的工作,但这当然就够了。 我的目标是将其用于unit testing目的,而不需要尝试针对数据库执行操作。 我知道这是有限的使用,但它仍然是有用的。 谢谢!

bash:$ 与$((<arithmetic-expression>))

我刚刚碰到了bash语法: foo=42 bar=$[foo+1] # evaluates an arithmetic expression 当我谷歌search这个,我发现http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_03_04.html#sect_03_04_05 : 3.4.6。 算术扩展 算术扩展允许评估算术expression式和replace结果。 算术扩展的格式是: $(( EXPRESSION )) … 只要有可能,Bash用户应该尝试使用带有方括号的语法: $[ EXPRESSION ] 但是,这只会计算EXPRESSION的结果,不做任何testing… 在我的bash手册页中,我只能find$(( EXPRESSION ))forms,如: foo=42 bar=$((foo+1)) # evaluates an arithmetic expression 那么什么样的testing不是用$[…] $((…))执行的$[…]执行的,还是$[…]只是$((…))的传统版本?

F#转发types声明

我在F#中偶然发现了这个问题。 假设我想声明两种相互引用的types: type firstType = | T1 of secondType //……………. type secondType = | T1 of firstType //……………. 我该怎么做,所以编译器不会产生错误?

Java修饰语法和格式

我发现自己对访问和非访问修饰符的顺序感到困惑。 例如 abstract void go() abstract public void go() public final void go() void final go() final class Test{} class final Test{} final abstract class Test{} abstract final Test{} 我永远不知道正确的顺序是什么,有时我错了,因为有这么多可能的组合。 有一个明确的指导,哪一个应该先于另一个呢? 对代码中显示的格式和顺序是否有任何描述? 我试图拿出一个语法指南,但我不知道它是否是100%正确的。 这里是: Methods: [access modifier | nonaccess modifier] return-type method-name Classes: [access modifier | nonaccess modifier] class class-name Interfaces: [access modifier | nonaccess […]

是否有可能得到在Python中的关键字列表?

我想获得所有Pythons关键字的列表作为string。 如果我能为内置的函数做类似的事情,那也是相当好的。 像这样的东西: import syntax print syntax.keywords # prints ['print', 'if', 'for', etc…]