草庐IT

haskell-platform

全部标签

c++ - 在 Haskell 中捕获 C++ FFI 异常失败

在Haskell中使用FFI到C++时,在cabalrepl中运行函数时我能够正确捕获异常,但是在使用cabalrun运行时,异常是没有被抓到。一个简单的cabal项目展示了这个问题如下:exception.cabal:name:exceptionversion:0.1.0.0build-type:Simplecabal-version:>=1.10executableexceptionmain-is:Main.hsc-sources:main.cxxbuild-depends:base>=4.7&&主.cxx:#include#includeextern"C"inths_except

c++ - Haskell 将 (0/0) 设置为 qnan

我注意到Haskell(来自Windows上Haskell平台的ghci7.10.2)翻转了QNAN上的标志(0/0::Double)从我在C++中看到的(测试MSVSC++2013和cygwingcc4.9.2)。Haskell生成位模式0xfff8000000000000对于(0/0)(和-(0/0)产生0x7ff8...)。这与C++实现似乎相反。这里有一个测试程序来说明:importData.WordimportUnsafe.CoerceimportText.PrintfdblToBits::Double->Word64dblToBits=unsafeCoercetest::D

c++ - Platform C 预处理器定义

我正在用C++编写一个小型库,我需要能够在许多不同的平台上构建它,包括iPhone、Windows、Linux、Mac和SymbianS60。我编写了大部分代码,使其与平台无关,但有些部分必须在每个平台的基础上编写。目前,我通过根据当前平台包含不同的header来实现此目的,但我无法充实它,因为我不确定为所有平台定义了哪些预处理器定义。对于Windows,我通常可以依靠看到WIN32或_WIN32。对于Linux,我可以依靠看到_UNIX_,但我不太确定其他平台或其64位变体。有没有人有在平台上找到的不同定义的列表,或者我必须求助于配置文件或gcc参数? 最

haskell - 在需要 LANGUAGE CPP 的模块上运行 ghci

我遇到了这个命令序列的问题:wgethttp://hackage.haskell.org/package/github-0.7.1/github-0.7.1.tar.gztarzxfgithub-0.7.1.tar.gzcdgithub-0.7.1ghcisamples/Users/ShowUser.hs我得到的错误是:Github/Private.hs:142:0:error:missingbinaryoperatorbeforetoken"("Github/Private.hs:148:0:error:missingbinaryoperatorbeforetoken"("phase

c++ - 从 C++ 调用 Haskell

我正在尝试从C++调用Haskell。我尝试使用this解释;并且已经在SO上问了一个问题.但是,我没有得到任何答案,所以我想重新制定一个最小的、完整的和可验证的示例。我正在使用Debian,这是我拥有的(在同一文件夹中):C++://main.cpp#include#include"Hello_stub.h"intmain(intargc,char**argv){hs_init(&argc,&argv);std::couthaskell://hello.hsmoduleHellowhereforeignexportccallhelloFromHaskell::IO()helloFro

c++ - Visual Studio : compile list of modules on each platform and configuration

我正在从事一个巨大的C++项目,该项目针对许多平台,每个平台都有多种配置。由于编译时间长,在每个平台上构建整个项目以测试更改是否成功编译不是一种选择。我通常做的是编译我在不同平台/配置组合上修改的单个cpp模块。我想自动执行此过程,无论是使用脚本、VS扩展还是其他任何方式,我都愿意评估不同的选项。我真正需要的是为每个平台和每个配置获取一个cpp文件列表并编译每个文件(基本上遍历配置管理器的所有组合)。这可能吗?关于如何解决这个问题有什么好的建议吗?编辑:我知道这远不是一个完美的解决方案,并且只会发现一部分错误。我仍将不得不面对链接错误、其他cpp单元上的编译器错误取决于修改后的head

c++ - Visual Studio : How to use platform toolset as preprocessor directive?

我的项目有两个平台工具集:v110和v110_xp,根据所选平台,我想包含/排除部分要编译的代码。_MSC_FULL_VER和$(PlatformToolsetVersion)对于这两个平台工具集具有完全相同的值。或者,我尝试使用$(PlatformToolset)如下:_MSC_PLATFORM_TOOLSET=$(PlatformToolset)但问题是$(PlatformToolset)是非数字的。想知道如何将这个非数字值用作预处理器指令?尝试了几种解决方案后我发现了_MSC_PLATFORM_TOOLSET='$(PlatformToolset)'然后#if(_MSC_PLAT

c++ - 用 C++ 编写 Haskell 解释器(使用 ghc 或 hugs 作为库)

我正在编写一个需要解释和评估haskell代码的C++应用程序。此代码在编译时是未知的,而是由用户提供的。有没有办法将haskell编译器/解释器(如GHCi或hugs)用作库?我找到了FFI,但这似乎只适用于编译时已知的haskell代码。我找到了GHCAPI和提示,但它们似乎只在我想从haskell中解释haskell代码时才起作用。 最佳答案 我建议不要使用GHCapi,而是绑定(bind)到Hint对于这种特殊方法,它只是GHCapi的简化包装器。我推荐这个的原因是因为GHCapi的学习曲线有点陡峭。但无论如何,就像我在评论

c++ - Haskell 中的面向对象编程

我试图了解Haskell中的面向对象风格编程,因为我知道由于缺乏可变性,事情会有所不同。我玩过类型类,但我对它们的理解仅限于它们作为接口(interface)。所以我编写了一个C++示例,它是具有纯基和虚拟继承的标准菱形。Bat继承Flying和Mammal,和Flying和Mammal继承Animal.#includeclassAnimal{public:virtualstd::stringtransport()const=0;virtualstd::stringtype()const=0;std::stringdescribe()const;};std::stringAnimal:

c++ - x64 构建 : error MSB8013: This project doesn't contain the Configuration and Platform combination of Debug|Win32

我正在尝试为具有许多解决方案(一些用于CI,一些用于开发人员)和数百个项目的复杂构建运行纯x64构建,并遇到“错误MSB8013:该项目不包含配置和Debug|Win32的平台组合”我已将其简化为一个简单的配置:解决方案A包含项目X和项目Y。项目X有一个项目引用项目Y。解决方案B包含也包含项目X。所有项目或解决方案都不包含Win32平台-它已被删除。当我构建解决方案B(作为x64)时,我收到errorMSB8013:Thisprojectdoesn'tcontaintheConfigurationandPlatformcombinationofDebug|Win32错误信息有时包含额外