我正在研究Haskell中的一个小概念项目,它需要一个循环缓冲区.我已经设法使用具有O(1)旋转的数组创建缓冲区,但当然需要O(N)来插入/删除.我发现使用列表的实现似乎需要O(1)进行插入和删除,但由于它保持左右列表,因此在旋转时越过某个边界将花费O(N)时间.在命令式语言中,我可以实现具有O(1)插入,删除和旋转的双向链接循环缓冲区.我认为这在像Haskell这样纯粹的功能性语言中是不可能的,但我很想知道我是不是错了.
I'm trying to use sprof to profile some software (ossim) where almost all the code is in a shared library. I've generated a profiling file, but when I run sprof, I get the following error:
> sprof /home/eca7215/usr/lib/libossim.so.1 libossim.so.1.profile -p > log
Inconsistency detected by ld.so: dl-open.c: 612: _dl_open: Assertion `_dl_debug_initialize (0, args.nsid)->r_state == RT_CONSISTENT' failed!
Run Code Online (Sandbox Code Playgroud)
The instructions I was following said that I needed libc version at least 2.5-34, I have libc version 2.12.2 (Gentoo, kernel 2.6.36-r5).
I can't …
我正在使用pthreads处理多线程C应用程序.我有一个写入数据库的线程(数据库只能在单个线程中使用),还有几个线程正在收集数据,处理它,然后需要将结果发送到数据库线程进行存储.我在上面提到过,在C中创建一个多编写器安全队列是"可能的",但是我看到这个提到的每个地方只是说它"对于这个例子来说太复杂了"而只是演示了一个单一编写器的安全队列.
我需要以下东西:
编辑:读取线程不应该在空队列上旋转,因为没有写入可能会有几分钟的时间,并且会有大量写入的短暂突发.
我正在为我正在学习的课程编写一个编译器.该类不是专门的Haskell,而是我使用Haskell编写我的编译器和解释器.我有一个cabal包设置,希望我的教授可以轻松运行/编译.我对构建工具字段中的两个可执行文件感到高兴和alex,但是Cabal忽略了这一点,然后抱怨它无法找到Happy和Alex应该生成的模块.如果我手动运行:
alex LimpScanner.x
happy LimpParser.y
Run Code Online (Sandbox Code Playgroud)
然后cabal完美运行.
我以为我让cabal自动运行它们,但也许我记得不完美.
limp.cabal:
-- limp.cabal auto-generated by cabal init. For additional options,
-- see
-- http://www.haskell.org/cabal/release/cabal-latest/doc/users-guide/authors.html#pkg-descr.
-- The name of the package.
Name: limp
-- The package version. See the Haskell package versioning policy
-- (http://www.haskell.org/haskellwiki/Package_versioning_policy) for
-- standards guiding when and how versions should be incremented.
Version: 0.1
-- A short (one-line) description of the package.
Synopsis: LIMP Compiler (Compiler Construction course project)
-- A longer description of the package.
-- Description:
-- URL …Run Code Online (Sandbox Code Playgroud) 我希望能够从Haskell输出音频.我目前在OS X(Snow Leopard)上使用GHC 6.10.我已经尝试构建插孔库(使用JackOSX)和PortAudio库,但它们似乎都没有效果.是否有一种相对简单的方法从Mac上的Haskell程序进行实时音频输出?
编辑:清晰度
我正在尝试在haskell做一个小实验,想知道是否有可能利用懒惰来处理IO.我想编写一个函数,它接受一个字符串(一个字符列表)并生成一个字符串,懒洋洋地.我希望能够懒洋洋地从IO中提取字符,因此每个字符一旦可用就会被处理,并且输出将在必要的字符可用时生成.但是,我不太确定是否/如何从IO monad中的输入生成一个懒惰的字符列表.
我目前正在使用net-snmp为一些内部硬件开发监控应用程序.在调用snmp_pdu_free()我的代码段错误时,我的代码有点工作.我用它创建了pdu结构snmp_create_pdu().我想要一个API参考,看看我实际上是否正确编写了我的代码,但我找不到一个.我发现的最好的东西是net-snmp网站上的教程,但是在我调试时确定我的代码是否正确对它们没什么帮助.
是否有IO操作可以为我提供RTS初始化的OS线程数?能够将此作为来自Control.Parallel.Strategies模块的parBuffer函数的参数使用会很好.
我正在编写一个简单的Javascript库,它使用了一些WebGL代码.我想在.js文件中内嵌着色器源代码,因为我的选择是将它们作为脚本标记包含在每个页面中,或者将它们作为单独的文件加载为AJAX.这些选项都不是特别模块化的.但是,由于javascript中缺少多行字符串,我对如何内联WebGL代码没有任何好的想法.我有没有想到的方法?
我正在实现一种算法,我需要操作网格,快速添加和删除边缘,并在CCW或CW顺序的顶点附近快速迭代.
翼边结构用于我正在使用的算法的描述中,但是我找不到关于如何在该数据结构上执行这些操作的任何简明描述.
假设我有一个带有3个POSIX线程的C程序,共享一个全局变量,互斥量和条件变量,其中两个执行以下的伪代码:
...process data...
pthread_mutex_lock( &mutex );
variable = data_ptr;
pthread_cond_signal( &cond );
pthread_mutex_unlock( &mutex );
Run Code Online (Sandbox Code Playgroud)
第三次运行:
while(1) {
while( variable == NULL ) {
pthread_mutex_wait( &cond, &mutex );
}
printf( "Data is %d", *variable );
}
Run Code Online (Sandbox Code Playgroud)
假设第三个线程将看到前两个中的每一个的数据是否安全?
换句话说,如果一个线程在互斥锁和一个条件变量上作用,是否可以安全地假设它是下一个获取锁定的,如果它被发出信号,而不是某个其他线程可能正在等待锁?