小编Phi*_*rip的帖子

从 Haskell 中的字符串列表中删除字符串

我有一个关于 Haskell 的问题一直困扰着我。我目前需要编写一个函数来删除字符串,即"word"从字符串列表中["hi", "today", "word", "Word", "WORD"]返回 list ["hi", "today", "Word", "WORD"]。我无法使用任何高阶函数,只能诉诸原始递归。

考虑到这个问题,我想也许我可以通过使用递归来解决它,在该递归中搜索第一个字符串的头部,如果匹配,"w"则比较尾部的下一个头部,看看是否匹配"o"。但后来我很快意识到,完成所有这些工作后,您将无法删除完整的字符串"word"

我的问题实际上是如何比较列表中的整个字符串,而不是一次只比较 1 个元素,例如:removeWord (x:xs)。有可能吗?我是否必须编写一个辅助函数来帮助解决问题?

string haskell

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

如何在Haskell中使用泛型

我正试图在Haskell中围绕仿制药.我的问题是我创建了一个连接函数,它接受一个字符串列表并返回一个巨大的字符串.

concatenate:: [String] -> String
concatenate xs = foldl (\acc x -> acc ++ x) [] xs
Run Code Online (Sandbox Code Playgroud)

但是现在我想要的不是字符串列表,而是使用任何列表.这可以是字符串,也可以是整数.所以说

concatenate ["Phil", "is"] 
Run Code Online (Sandbox Code Playgroud)

同时产生"菲利斯"

concatenate [[1,2],[3,4]]
Run Code Online (Sandbox Code Playgroud)

生成[1,2,3,4].

我发现了

concatenate:: [a] -> a
concatenate xs = foldl (\acc x -> acc ++ x) [] xs
Run Code Online (Sandbox Code Playgroud)

不起作用,我不知道为什么.不是haskell的工作方式,不管是什么类型,输出也是一样的?或者下半部分的问题是不允许它作为所有类型的函数工作?

generics haskell

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

使用不在基类中的派生方法

我正在做一个Shape类,它允许你获得某个形状的positionX,positionY和区域.派生类是一个Circle,它有一个附加的radius变量.

class Shape
{
public:
    Shape( double positionX, double positionY );
    virtual double getPositionX() = 0;
    virtual double getPositionY() = 0;
    virtual double area() = 0;

 class Circle : public Shape
{
public:
    Circle( double positionX, double positionY, double radius );
    virtual double getPositionX();
    virtual double getPositionY();
    virtual double area();
    virtual double getRadius();
Run Code Online (Sandbox Code Playgroud)

在我的主要部分中,我有一个Shapes数组,第一个对象是一个新的Circle,我在这个Circle上调用方法.

int main()
{
    Shape* s[2];

    s[0] = new Circle( 2.0, 3.0, 4.0 );
    cout << s[0]->getPositionX() << endl; // Works fine.
    cout << s[0]->getPositionY() << endl; …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance

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

在C++中输入类型

我对C++很新,我不确定如何正确地输入,或者我不确定如何在这个方法中转换参数可能需要类型转换.

我有一个函数getRadius

double Circle_getRadius(Circle* _this)
{
    return _this->radius;
}
Run Code Online (Sandbox Code Playgroud)

我想在getArea方法中使用this方法,如下所示

double Circle_area(Shape* _this)
{
    const double PI = 3.1415927;
    double radi = Circle_getRadius;
    return PI *  radi * radi;
}
Run Code Online (Sandbox Code Playgroud)

我在Circle_getRadius下得到一个错误,说"错误:类型的值"double()(Circle _this)"不能用于初始化"double"类型的实体.这是什么意思?

我也尝试过这个错误

double Circle_area(Shape* _this)
{
    const double PI = 3.1415927;
    return PI *  radius * radius;
}
Run Code Online (Sandbox Code Playgroud)

其中半径得到错误"错误:标识符"半径"未定义.任何建议?

c++

-4
推荐指数
2
解决办法
404
查看次数

标签 统计

c++ ×2

haskell ×2

generics ×1

inheritance ×1

string ×1