小编rcb*_*nan的帖子

通过枚举创建函数

我刚开始学习Haskell.我认为我已经掌握了基础知识,但我想确保我实际上也强迫自己在功能上思考.

data Dir = Right | Left | Front | Back | Up | Down deriving (Show, Eq, Enum)
inv Right = Left
inv Front = Back
inv Up = Down
Run Code Online (Sandbox Code Playgroud)

无论如何,我想要做的就是创建一个函数来映射每个"Dir"和它的对面/ inv.我知道我可以轻松地继续这3行,但我不禁想知道是否有更好的方法.我尝试添加:

inv a = b where inv b = a
Run Code Online (Sandbox Code Playgroud)

但显然你不能这样做.所以我的问题是:是否有一种方法可以生成其余的反转或者更好的创建此函数的方法?

非常感谢.

haskell algebraic-data-types

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

"my_ifstream >> my_char"在哪里记录?

我正在使用"cin >> my_char"在我正在尝试解析的输入记录中删除':'.这是一个最小的例子.

#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>

using namespace std;

int main () {
    char c;
    int x, y;

    cin >> hex >> x >> hex >> c >> y;
    cout << "x = " << x << "\ny = " << y << "\n";
}
Run Code Online (Sandbox Code Playgroud)

示例用法:

rc@timecube:/tmp$ g++ test.cpp && echo "0000a:ffff" | ./a.out 
x = 10
y = 65535
Run Code Online (Sandbox Code Playgroud)

这段代码完全符合我的要求,但我不明白为什么.我希望看到类似的东西:

istream& operator>> (char& val);
Run Code Online (Sandbox Code Playgroud)

这里的istream参考,但我没有.

那么这种行为是如何记录的呢?

c++

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

标签 统计

algebraic-data-types ×1

c++ ×1

haskell ×1