在Monads中,对于自然语言语义学,Chung-Chieh Shan展示了如何使用monad来对一些不同类型的自然语言现象(疑问,焦点,内涵和量化)的标准叙述进行非常均匀的重述.他定义了两个组合操作,A_M并且A'_M对此有用.
第一个是简单的ap.在powerset中monad ap是非确定性函数应用程序,它对于处理疑问句的语义很有用; 在读者monad中,它对应于拉伸成分的通常分析; 等等
这是有道理的.但是,辅助合成操作的类型签名对我来说很奇怪:
(<?>) :: (Monad m) => m (m a -> b) -> m a -> m b
Run Code Online (Sandbox Code Playgroud)
(Shan称之为A'_M,但我会<?>在这里称之为.)定义是你对类型的期望; 它非常接近ap:
g <?> x = g >>= \h -> return $ h x
Run Code Online (Sandbox Code Playgroud)
我想我可以理解这是如何在论文的背景下做到的(处理疑问句的问题动词,作为内容构成等).它的作用并不是非常复杂,但看到它在这里扮演如此重要的角色有点奇怪,因为它不是我之前在Haskell中看到的成语.
Hoogle没有任何有用的东西m (m a -> b) -> m a -> m b或者m (a -> b) -> a -> m b.
这看起来对其他任何人来说都很熟悉吗?你有没有写过这个功能?
我正在寻找一个好的算法来获取一个数组中不是另一个数组中的元素的所有元素.所以给定这些数组:
var x = ["a","b","c","t"];
var ?????????y = [???????"d","a","t","e","g"];
Run Code Online (Sandbox Code Playgroud)
我想最终得到这个数组:
var z = ["d","e","g"];
Run Code Online (Sandbox Code Playgroud)
我正在使用jquery,所以我可以利用$.each()和$.inArray().这是我提出的解决方案,但似乎应该有更好的方法.
// goal is to get rid of values in y if they exist in x
var x = ["a","b","c","t"];
var y = ["d","a","t","e","g"];
var z = [];
$.each(y, function(idx, value){
if ($.inArray(value,x) == -1) {
z.push(value);
}
});
?alert(z); // should be ["d","e","g"]
Run Code Online (Sandbox Code Playgroud)
这是代码的实际应用.有任何想法吗?
有人可以解释这种行为吗?
test.c的:
#include <stdio.h>
int main(void)
{
printf("%d, %d\n", (int) (300.6000/0.05000), (int) (300.65000/0.05000));
printf("%f, %f\n", (300.6000/0.05000), (300.65000/0.05000));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
$ gcc test.c
$ ./a.out
6012, 6012
6012.000000, 6013.000000
Run Code Online (Sandbox Code Playgroud)
我检查了汇编代码,它将第一个printf的参数都设置为6012,所以它似乎是一个编译时错误.
我有一个头文件,有一些前向声明但是当我在实现文件中包含头文件时,它包含在先前的前向声明的包含之后,这会导致像这样的错误.
error: using typedef-name ‘std::ifstream’ after ‘class’
/usr/include/c++/4.2.1/iosfwd:145: error: ‘std::ifstream’ has a previous declaration.
class ifstream;
class A
{
ifstream *inStream;
}
// End of A.h
#include <ifstream>
using std::ifstream;
#include "A.h"
// etc
Run Code Online (Sandbox Code Playgroud)
什么是解决这个问题的常态?
提前致谢.
假设我有一个整数排序集xs,我想检索xs中所有[x,y)的整数,即.在x和y之间.
我可以:
(select #(and (>= % x) (< % y)) xs)
Run Code Online (Sandbox Code Playgroud)
但这是低效的 - O(n)当它可能是O(log n)时,我期望返回的元素数量很少.使用take-while和drop-while会让我在到达y后退出,但我仍然无法有效地跳转到x.
我只是在学习clojure所以这里是我将如何在C++中做到这一点:
set<int>::iterator first = xs.lower_bound(x);
set<int>::iterator last = xs.lower_bound(y);
for (; first != last; ++first)
// do something with *first
Run Code Online (Sandbox Code Playgroud)
我可以在clojure中这样做吗?
我有一个带有3个WPF控件的元素主机.我将元素主机放在winform上.当我的应用程序出现时,元素主机需要几秒钟,winform将显示为空白屏幕.
如何解决这个问题?任何想法都表示赞赏.基本上,我不想显示空白屏幕,因为它在应用程序出现时看起来很难看.
考虑0/1背包问题.标准动态编程算法仅适用于填充背包的容量和权重是整数/有理数.当容量/重量不合理时你会怎么做?
问题在于我们不能像对整数权重一样进行memoize,因为我们可能需要无限权重的无限小数位 - 导致动态编程表的列数无限大.
有没有解决这个问题的标准方法?对此问题的复杂性有何评论?任何启发式?
那些相关的重现如(例如):
f(x)=f(x-sqrt(2))+sqrt(3),otherwise
f(x)=1, for x< sqrt(2)
f(x)=f(x-sqrt(2))+sqrt(3),otherwise
f(x)=1, for x< sqrt(2)
?
或者这里的Pibonacci数问题:http://www.spoj.pl/problems/PIB/?
我正在使用以下代码在字符串中首次出现一个字符.但是当角色太长或者我正在搜索的角色在很远的程度上需要一些时间,这会延迟其他操作.我怎么能解决这个问题.代码如下.
注意:attrPtr是一个char *包含对包含'"'远程字符的字符串的引用.
int position = 0;
char qolon = '"';//character to search
while (*(attrPtr + position++) != qolon);
char* attrValue = NULL;
attrValue = (char*)malloc(position * sizeof(char));
strncpy(attrValue, attrPtr, position-1);
Run Code Online (Sandbox Code Playgroud) 我移植了一些C++代码GCC和apperantly当sapces都参与其中,为它是不愉快的C++风格铸造unsigned int(-1),long long(ShortVar)等等......它给出了一个error: expected primary-expression before 'long'.
有没有什么方法可以与海湾合作委员会达成和平,而不必越过其中的每一个并以c风格重写?
我知道Silverlight自成立以来已经走了很长一段路,但我一直在努力寻找Silverlight的业务需求.Silverlight 4.0与现代html5以及jQuery或ExtJS等javascript库有什么优缺点?
我应该使用silverlight或html5和javascript的组合作为我的ui吗?