问题标签 [haskell]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
2188 浏览

.net - 哪种语言更适合通用编程,F# 还是 Haskell?

我目前正在学习 Haskell,您更喜欢哪种语言(F# 或 Haskell)来编写通用应用程序?

你认为哪种语言更强大?

0 投票
6 回答
19390 浏览

haskell - 如何在现实世界中使用函数式编程?

函数式语言很好,因为它们通过消除状态来避免错误,还因为它们可以轻松地为您自动并行化,而不必担心线程数。

不过,作为 Win32 开发人员,我可以将 Haskell 用于我的应用程序的某些 dll 吗?如果我这样做了,是否会自动为我带来真正的优势?如果是这样,是什么给了我这个优势,编译器?

F# 是否会自动为您并行化您跨多个内核和 cpu 编写的函数?你会看到任务管理器中的线程数增加吗?

基本上我的问题是,我怎样才能以实际的方式开始使用 Haskell,如果我这样做,我真的会看到一些好处吗?

0 投票
2 回答
19153 浏览

haskell - do 块中 case 表达式的 Haskell 语法

case我无法用块中的表达式完全弄清楚这个语法问题do

什么是正确的语法?

如果你能纠正我的例子并解释它,那将是最好的。

一点更新。我的源文件是空格和制表符的混合体,它导致了各种问题。只是给从 Haskell 开始的任何其他人的小费。如果您遇到问题,请检查源代码中的制表符和空格。

0 投票
3 回答
774 浏览

c - Haskell FFI / C MPFR 库包装问题

为了创建任意精度的浮点数/替换 Double,我尝试使用 FFI 包装MPFR,但尽管我付出了所有努力,但最简单的代码仍然不起作用。它编译,它运行,但在假装工作一段时间后它会模拟地崩溃。一个简单的 C 版本代码可以愉快地将数字“1”打印到(小数点后 640 位)总共 10,000 次。Haskell 版本,当被要求做同样的事情时,在“1.0000...0000”的 289 次打印输出和 385 次打印输出后默默地破坏(?)数据,它导致断言失败和炸弹。我不知道如何继续调试它,因为它“应该工作”。

该代码可以在http://hpaste.org/10923阅读并在http://www.updike.org/mpfr-broken.tar.gz下载

我在 FreeBSD 6 上使用 GHC 6.83,在 Mac OS X 上使用 GHC 6.8.2。请注意,您需要为库和头文件(以及那些从 GMP) 来成功编译它。

问题

  • 为什么 C 版本可以工作,而 Haskell 版本却失败了?接近 FFI 时我还缺少什么?我尝试了 StablePtrs 并得到了完全相同的结果。

  • 其他人可以通过编译和运行我的代码来验证这是否只是 Mac/BSD 的问题吗?(C 代码“有效”吗?Haskell 代码“无效”有效吗?)Linux 和 Windows 上的任何人都可以尝试编译/运行并查看是否得到相同的结果吗?

C代码:(works.c)

Haskell 代码:(Main.hs --- 不起作用)

0 投票
6 回答
5252 浏览

scala - 任何使用软件事务内存的实际经验?

似乎最近对 STM(软件事务内存)框架和语言扩展的兴趣越来越大。 Clojure尤其具有出色的实现,它使用MVCC(多版本并发控制)而不是滚动提交日志。GHC Haskell 还有一个非常优雅的 STM monad,它也允许事务组合。最后,为了稍微吹嘘一下我自己的号角,我最近为 Scala 实现了一个 STM 框架,它静态地强制执行引用限制。

所有这些都是有趣的实验,但它们似乎仅限于那个领域(实验)。所以我的问题是:你们有没有人在现实世界中看到或使用过 STM?如果是这样,为什么?它带来了什么样的好处?性能呢?(在这一点上似乎有很多相互矛盾的信息)你会再次使用 STM 还是更喜欢使用其他一些并发抽象,比如演员?

0 投票
25 回答
18565 浏览

haskell - Haskell 的隐藏特性

Haskell 编程语言有哪些鲜为人知但有用的特性。(我知道该语言本身鲜为人知,但请与我合作。即使是对 Haskell 中简单事物的解释,例如用一行代码定义斐波那契数列,也会得到我的支持。)

  • 尝试限制对 Haskell 核心的回答
  • 每个答案一个功能
  • 提供功能的示例和简短描述,而不仅仅是文档链接
  • 使用粗体标题作为第一行标记特征
0 投票
2 回答
10155 浏览

file - Haskell:将文件中的每一行插入到列表中

我目前正在使用 Haskell 进行项目,并且发现自己遇到了一些麻烦。我应该读取“dictionary.txt”文件中的每一行并将其插入到列表中,但我似乎不能这样做。我有这个代码:

它应该得到每一行(我知道它确实得到每一行,因为用“putStrLn inpStr”替换“inpStr:list”可以正常工作,显示所有行),并将其插入列表但我得到以下错误:

可能是因为 hGetLine 不是字符串,而是 IO 字符串,我不知道如何处理以获得可以插入到列表中的正确字符串。我不知道如何解决这个问题,或者问题到底是什么,但如果有人知道如何正确地将文件中的每一行放入列表中,我将不胜感激。

提前致谢!

0 投票
8 回答
6328 浏览

shell - 在 MSYS shell 上沸腾 - 它可以更换吗?

我需要一个可维修的 MSYS 外壳。这是我目前的困境:

默认的 rxvt.exe 具有滚动条和复制粘贴功能,但不会将控制字符或箭头键发送到 shell 中正在运行的程序(如解释器/调试器)。在使用 Haskell 解释器 ghci 时,这是一个真正的难题。

另一个 shell sh.exe 处理控制字符(或至少其中一些),但没有滚动条或复制和粘贴。

rxvt 在输出缓冲方面也有(相对)更多的问题

我有哪些选择?替换外壳是否需要 msys 感知?我想要的只是一个健全的环境来使用 Haskell (ghc)、C++ (gcc) 和基本工具链(make 和 what not)。如果它不涉及疯狂的恶作剧,我愿意编译一个 shell。

0 投票
2 回答
1249 浏览

graphics - 如何从 Functional MetaPost 查看输出的 .mp 文件

我对在 Mac OS X 上使用 Functional MetaPost 很感兴趣:

http://cryp.to/funcmp/

我正在寻找类似的教程:

http://haskell.org/haskellwiki/Haskell_in_5_steps

但是对于一个简单的 FuncMP 示例,即使用 GHC,我可以编译一些简单的东西,例如:

但我不知道如何查看这个 foo.1.mp 输出。(它给出了关于找不到“virmp”的运行时错误;我的 MetaPost 二进制文件是“mpost”;我无法弄清楚如何覆盖此参数或我的 .FunMP 文件正在或应该做什么......)我可以运行mpost ,但输出 (foo.1.1) 是什么,PostScript?每股收益?我该如何使用它?(我想我只需要一个简单的 LaTeX 文件,其中包含 EPS 图或其他东西......)

最好是生成输出(我可以查看的 .ps 或 .pdf),这样我就可以使用 Functional MetaPost真正到达某个地方,学习它,玩它,而不是用我的头撞到路径、二进制文件和 shell 命令。

0 投票
7 回答
5559 浏览

haskell - 使用 foldr 实现 zip

我目前正在阅读 Real World Haskell 的第 4 章,我正试图围绕使用 foldr 来实现 foldl

(这是他们的代码:)

我想我会尝试zip使用相同的技术来实现,但我似乎没有取得任何进展。甚至可能吗?