noname

看了之前的留言,之前措词有些偏激了,博主有兴趣可以加入QQ群72874436一起学习Haskell
让你看你没看,给你看一下Data.Function里fix的定义
fix :: (a -> a) -> a
fix f = let x = f x in x
当然HM里的let..in..有它自己的问题
Prelude>:m +Data.Functon
Prelude Data.Function> let fact = fix (\f n -> if n == 0 then 1 else n * f (n-1))
(0.00 secs, 517488 bytes)
Prelude Data.Function> fact 4
24

Haskell不需要Y,虽然它也可以定义。这里你没有了解Haskell整个系统的结构。因为Haskell的本质是一个所有term都需要typable的类型系统加一个Y组合子,Y承载了Haskell中所有的递归语义,包括互调递归、多重递归等等,自然也承载这里的fix,你可以用fix写出所有递归的函数,也可以通过函数自己调用自己写出所有递归函数,只要语义上没差,所以你关于Y的那篇博文讨论了一堆完全没有意义的东西。
@Noname
lambda里的Y跟Haskell里的Y是“有”区别的,打错了
劝博主还是尽量不要写Haskell的文章了,如果要写好好读一下书。(没贬低的意思)那篇关于Y combinator的东西全都是错的,看看Data.Function里的fix怎么实现的,fix f = f (fix f),lambda里的Y跟Haskell里的Y是不区别的。这种东西\x -> x x不叫递归的定义,好像就self application,Haskell定义不了不是你说的,\x -> x x不是typable的,a ~ a -> a没法deduce,Haskell里也不需要定义这东西。
template<class T,class U>
class C<T*,U*>{};
这属于全特化还是偏特化呢?一般大部分人都认为是偏特化,但是按照上面的定义似乎应该是全特化(所有的模板参数都特化了呀)。
这种属于偏特化而非特化
re: OpenGL入门学习[未登录] noname 2013-10-26 20:20
因为要研究光线跟踪算法,所以需要opengl很耐心的看完了,然后的感谢楼主啊
re: 最简单的MFC程序[未登录] noname 2013-07-09 16:28
好东西,非常谢
class A{
int a;
};
#pragma optimize=2

int _tmain(int argc, _TCHAR* argv[])
{
auto x = new A;
x = new A();

return 0;
}




auto x = new A;
003A1000 push 4
003A1002 call dword ptr ds:[3A2090h]
x = new A();
003A1008 push 4
003A100A call dword ptr ds:[3A2090h]
003A1010 add esp,8
003A1013 test eax,eax
003A1015 je wmain+1Dh (03A101Dh)
003A1017 mov dword ptr [eax],0

return 0;
003A101D xor eax,eax
}
003A101F ret
你这完全是因为debug才有的问题, vs2012 release证明,所谓的初始化代码不会产生,其它版本应该也是一样的
请问最后一个程序,是不是father和son的输出没有规律,第一组是father和son的组合,第二组是两个father和两个son的组合,最后一组是四个father和四个son的组合就是了吗?
good!
查了半天百度,
下午google一下就找到了你.....
上面写错了一点:
createFactory::createProducts()
{
AbsFacty->CreateProductA();
AbsFacty->CreateProductA();
}

应该是:
createFactory::createProducts()
{
CurrentAbsFacty ->CreateProductA();
CurrentAbsFacty ->CreateProductA();
}
您的例子中,抽象工厂的方法用得有些不对:
// 生产产品A的第一种实现
ConcreateFactory1 *pFactory1 = new ConcreateFactory1;
AbstractProductA *pProductA = pFactory1->CreateProductA();

// 生产产品B的第二种实现
ConcreateFactory2 *pFactory2 = new ConcreateFactory2;
AbstractProductB *pProductB = pFactory2->CreateProductB();

我觉得应该是:
// 生产产品A的第一种实现
AbstractFactory*pFactory1 = new ConcreateFactory1;
AbstractProductA *pProductA = pFactory1->CreateProductA();

// 生产产品B的第二种实现
AbstractFactory*pFactory2 = new ConcreateFactory2;
AbstractProductB *pProductB = pFactory2->CreateProductB();

也就是在接收时应该是基类,AbstractFactory.这是一点.其实这样改了还是没有真正的体现抽象工厂的"封装变化"思想,体现出来的还是一个简单工厂的翻版.应该在新建一个类来完成工厂类的创建:
class createFactory
{
public:
createFactory(AbstractFactory *AbsFacty);
~createFactory();

void createProducts();
private:
AbstractFactory *CurrentAbsFacty;

}

///////////////////////////////////
createFactory::createFactory(AbstractFactory *AbsFacty)
{
CurrentAbsFacty = AbsFacty;
}
createFactory::createProducts()
{
AbsFacty->CreateProductA();
AbsFacty->CreateProductA();
}

//////////////////////////////////////
//主函数的写法:

createFactory * createFacty = new createFactory(new ConcreateFactory2);
createFacty->createProducts();

个人愚见,多多指教! liuchuanwen109@126.com
删除的时候有问题
放在客户端就行了咯
re: ZOJ 3194 Coverage [未登录] noname 2009-05-06 09:42
请问下 这题的 题目是什么意思呢?
re: memcpy的BUG[未登录] noname 2008-11-24 00:44
33行--到0就跳了吧,负以后虽然因为size_t类型转成最大32位数,但没有再次循环吧
A<B> delegateObj1(objB, (&B::FunA));
在这里类A必须了解B的类型,而委托存在的意义在于委托类与被委托的对象之间的无关性,可以参照网上一篇关于fastdelegate的文章。
template<typename T>
int funA(T * This, int (T::*delegateFun)(int), int c)
{
return (This->*delegateFun)(c);
}
可以算做委托调用的基本原理,还需要保存This和delegateFun的值才能称之为委托。
为什么不用 boost::program_options
呵呵,我用 vc2008 做的东西就不需要 vc8 的 dll。
和SunOnline(奇迹世界)的架构差不多啊
sleep(1)
换成sleep(0)试试
@fox
是准备做反外挂系统吗?
可以参考下SD的动态加解密,防脱机外挂很NB的说
饭兄对这个dynende很熟悉的,呵呵
@Kevin Lynx
为什么每次称饭中淹为饭叔叔,他有这么大了吗?
看起来不错.
想下载源码看看. 但是连接不可用.
能否发送到邮箱lieph(AT)163(DOT)com?
谢谢
re: VS2005SP1安装加速 noname 2007-01-08 23:09
今天刚刚装好 sp1. 不过还是收藏之
的确不错. 用 html 做界面在开发效率, 扩展性等方面都很好. 正巧这两天需要做一个程序. 界面要求比较灵活. 就试试万兄的 idea 了.

用 WTL 做了一个 demo. 因为是第一次做这样的应用, 先不考虑代码复用了. 所以没有做成 DLL. 连页面的 ExternalDispatch 都是在程序内部实现的.
既然万兄没有给出源码, 我把代码放上来. 算是狗尾续貂把. :)

http://nicoster.googlepages.com/wtlhtml.rar

lieph $(at) 163 $(dot) com
@空明流转
最后一句的意思是
问你是坐车来的, 还是走路来的.
你回答 我吃的是炸酱面.

----
"屋子里的发声的东西越多, 声音越大"
C++ 的对象默认的赋值操作就是如此, 何必再写函数。比如:
struct foo
{
int a;
char b;
};

void main()
{
foo f, g;
f.a=f.b=0;
g = f;
}
如果幻想没有能力也可以得到项目真是异想天开!