我正在寻找一种模式将C++类型特征转换为它们的可变参数.一个方法来解决这个问题,将不胜感激,并生成编程模式,以自动执行任务将是理想的.
请考虑以下事项:
std::is_same<T, U>::value;
Run Code Online (Sandbox Code Playgroud)
我想写一个像这样的特征:
std::are_same<T1, T2, T3, T4>::value;
Run Code Online (Sandbox Code Playgroud)
实现这个非常简单are_same ; 寻求一般解决方案,我们可以为任何实现通用量化的可变特性提供工具:
template<template<class,class> class F, typename...Ts>
struct Univ;
template<template<class, class> class F, typename T, typename U, typename...Ts>
struct Univ<F, T, U, Ts...>
{
static const int value = F<T, U>::value && Univ<F, U, Ts...>::value;
};
template<template<class, class> class F, typename T>
struct Univ<F, T>
{
static const int value = 1;
};
Run Code Online (Sandbox Code Playgroud)
所以,例如are_same …
c++ templates generative-programming template-meta-programming c++11
我发现自己被用于描述领域特定语言的解析表达式语法形式主义,但到目前为止,我发现的实现代码是用Java和Haskell等语言编写的,在我的组织的共享托管环境中不是Web服务器友好的不得不忍受.
有没有人知道任何PEG库或PackRat解析器生成器的Javascript或PHP?当然,任何语言的代码生成器都可以生成Javascript或PHP源代码.
我在过去的两年里一直在使用CodeSmith,并喜欢它为我做的事情.但是,我也知道T4内置于Visual Studio中,并且可以做一些很酷的东西.基于与VS2010中的朋友T4的对话,T4会更好.
所以问题是:我是否继续使用CodeSmith总线或是时候开始将我的所有模板转换为T4了?
更新 也许我对问题的解释方式并不清楚.显然,我不会删除我的cs模板并停止使用它们,直到我有新的模板工作.但是,在这一点上是否值得努力?T4在这一点上是否提供了优于CodeSmith的优势?是否有一些功能或一组功能,通过为T4编写我的模板,我会看到我的效率提高了100倍?
我有一个Perl程序,它从输入文件生成解析规则作为subs.sub是匿名定义的一个放入哈希.现在,我想导出该哈希值,包含所有子目录,然后再次加载它们以与其他程序一起使用.
我该怎么做呢?有没有办法提取每个子代码,或者我可以复制散列存在的内存块,然后在我稍后再次加载时将其转换为哈希值?
提前致谢.
通常在我们的工作中,我们在捕获或匹配操作中使用正则表达式
但是,可以使用正则表达式 - 至少手动 - 来生成与正则表达式匹配的合法句子.当然,一些正则表达式可以匹配无限长的句子,例如表达式.+.
我有一个问题可以通过使用正则表达式句子生成算法来解决.
在伪代码中,它将运行如下:
re = generate("foo(bar|baz)?", max_match = 100); #Don't give me more than 100 results
assert re == ("foobar", "foobaz", "foo");
Run Code Online (Sandbox Code Playgroud)
什么算法会为我执行此操作?
假设我有(x,y)样本制作的训练集.
为了应用生成算法,让我们说高斯判别,我必须假设
p(x|y) ~ Normal(mu, sigma) 为每一个可能的西格玛
或者我只需要知道是否x ~ Normal(mu, sigma)给出了y?
如何评估p(x | y)是否遵循多元正态分布对我来说足够(达到阈值)使用生成算法?
normal-distribution generative-programming machine-learning logistic-regression