小编ben*_*wad的帖子

在Haskell中计算树中的元素

基本上我已经创建了一个多态树数据类型,我需要一种计算给定树中元素数量的方法.这是我的Tree数据类型的声明:

data Tree a = Empty
| Leaf a
| Node (Tree a) a (Tree a)
deriving (Eq, Ord, Show)
Run Code Online (Sandbox Code Playgroud)

所以我可以像这样定义一个Ints树:

t :: Tree Int
t = Node (Leaf 5) 7 (Node (Leaf 2) 3 (Leaf 7))
Run Code Online (Sandbox Code Playgroud)

但是,我需要一个函数来计算其中一个列表中的元素数量.我已经定义了这个递归函数,但是我得到错误"推断类型不够通用":

size :: Tree a -> Int
size Empty   = 0
size (Leaf n)    = 1
size (Node x y z)    = size x + size y + size z
Run Code Online (Sandbox Code Playgroud)

这里有什么我不该做的吗?

recursion haskell functional-programming count

7
推荐指数
2
解决办法
5279
查看次数

解析器中的运算符优先级和关联性(Haskell)

我试图扩展一个递归下降的解析器来处理新的运算符,并使它们正确关联.最初只有四个运算符(+ - /*),它们都具有相同的优先级.我正在看的函数是parseExpRec函数:

parseExpRec               :: Exp -> [Token] -> (Exp, [Token])    
parseExpRec e  []         =  (e, [])
parseExpRec e1 (op : ts)  = 
 let (e2, ts') = parsePrimExp ts in
   case op of
    T_Power     -> parseExpRec (BinOpApp Power  e1 e2) ts'
    T_Plus      -> parseExpRec (BinOpApp Plus   e1 e2) ts'
    T_Minus     -> parseExpRec (BinOpApp Minus  e1 e2) ts'
    T_Times     -> parseExpRec (BinOpApp Times  e1 e2) ts'
    T_Divide    -> parseExpRec (BinOpApp Divide e1 e2) ts'
    T_GreaterThan   -> parseExpRec (BinOpApp GreaterThan    e1 e2) …
Run Code Online (Sandbox Code Playgroud)

parsing haskell

6
推荐指数
2
解决办法
1817
查看次数

NSNumberFormatter最多显示3位数

我想这样做,所以我的一个UILabel只显示最多3位数.所以,如果相关值是3.224789,我想看3.22.如果值是12.563,我想看12.5并且如果值是298.38912那么我想看298.我一直在尝试使用NSNumberFormatter来实现这一点,但是当我将最大有效数字设置为3时小数点后总是有3位数.这是代码:

NSNumberFormatter *distanceFormatter = [[[NSNumberFormatter alloc] init] autorelease];
[distanceFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
[distanceFormatter setAlwaysShowsDecimalSeparator:NO];
[distanceFormatter setMaximumSignificantDigits:3];
Run Code Online (Sandbox Code Playgroud)

我一直以为'有效数字'表示小数点前后的所有数字.无论如何,有没有办法使用NSNumberFormatter完成这个?

谢谢!

iphone significant-digits nsnumberformatter

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

Xcode中的LLDB Python脚本

我刚刚发现了LLDB的这个方便功能,它允许我编写Python脚本,当我在LLDB中的断点时,可以访问帧中的变量.但是在Xcode(v4.5.2)中使用它时遇到了一些问题.首先,我找不到任何说明我应该保留这些Python脚本的地方,以便我可以从LLDB的命令行导入它们.其次,在我键入scriptLLDB后,键盘输入有点错误:退格键不会删除屏幕上的字符,但会有效地从命令中删除它.所以打字primt<bsp><bsp><bsp>int有效意味着print,但它仍然出现primtint在终端上.这只是美学,但它很烦人!

有人能指出我使用Python与LLDB的一些Xcode特定资源吗?

编辑:是另一个有趣的链接,说你可以使用Python为Python创建变量的自定义摘要,但我找不到任何与此相关的内容.

python scripting xcode lldb

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

非法调用非静态成员函数(C++)?

我正在开发一种基于用户控制球的游戏,该球在屏幕上的区域之间移动.屏幕的"地图"在文件ThreeDCubeGame.cpp中定义:

char m_acMapData[MAP_WIDTH][MAP_HEIGHT];
Run Code Online (Sandbox Code Playgroud)

ThreeDCubeGame.cpp处理大部分与地图有关的事情,但播放器(和键盘输入)由ThreeDCubePlayer.cpp控制.当玩家进入新的地图单元格时,游戏必须检查该单元格的内容并采取相应的行动.我正在尝试使用ThreeDCubeGame.cpp中的这个函数:

inline char GetMapEntry( int iMapX, int iMapY ) { return m_acMapData[iMapX][iMapY]; }
Run Code Online (Sandbox Code Playgroud)

因此,为了检查播放器是否被允许移动到地图单元格中,我使用来自ThreeDCubePlayer.cpp的此函数调用:

if (ThreeDCubeGame::GetMapEntry(m_iMapX+MAP_OFF_X, m_iMapY+MAP_OFF_Y) == ' ')
{
// do stuff
}
Run Code Online (Sandbox Code Playgroud)

但是,当我编译它时,我收到警告"错误C2352:'ThreeDCubeGame :: GetMapEntry':非静态成员函数的非法调用".这与变量的范围有关吗?如果不重新设计所有代码,它是否可以修复?

c++ scope

5
推荐指数
2
解决办法
3万
查看次数

在Haskell中将值插入有序树中

基本上我已经定义了一个Tree数据类型,其定义如下:

data Tree a = Empty
| Leaf a
| Node (Tree a) a (Tree a)
deriving (Eq, Ord, Show)
Run Code Online (Sandbox Code Playgroud)

现在我必须创建一个函数来将值插入到有序树中(它不必对树进行排序,只需添加值).这是我到目前为止所提出的:

insert :: a -> Tree a -> Tree a
insert x Empty      = Leaf x
insert x (Leaf m)   | m < x     = Node (Leaf x) m Empty
                    | otherwise = Node Empty m (Leaf x)
insert x (Node l m r)   | x > m     = Node (Leaf l) m (insert x r)
                        | otherwise = Node …
Run Code Online (Sandbox Code Playgroud)

sorting tree haskell insert

5
推荐指数
2
解决办法
4528
查看次数

Google Static Maps API:生成包含路径的静态地图

我正在尝试生成一个带有一些点的静态谷歌地图,以及连接这些点的一些线条(我很快就会将这些线条与行车路线相对应,但后来会出现这种情况).现在我有这样的代码来生成URL:

def getStaticMapAddress(self, route):
    url = "http://maps.google.com/maps/api/staticmap?center="+str(route[0].location.lat)+","+str(route[0].location.lng)+"&zoom=6&size=400x400&markers="
    i=0
    while i<len(route):
        url += str(route[i].location.lat)+","+str(route[i].location.lng)
        i=i+1
        if (i < len(route)):
            url += "|"
    url += "&path=color:0xff0000ff&weight:5"
    i=0
    while i<len(route):
        url += "|"+str(route[i].location.lat)+","+str(route[i].location.lng)
        i+=1
    url += "&sensor=false"
    return url
Run Code Online (Sandbox Code Playgroud)

在此功能中,"路线"是具有相关位置的用户列表.使用我的测试数据,生成了以下URL:

http://maps.google.com/maps/api/staticmap?center=50.8202008,-0.1324898&zoom=6&size=400x400&markers=50.8202008,-0.1324898|51.447341,-0.0761212|51.4608947,-2.5884312&path=color:0xff0000ff&weight:5|50.8202008,-0.1324898|51.447341,-0.0761212|51.4608947,-2.5884312&sensor=false
Run Code Online (Sandbox Code Playgroud)

如果查看静态地图,可以看到标记,但不能看到路径.我一直在查看这方面的文档(http://code.google.com/apis/maps/documentation/staticmaps/#Paths),我看不出哪里出错了.查看示例,我的URL似乎与示例具有完全相同的格式.有谁知道我做错了什么?

谢谢

python google-maps google-maps-static-api

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

如何观察 [NSCursor currentCursor] 的变化?

我有一个带有自定义光标的应用程序,我使用 NSCursor 的自定义包装器实现了该应用程序(大部分主要代码设计为可移植操作系统,因此在上面我假装 NSCursor 是 Windows 样式的光标)。当用户 cmd+tabs 回到窗口时,我遇到了一些光标没有改回我的自定义问题的问题,我想看看是什么改变了 currentCursor 的值。到目前为止,我尝试设置断点的任何地方都没有给我任何信息。

所以,我想知道是否有办法(在 Xcode 中)在 [NSCursor currentCursor] 的值发生变化时立即中断。这可能吗?我的应用程序可以访问此类数据吗?

谢谢 - 我希望我已经说清楚了。当我什至不确定我想做什么时,很难解释!

macos xcode objective-c cursor nscursor

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

读取MIDI文件(C):0x00出现在var-length值结束之后

我正在尝试编写一些函数来读取MIDI文件.我一直指的是许多提供规范的网站,但主要是这一个:http://www.sonicspot.com/guide/midifiles.html

我一直在我下载的超级马里奥兄弟主题的MIDI文件上测试它,我得到了一些意想不到的数据.可能是文件格式错误,但我认为更有可能是我做错了.下面是我遇到的麻烦的数据(从十六进制编辑器),什么我我知道这件事情:

4D 54 72 6B 00 00 00 19 00 FF 51 03 05 7B 71 00 FF 58 
|---------| |---------| || || || |------| || ||
    MTrk    Chunk size  || || ||  Tempo   || ||
             (25 bytes) || || ||(ms per   || ||
                        \/ || ||1/4 note) || ||
                VLen value || ||          \/ ||
          (Event at time 0)|| ||  VLen value ||
                           \/ || (event at   ||
                 Beginning of ||  time 113) …
Run Code Online (Sandbox Code Playgroud)

c midi hex file-format binaryfiles

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

Django GenericForeignKey 使用 related_name

我正在尝试重构我的架构,以便当前简单的字段ForeignKey变为GenericForeignKey. 所以,在我的模型中,这个:

ref_track = models.ForeignKey(Track, unique=False, related_name='posts_by_ref')
Run Code Online (Sandbox Code Playgroud)

...变成这样:

ref_content_type = models.ForeignKey(ContentType)
ref_id = models.PositiveIntegerField()
ref_object = generic.GenericForeignKey('ref_content_type', 'ref_id')
Run Code Online (Sandbox Code Playgroud)

以前我posts_by_ref在一些数据库查询中使用过,例如检查附加到轨道的帖子的提交状态(帖子对象是上述字段所在的位置)。但是,我知道related_name使用 a 时不支持GenericForeignKey,那么还有另一种方法来复制这种行为吗?

python database django foreign-keys

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