标签: generic-programming

何时/为什么(如果有的话)我应该考虑进行通用编程/元编程

恕我直言,OOPS,设计模式是有道理的,我已经能够实际应用它们.

但是当谈到 Modern C++类的"泛型编程/元编程"时,我感到很困惑.

- 这是一种新的编程/设计范式吗?

- 它仅限于"图书馆开发"吗?如果没有,那么设计/编码情况需要使用元编程/泛型编程.

- 使用模板意味着我正在进行通用编程吗?

我在这个主题上搜索了很多,但没有完全掌握大图.另见这篇文章.


在阅读了这里的讨论之后,到目前为止,我确信(可能仍然不正确):

a)通用编程和元编程是两个不同的概念.

c++ templates metaprogramming generic-programming

17
推荐指数
4
解决办法
1910
查看次数

通用编程与元编程

究竟有什么区别?似乎这些术语可以互换使用,但是阅读了Objective-c的维基百科条目,我遇到了:

除了C的过程编程风格之外,C++还直接支持某些形式的面向对象编程,泛型编程和元编程.

参考C++.显然他们有所不同?

programming-languages metaprogramming generic-programming

17
推荐指数
4
解决办法
6065
查看次数

嵌套名称说明符

我有一个代码:

namespace mymap {
    template <class Key,template <typename T > class Allocator> myownmap {
        typedef pair<const unsigned int, Key> typename _myPair;
        typedef multimap<unsigned int, Key,less<Key> ,Allocator<_myPair> > typename _entriesType;
    }
}
Run Code Online (Sandbox Code Playgroud)

它在MSVC下成功编译(和工作),但是gcc抱怨语法无效:

.hpp:20: error: expected nested-name-specifier before ‘_myPair’
.hpp:20: error: two or more data types in declaration of ‘_myPair’
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

c++ templates generic-programming

17
推荐指数
3
解决办法
4万
查看次数

为什么没有办法在Haskell中派生Applicative Functors?

在Haskell中,你可以得到Functor,FoldableTraversable自动使用deriving.Applicative但是,没有办法得出.考虑到有一种明显的方法来定义一个Applicative实例(相当于一个压缩的应用程序),有没有办法启用deriving Applicative

haskell generic-programming applicative

17
推荐指数
2
解决办法
1557
查看次数

你在哪里找到有用的模板?

在我的工作场所,我们倾向于使用 iostream,字符串,向量,地图和奇数算法或两个.我们实际上并没有发现很多情况,模板技术是问题的最佳解决方案.

我在这里寻找的是想法,以及可选的示例代码,它们展示了您如何使用模板技术为您在现实生活中遇到的问题创建新的解决方案.

作为贿赂,期待对你的答案进行投票.

c++ templates metaprogramming generic-programming

16
推荐指数
3
解决办法
3373
查看次数

Haskell:获取数据构造函数名称作为字符串

让我们说我们有

data D = X Int | Y Int Int | Z String
Run Code Online (Sandbox Code Playgroud)

我希望有一个功能 getDConst

getDConst :: D -> String
Run Code Online (Sandbox Code Playgroud)

根据用于输入的数据构造函数返回"X","Y"或"Z".是否有一种通用的方法来编写它而不必case对每个数据构造函数进行编写?(我可以使用依赖于Data.Typeable类似的解决方案)

reflection haskell generic-programming ghc deriving

15
推荐指数
2
解决办法
2090
查看次数

折叠Haskell中的多态列表

我有一个记录集合,分布在一个相互引用的大型Haskell应用程序中的多种类型中.涉及的所有类型都实现了一个共同的类型类.类型类包含对变量及其所有子项起作用的para函数,非常类似于uniplate的函数.

这是我想要构建的简化代码示例.是否有可能(并且合理)获得通用功能来折叠在GHC中实现给定类型类的记录字段...

{-# LANGUAGE RankNTypes #-}

myPara :: forall a r . (Data a, Foo a)
       => (forall b . Foo b => b -> [r] -> r)
       -> a
       -> r

-- or as a fold
myFold :: forall a r . (Data a, Foo a)
       => (forall b . Foo b => r -> b -> r)
       -> r
       -> b
       -> r
Run Code Online (Sandbox Code Playgroud)

但通用到足以与任意类型类一起使用?

{-# LANGUAGE ExistentialQuantification #-}
{-# LANGUAGE DeriveDataTypeable #-}

import Data.Data
import Data.Generics.Uniplate.Data …
Run Code Online (Sandbox Code Playgroud)

haskell generic-programming existential-type higher-rank-types

14
推荐指数
1
解决办法
1181
查看次数

继承和虚函数与通用编程

我需要了解Inheritance & virtual functions在C++ 中是否真的没有必要,并且可以实现一切使用Generic programming.这是来自Alexander Stepanov我正在观看的讲座是Alexander Stepanov:STL及其设计原则

c++ stl generic-programming

14
推荐指数
2
解决办法
1540
查看次数

什么是"废弃锅炉"?

我看到有人在讨论Scrap Your Boilerplate和Haskell中的泛型编程.这些术语是什么意思?我什么时候想要使用Scrap Your Boilerplate,我该如何使用它?

haskell functional-programming generic-programming scrap-your-boilerplate

14
推荐指数
1
解决办法
774
查看次数

C++中模板特化的顺序

模板专业化在代码中出现的顺序是否会改变程序的含义?如果是这样,为什么呢?

例:

在源代码中的某个地方

// specialization A
...
// specialization B
...
Run Code Online (Sandbox Code Playgroud)

// specialization B
...
// specialization A
...
Run Code Online (Sandbox Code Playgroud)

这会产生相同的结果吗?

c++ templates generic-programming

14
推荐指数
2
解决办法
1587
查看次数