小编Mic*_*ron的帖子

Haskell:对于Map中的每个(k,v),用k和v做IO()

我有一个Map (Int,Int) Char,我试图Char在密钥中包含的位置绘制每个s.我的职责是:

import qualified Data.Map.Strict as SM
data Position = Position !GLint !GLint

drawMirrors :: SM.Map (Int,Int) Char -> IO()
drawMirrors mirrors = do
    mapM_ (\(x,y) c -> drawMirror c (Position x y)) mirrors

drawMirror :: Char -> Position -> IO()
drawMirror orientation (Position x y) = do
    -- Some irrelevant stuff
Run Code Online (Sandbox Code Playgroud)

drawMirrors mirrors = do mapM_ (\(x,y) c -> drawMirror c (Position x y)) mirrors行,我得到的错误:

src\Main.hs:200:33:

Couldn't match expected type `Char -> …
Run Code Online (Sandbox Code Playgroud)

io dictionary haskell functional-programming purely-functional

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

Haskell:if-then-else块和具有不对称构造函数的数据

我有以下数据可以发货或不发货:

data LaserCollisionResult = NoCollision | LaserToLaserCollision Ship | LaserToShipCollision Ship deriving (Eq, Show)
Run Code Online (Sandbox Code Playgroud)

然后,稍后,我试图检查LaserCollisionResult是否为LaserToLaserCollision类型,但是我收到错误.我的[lambda]功能是这样的:

laserPaths' = map (\(p,r) -> if r == LaserToLaserCollision then doSomethingWith p else p) $ zip laserPaths laserCollisionResults
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

Couldn't match type 'LaserCollisionResult' with 'Ship -> LaserCollisionResult'
Expected type: [Ship -> LaserCollisionResult]
Actual type: [LaserCollisionResult]
In the second argument of 'zip', namely laserCollisionResults.
Run Code Online (Sandbox Code Playgroud)

如何检查laserCollisionResults中的LaserCollisionResult是否属于LaserToLaserCollision类型?

haskell types functional-programming lazy-evaluation purely-functional

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

只有当len <3时,才会出现堆损坏错误.怎么会?

出于某种原因,如果len <3,我将在delete []缓冲行中得到堆损坏错误.

case WM_COMMAND:
{
    switch(LOWORD(wParam))
    {
    case ID_BUTTON_OK:
        {
            int len = SendMessage(mapName, WM_GETTEXTLENGTH, 0, 0);

            char* buffer = new char[len+1];
            ZeroMemory(buffer,sizeof(buffer));

            len = SendMessage(mapName, WM_GETTEXT, (WPARAM)len+1, (LPARAM)buffer);

            if(isMapNameLegal(buffer)) // Makes sure the map name is legal
            {
            }
            else
            {
                MessageBox(NULL,"The map name is illegal","Error",MB_ICONERROR);
            }

            delete[] buffer;
        }
        break;
Run Code Online (Sandbox Code Playgroud)

有isMapNameLegal.顺便说一句,它是静态的:

bool Creator::isMapNameLegal(char* name)
{
    if(strlen(name)<=3)
        return false;

    int x=0;
    while(name[x]!='\0')
    {
        if(name[x]<48 && name[x]!=32)       //32=='\r', 48==0,
            return false;
        if(name[x]>57 && name[x]<65)        //57==9, 65==A
            return false;
        if(name[x]>90 …
Run Code Online (Sandbox Code Playgroud)

c++ memory oop heap memory-management

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

Haskell:将100个数字的列表更改为10个10个数字的列表?

在Haskell中,如何将x个数字列表更改为n个n个数字列表?

第一个子列表的编号从第一到第十,第二个列表从第11到第20 ......

myFunction :: [Int] - > [[Int]]

haskell functional-programming function list purely-functional

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

将动态创建的对象分配给作为类的私有成员的指针有什么问题吗?

例如,假设我有一个Game类:

class Game{
public:
    Game();
    ~Game();

    void CreateWindowClass(HINSTANCE);
    void CreateRessources(HINSTANCE);

    void ShowMainScreen();

    Winsock* CreateWinsock();

    MessageLog* CreateMessageLog();

    D2DResources* CreateD2DResources(HWND);

    HWND Getm_hWnd();

public:
    D2DResources* pD2DResources;
    Winsock* pWinsock;
    MessageLog* pMessageLog;

private:
    HWND m_hWnd;

};
Run Code Online (Sandbox Code Playgroud)

而Game中的3个指针分配如下:

Winsock* Game::CreateWinsock()
{
    pWinsock = new Winsock;

    return pWinsock;
}
Run Code Online (Sandbox Code Playgroud)

这会导致任何问题吗?另外,我会删除动态创建的对象,如下所示:delete pWinsock;?

c++ pointers memory-leaks memory-management dynamic

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

Haskell:键入表示数独行?

在Haskell中,如何创建一个类型来表示长度为9的列表,其中每个元素都是0到9之间的Int?

haskell types

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

Haskell:如何打开Seq中的值?

我想把一个元素放在列表中间,所以我做了:

update myPosition myValue $ fromList myList
Run Code Online (Sandbox Code Playgroud)

现在,我有一种类型,Seq a但我需要整个a([a])列表.如何从此行中提取值以返回整个列表myValue

Seq是来自Data.Sequence.

monads haskell sequence

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