我追求簡潔的代碼從字符串(如CSV行)初始化簡單的Scala case類: case class Person(name: String, age: Double)
case class Book(title: String, author: String, year: Int)
case class Country(name: String, population: Int, area: D
所以我們可以說我有很多的模板參數類,其中之一是派生類使用CRTP: template <typename Derived, typename A, typename B, typename C, typename D>
class BaseFoo {
public:
BaseFoo(A& a) {}
};
而且我想繼承它: class DerivedFoo : public B
我經常遇到這種情況,因爲它很煩人。 比方說,我有一個可以容納x實例或無關x一堆其他的東西和類型 - data Foo x = X x | Y Int | Z String | ...(other constructors not involving x)
要聲明函子實例我不得不這樣做 - instance Functor Foo where
fmap f (X x) = X (f x