草庐IT

haskellers

全部标签

java - Haskell 中的 undefined 和 Java 中的 null 有什么区别?

两者都是类型是所有类型(无人居住)的交集的术语。两者都可以在代码中传递而不会失败,直到尝试评估它们。我能看到的唯一区别是,在Java中,有一个漏洞允许null仅针对一个操作进行评估,即引用相等比较(==)--而在Haskellundefined中,根本无法在不引发异常的情况下进行评估。这是唯一的区别吗?编辑我真正想解决的问题是,为什么在Java中包含null是一个如此糟糕的决定,以及Haskell如何逃避它?在我看来,真正的问题是你可以用null做一些有用的事情,即你可以检查它的nullness。因为您可以这样做,所以在代码中传递空值并让它们指示“无结果”而不是“此程序中存在逻辑错误”

java - Haskell 中的 undefined 和 Java 中的 null 有什么区别?

两者都是类型是所有类型(无人居住)的交集的术语。两者都可以在代码中传递而不会失败,直到尝试评估它们。我能看到的唯一区别是,在Java中,有一个漏洞允许null仅针对一个操作进行评估,即引用相等比较(==)--而在Haskellundefined中,根本无法在不引发异常的情况下进行评估。这是唯一的区别吗?编辑我真正想解决的问题是,为什么在Java中包含null是一个如此糟糕的决定,以及Haskell如何逃避它?在我看来,真正的问题是你可以用null做一些有用的事情,即你可以检查它的nullness。因为您可以这样做,所以在代码中传递空值并让它们指示“无结果”而不是“此程序中存在逻辑错误”

xml - 如何使用 Haskell 的 xml 管道解析 GPX 文件?

我想使用xml-conduit来解析GPX文件。到目前为止,我有以下内容:{-#LANGUAGEOverloadedStrings#-}importControl.ApplicativeimportData.TextasTimportText.XMLimportText.XML.CursordataTrkpt=Trkpt{trkptLat::Text,trkptLon::Text,trkptEle::Text,trkptTime::Text}deriving(Show)trkptsFromFilepath=gpxTrkpts.fromDocumentText.XML.readFiled

c++ - 在 Haskell 项目中包含 C++ 源代码

我正在尝试制作一个将在Haskell中公开但在C++中实现的数据结构。到目前为止,我已经在.cpp文件中实现了它,将我需要的所有函数声明为extern"C"并将源文件添加到c-.cabal文件中的sources字段。当我构建项目时(在本例中使用stackbuild),它似乎构建得很好。我知道它正在对C++文件做某事,因为如果有错误它就不会编译。我还没有尝试运行这个项目,因为它是一个库,到目前为止它还没有写任何“可运行”的东西,但repl似乎不起作用。当我尝试运行它时(在本例中为stackrepl),我收到一个丢失的符号错误,其中包含一些损坏的名称,这些名称可能是也可能不是我文件中的名称

c++ - 在 haskell 的 FFI 后面使用 stdout/stderr/stdin 流

我正在开发一个小的haskell程序,它使用我用C++开发的外部静态库。它通过ghc的FFI(外部函数接口(interface))访问库。在这个库中,我想对控制台进行一些输出。但是,在我看来,看起来事物的C++端没有正确的stdout句柄,因为输出没有出现在控制台上。那么,我的问题是:是ghc劫持了这三个流(stdout、stdin、stderr)还是libstdc++只是因为我正在与ghc链接而没有初始化它们?如果我的FFI导入写入标准输出,它们是否需要“安全”?如何将标准输出传递给C函数?我应该直接传递它还是需要C类型?附加说明:我将libstdc++直接链接到可执行文件(即ghc

ios - 将文件读入字符串haskell

这个问题在这里已经有了答案:AHaskellfunctionoftype:IOString->String(4个答案)关闭7年前。相当简单的问题,但我很难克服。我在网上找到的所有示例都没有用,不确定是不是因为它们已经过时并且IO中的某些内容在过去2-3年中发生了变化,或者我遗漏了一些明显的东西。我知道用readFile读取文件返回IOString并且没有简单的方法来摆脱它,但据说可以简单地将文件读入正常String是s它在命令行中工作,但我不能让它在函数中工作。getString::IOStringgetString=readFile"Input.txt"相当简单,但返回IOStrin

android - Haskell Android OpenGL

我在使用Ajhc跟踪OpenGL中的2d对象时一直遇到问题。我不知道如何跟踪我的对象并防止它离开设备的宽度和高度。谁能提供帮助?我的代码在这里:moduleDrawwhereimportCubeVertsimportCoSysimportAndroidNdkimportAndroidNdk.LogimportForeign.Marshal.ArrayspriteMv::Float->Float->Float->Float->Float->IO()spriteMvxydxdyz=dodrawFuncdrawFunc::IO()drawFunc=doc_glDrawArraysc_GL_T

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