小编Van*_*gic的帖子

什么是类型级编程的例子?

我不明白"类型级编程"的含义,也无法使用Google找到合适的解释.

有人可以提供一个演示类型级编程的示例吗?范式的解释和/或定义将是有用的和受到赞赏的.

haskell functional-programming scala type-level-computation

28
推荐指数
3
解决办法
5912
查看次数

是否可以用高级语言实现编译器?

我对较低级别的概念很感兴趣,例如操作系统,算法,数学证明软件正确性等.

最吸引我的是编译器.我开始学习它们并希望为了学习而实现一个玩具编译器,也许它变得很大(你永远都不知道,对吧?).

我的目标是实现类似lua的静态类型,线程感知编程语言(第一个目标是具有基本堆栈操作的解释器).我的问题是,我对c,c ++或pascal等低级语言几乎没有兴趣,我想知道是否有可能在动态类型环境中为静态类型语言实现编译器?

我有兴趣在lua或python中实现这样的语言(虽然lua更适合我).

compiler-construction lua

3
推荐指数
1
解决办法
362
查看次数

C++ - 排序算法没有看到我的重载"<"运算符用于用户定义的类型.

好吧,我有一个用户定义的类型命名fraction,它代表普通分数与分子和分母.这是代码:

class Fraction
{
private:
  int numerator;
  int denominator;

public:
  Fraction(int numer,int denom)
    :numerator(numer),denominator(denom){}

  int get_denom(){return denominator;}
  int get_numer(){return numerator;}
};
Run Code Online (Sandbox Code Playgroud)

如您所见,它在头文件中完全实现.

所以我想要做的就是使用排序算法对分数进行排序.这是重载"<"运算符的代码(注意:它与Fraction类放在同一个文件中,但在类之外):

bool operator<(Fraction& first,Fraction& second)
{
  if(first.get_denom() == second.get_denom())
  {
    return first.get_numer()<second.get_numer()?true:false;
  }
  int first_num=first.get_denom();
  int second_num=second.get_denom();
  int lcm=(first_num*second_num)/gcd(first_num,second_num);
  int first_new_numerator=(lcm/first_num)*first.get_numer();
  int second_new_numerator=(lcm/second_num)*second.get_numer();

  return first_new_numerator<second_new_numerator?true:false;
}
Run Code Online (Sandbox Code Playgroud)

它的作用是检查分母是否相等,如果它们是测试分子的值.如果它们不相等,则使用最小公倍数和gcd来均衡它们.

当我想在main(编译时错误)中使用排序算法时,真正的问题就开始了.这是主要的代码:

Fraction parse_fraction(string& input)
{

  stringstream fraction_string(input);
  int numer;
  fraction_string>>numer;
  char seperator;
  fraction_string>>seperator;
  int denom;
  fraction_string>>denom;

  return Fraction(numer,denom);
}


int main()
{
  vector<Fraction> fractions;
  string input;
  while(cin>>input)
  {
    if(input=="|") …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm codeblocks

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