小编Cet*_*ert的帖子

哪些绿色线程库可用于C,可以匹配Haskell绿色线程的性能和易用性?

forkIO在Haskell中编程时,我习惯于依赖GHC 用于可移植轻量级线程.

什么是C的等效库,可以提供相同的可扩展性和易用性?

具体来说,我需要C等价物至少以下两个功能.

forkIO     :: IO () -> IO ThreadId
killThread ::             ThreadId -> IO ()
Run Code Online (Sandbox Code Playgroud)

我假设我的应用程序,如果线程只打开阻塞操作而不是被强制挂起就足够了,因为所有线程都经常阻塞网络IO,我只使用splice系统调用要求Linux内核在套接字之间推送数据.


更新

本文比较了数字和表格

结果有利于Protothreads.由于我没有使用过任何其他图书馆,我很乐意听到任何使用/开发此类图书馆的人.

c concurrency networking haskell green-threads

23
推荐指数
2
解决办法
5220
查看次数

如何指定GHC应使用哪些LLVM二进制文件?

我已成功PortFusion使用全新的64位GHC 7.6.1 Release Candidate 1 for Windows构建.

使用来自http://www.drangon.org/mingw的新下载的本机64位 mingw二进制文件,该软件包易于安装(在一系列不相关的小修复之后)作为一个简单的network

CC=mingw64/bin/gcc cabal install
Run Code Online (Sandbox Code Playgroud)

LLVM同一网站上还有一个工具包.

现在我想知道如何在编译期间GHC使用特定的LLVM二进制文件.


它是否像上面那样简单和类似:

#v??v
 LLVM=????????? ghc -W -O2 -fllvm -optlo-O3 --make src/Main.hs
 LLVM=????????? cabal install PortFusion -f llvm #¹
#^??^
Run Code Online (Sandbox Code Playgroud)

¹定义llvm标志的PortFusion.cabal中的相关行

还是完全不同?

haskell compilation llvm ghc

20
推荐指数
2
解决办法
887
查看次数

使用GHC API评估Haskell语句/表达式

对于我正在编写的工具(http://hackage.haskell.org/package/explore),我需要一种在运行时读取haskell函数定义的方法,将它们应用于我的工具中的值并检索其应用程序的结果.

任何人都可以使用GHC(6.10.4或6.12.1)API给我一个非常基本的例子吗?

要在运行时从文件中读取的示例函数定义:

f x = 10**(4/1102*x - 1)
Run Code Online (Sandbox Code Playgroud)

预期的计划产出

--mapM_ print $ map f [428, 410, 389]
3.577165388142748
3.077536885227335
2.5821307011665815
Run Code Online (Sandbox Code Playgroud)

!! UPDATE!
我发布了一个快速回答,但它在执行目录中创建了一个目标文件,任何提示都可以避免这种情况并避免使用所有文件IO.我还希望看到一个在内存中执行所有操作的版本:例如,用户在GUI中提供函数定义,编译/评估不会创建任何目标文件.

evaluation haskell runtime ghc ghc-api

19
推荐指数
2
解决办法
2682
查看次数

在parallel.foreach范围之外增加计数值

如何在parallel.foreach循环范围之外增加一个整数值?什么是同步访问并行循环外的对象的最轻的方法?

var count = 0;
Parallel.ForEach(collection, item =>
{
  action(item);
  // increment count??
}
Run Code Online (Sandbox Code Playgroud)

c# parallel-processing synchronization locking

18
推荐指数
4
解决办法
2万
查看次数

使用GHC(+ LLVM)将GMP静态链接到Haskell应用程序

  1. 如何删除动态依赖libgmp并从中继续:

    linux-vdso.so.1 =>  (0x00007fffdccb1000)
    libgmp.so.10 => /usr/lib/x86_64-linux-gnu/libgmp.so.10 (0x00007fb01afc1000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fb01acc7000)
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fb01aabe000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fb01a8ba000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fb01a69d000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb01a2df000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fb01b249000)
    
    Run Code Online (Sandbox Code Playgroud)

    对此(目前需要):

    linux-vdso.so.1 =>  (0x00007fffdccb1000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fb01acc7000)
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fb01aabe000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fb01a8ba000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fb01a69d000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb01a2df000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fb01b249000)
    
    Run Code Online (Sandbox Code Playgroud)

    以干净,可移植的方式适用于所有GNU/Linux发行版(而不是搞乱BSD(包括OS X))?

  2. 在分发针对多个GNU/Linux发行版的单个Haskell二进制文件时,您是否看到任何其他可能导致当前所需列表中存在问题的依赖项?


笔记:

haskell ghc cabal static-linking

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

F#中的Control.Observable和Control.Event模块之间有什么相似之处/不同之处?

F#(至少在Visual Studio 2012中)具有Control.ObservableControl.Event.

  • 它们有什么关系?
  • 应该使用哪一个?
  • 这两者之间是否存在性能差异?

我还想知道通过.NET的反应式扩展所实现的.NET IEnumerable/ IObservable对偶性的Haskell模块/包/功能.

events f# haskell

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

ISO 8601:2004中的C预处理器__TIMESTAMP__

我怎样才能__TIMESTAMP__在ISO 8601:2004中取代?

__TIMESTAMP__

Sat Jul  6 02:50:06 2013
Run Code Online (Sandbox Code Playgroud)

VS

__TIMESTAMP_ISO__

2013-07-06T00:50:06Z
Run Code Online (Sandbox Code Playgroud)

c gcc clang icc c-preprocessor

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

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

通过cabal(cabal-install)在命令行指定ghc选项,而无需编辑包的.cabal文件

当我安装vector时:

cabal install vector
Run Code Online (Sandbox Code Playgroud)

我得到了很多SpecConstr限制警告,如果我可以指定,它会消失-fspec-constr-count=SOMETHING-HIGHER.

  1. cabal install vector -fspec-constr-count=HIGH
    
    Run Code Online (Sandbox Code Playgroud)

    工作?

  2. 如果X依赖vector,是否有一种方式可以说X.cabalvector最好依赖(如果X还没有安装)-fpsec-constr-count=HIGH

  3. vector仍然保持还是有现在一个更值得推荐的选择吗?

haskell vector compiler-flags ghc cabal

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

是否有一个JavaScript物理库可以使用div等HTML元素而不是画布?

玩家堆栈

我正在为游戏制作一个简单的堆栈,玩家可以移动编号的棋子,以跟踪他们与完成收集胜利手段的距离.

目前我使用jQuery UI的可拖动和可拖放.它很适合轻松启动,但一次只能移动一件:http://cssdeck.com/labs/cowmmudd/4.

  • 我想将移动的部件外包给一个真正的JavaScript物理库,而不是使用jQuery UI.(因此当一个人一直移动上排的蓝色4时,它会强制该行上的所有棋子.)
  • 我想继续使用普通的HTML元素来表示我的作品,因为它们更容易风格和推理.(我已经看过所有的Javascript物理库,canvas但是我想要像谷歌那样实现相同的目标:http://mrdoob.com/projects/chromeexperiments/google-gravity/)

有人可以使用他们所知道的最好的JavaScript物理库提供控制普通,非画布HTML元素的放置和碰撞的简约示例吗?

javascript html5 physics game-physics

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