我查看了Haskell 2010报告,发现一个带有&符号的奇怪的转义序列:\&。我找不到解释此转义序列代表什么。它也可能仅位于字符串中。我print "\&"在GHCi中尝试过,它会打印一个空字符串。
表达式1:*p++;where p是指向整数的指针.
p将首先递增,然后由于关联性(从右到左)获取它指向的值.这样对吗?
表达式2:a=*p++;where p是指向整数的指针.
首先取值,p然后分配给a第一个然后p由于后增量而增加.这样对吗?
我看到很多使用这种文件的项目。它通常包含代码中很多地方都需要的函数。从包含一两个函数的类和命名空间的数量中保存代码似乎是合乎逻辑的。但另一方面,它减少了将代码分成逻辑部分的程度,从而使对项目结构的理解更加困难。那么我的问题是什么。在项目中有这样的文件是好是坏?
我使用的语言是 c++,但问题似乎是指任何编程语言。
我将 EGL 与 Xlib 和 OpenGL 一起使用。当我直接在窗户上画画时,一切都很好。现在我试图使用像素图作为 EGL 表面,但 OpenGL 根本没有改变它。
我使用 OpenGL 用蓝色清洁背景。这是我得到的:
这是证明问题的最小示例(绘制这个垃圾)。
更新:我添加了错误检查并发现eglCopyBuffers产生EGL_BAD_NATIVE_PIXMAP. 文档告诉这可能在两种情况下发生:如果实现不支持本机像素图或本机像素图参数无效。他们俩似乎都不太可能。如果我可以毫无错误地创建像素图表面,我相信实现支持本机像素图。如果我可以使用本机方法在像素图上绘制,例如XFillRectangle我相信像素图是有效的。
更新:我在带有 Ubuntu Gnome 的笔记本电脑上运行它。它有两个显卡:Intel HD Graphics 5500(driver=i915) 和 Nvidia GeForce 920m(driver=nvidia)。es2_info 输出的主线(完整版):
EGL_VERSION: 1.4
EGL_VENDOR: NVIDIA
EGL_CLIENT_APIS: OpenGL_ES OpenGL
GL_VERSION: OpenGL ES 3.2 NVIDIA 375.66
GL_RENDERER: GeForce 920M/PCIe/SSE2
Run Code Online (Sandbox Code Playgroud)
代码:
EGL_VERSION: 1.4
EGL_VENDOR: NVIDIA
EGL_CLIENT_APIS: OpenGL_ES OpenGL
GL_VERSION: OpenGL ES 3.2 NVIDIA 375.66
GL_RENDERER: GeForce 920M/PCIe/SSE2
Run Code Online (Sandbox Code Playgroud) 在许多语言中,都有一个函数使用指定的分隔符将字符串分成多个部分。通常称为split。您可以在Python,C#,Java,JavaScript中找到它。但是Haskell虽然相当成熟,但在标准库中仍然缺少这种功能。我知道有一个库叫做split提供此功能。但这与在标准库中具有此功能不同。
因此,尽管此功能非常方便实用,以至于许多其他语言将其添加到标准库中,但这实际上是为什么Haskell没有它的原因。没有它背后的论据是什么?
UPD:问题在于base软件包,即Prelude。换句话说,为什么有words和lines没有split?