草庐IT

haskell-tagsoup

全部标签

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

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++ - 用 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++ - 连接 Haskell 和 C++

我想在C++程序中调用一些Haskell函数。为此,我申请了these说明并根据我的代码和系统进行调整。目前我有以下内容:主程序.cpp共享头文件和cpp文件生成文件cpp/一些cpp和头文件haskell/你好.hs生成文件如下:CPP_SOURCES=main.cpptextures.cppcpp/game.cpp\cpp/piece.cppcpp/factories.cppcpp/utils.cppHASKELL_SOURCES=haskell/hello.hsall:main;./mainmain:$(CPP_SOURCES)HaskellPart.o;g++\-lsfml-g

windows - 如何在 WinGhci、Haskell 中设置标志

我对n+k模式有疑问。我想启用它,但我不知道如何。我在我的.hs文件的开头添加了{-#LANGUAGENPlusKPatterns#-},但它不起作用。我也尝试在我的ghci控制台中输入-NPlusKPatterns但它只会给我错误。 最佳答案 你需要输入:set-XNPlusKPatterns在ghci中启用它们。为了完整起见,我要指出,如果您从命令提示符加载ghci而不是运行winghci,您可以使用ghci-XNPlusKPatterns加载它,而不是交互式地执行:set-XNPlusKPatterns。您可以通过交互式定义n

windows - 在 Haskell 中获取本地 AppData 文件夹

我正在尝试使用Haskell以与版本无关的方式获取Window的本地AppData文件夹的位置,但我在这样做时遇到了一些麻烦。我已经尝试使用System.Win32.Registry库,并且能够获得下面的代码(经过反复试验),但我无法弄清楚如何使用regQueryValueEx或任何其他函数来获取我需要的值。importSystem.Win32.TypesimportSystem.Win32.RegistryuserShellFolders::IOHKEYuserShellFolders=regOpenKeyExhKEY_CURRENT_USER"Software\\Microsoft

windows - 如何将 Haskell 嵌入到批处理文件中(hash-bang runhaskell for Windows)?

在安装了GHC的类UNIX系统上,我可以创建一个包含以下内容的文件#!/usr/bin/envrunhaskellmain=putStrLn"Hello,IamaUNIXscriptfile."使文件可执行,这将执行给定的Haskell代码。如何在Windows.bat文件中执行等效操作?最好不创建额外的文件,不设置环境变量,如果使用UNC路径或包含空格的路径访问批处理文件,Haskell命名空间不被污染,并且如果Haskell代码包含错误。 最佳答案 经过反复试验,事实证明这是可行的。我设计了以下内容:@(set/p=--这种机制