问题标签 [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 投票
2 回答
891 浏览

haskell - 是否可以将此递归haskell 函数转换为地图调用?

这是我的代码:

我正在寻找一种使用 map 函数并摆脱这个递归函数的方法。这可能吗?如果可以,我该怎么做?

0 投票
3 回答
357 浏览

haskell - 这些值在这个 haskell 函数中来自哪里?

假设我有以下功能:

的结果sumAll [(1,1),(2,2),(3,3)]将是12

我不明白这些(x,y)值来自哪里。好吧,我知道它们来自xs变量,但我不明白如何。我的意思是,在没有 where 关键字的情况下直接执行上面的代码,它会是这样的:

而且我无法理解,在上面的代码中,f变量和(x,y)变量如何表示(\(x,y) -> x+y)lambda 表达式。

0 投票
4 回答
10851 浏览

string - 将前导零的haskell Int转换为String

假设我有一个 Int = 08 类型的变量,如何将其转换为保持前导零的字符串?

例如:

输出:8

我希望输出为“08”。

这可能吗?

0 投票
5 回答
5065 浏览

performance - 你需要多长时间才能适应 Haskell?

我是一个不错的 C/C++ 程序员。我发现 Haskell 非常有趣。但在我看来,尽管编写干净的 Haskell 代码相对容易,因为它很好地模仿了数学(我对此非常满意),但在 Haskell 中编写运行速度快的干净代码却非常困难。

更快的 Haskell 快速排序版本非常长且可怕,它与幼稚但短(两行)、干净且直观的实现没有相似之处。长而可怕的 Haskell 版本实际上仍然比更短更简单的 C 对应部分慢得多。

是因为当前的 Haskell 编译器太笨了,还是普通人(当然 SJP 除外)无法编写快速的 Haskell 代码?

0 投票
5 回答
9690 浏览

haskell - 你如何在 Haskell 中进行泛型编程?

来自 C++,我发现泛型编程必不可少。我想知道人们如何在 Haskell 中处理这个问题?

说一下如何在 Haskell 中编写通用交换函数?

Haskell中是否有等效的部分专业化概念?

在 C++ 中,我可以将通用交换函数部分专门化为通用 map/hash_map 容器的特殊函数,该容器具有 O(1) 容器交换的特殊交换方法。你是如何在 Haskell 中做到这一点的,或者 Haskell 中泛型编程的典型例子是什么?

0 投票
5 回答
6182 浏览

haskell - 有哪些适合初学者的 Haskell Primers/Tutorials?

一般来说,有哪些好的链接可以深入研究 Haskell 和函数式编程?

0 投票
4 回答
681 浏览

haskell - 将这些 haskell Int 列表变成不同的列表

我有以下 Int 列表:

列表大小是可变的,它们不只是像这个例子中的 3。它们可以有 1 个或更多元素。然后我有这个:

我需要一个将tAll变成这样的函数:

是否有捷径可寻?

编辑: 对不起,我匆忙发布了这个,这不是我想要的。我更新了上面的代码...

0 投票
3 回答
2325 浏览

haskell - 将 monad 限制为类型类

在 Haskell 中,有没有办法限制 monadM aa满足类型类约束?

我正在将概率建模示例F#转换为Haskell。但是,在 Haskell 中,我省略了,support因为它会更改data Distribution adata (Ord a) => Distribution a. 通过此更改,我收到以下错误:

实际上,always/的类型return是:(Ord a) => a -> Distribution a。有没有办法让我拥有一个 monad Distribution,但强制限制(Ord a)这个 monad?我试过:

但我得到了错误:

所以它有一种方法可以有一个 monad M a,但是a用一个约束来限制Ord a?

谢谢。

0 投票
7 回答
38271 浏览

recursion - foldr 与 foldl(或 foldl')的含义

首先,我正在阅读的Real World Haskellfoldl说永远不要使用,而是使用foldl'. 所以我相信它。

但我不清楚何时使用foldrvs. foldl'. 虽然我可以看到它们在我面前展示的不同工作方式的结构,但我太愚蠢了,无法理解什么时候“哪个更好”。我想在我看来,使用哪个并不重要,因为它们都产生相同的答案(不是吗?)。事实上,我之前对这种构造的经验来自 Rubyinject和 Clojure 的reduce,它们似乎没有“左”和“右”版本。(附带问题:他们使用哪个版本?)

任何可以帮助像我这样聪明的人的见解将不胜感激!

0 投票
8 回答
29072 浏览

haskell - Haskell, Lisp, and verbosity

For those of you experienced in both Haskell and some flavor of Lisp, I'm curious how "pleasant" (to use a horrid term) it is to write code in Haskell vs. Lisp.

Some background: I'm learning Haskell now, having earlier worked with Scheme and CL (and a little foray into Clojure). Traditionally, you could consider me a fan of dynamic languages for the succinctness and rapidity they provide. I quickly fell in love with Lisp macros, as it gave me yet another way to avoid verbosity and boilerplate.

I'm finding Haskell incredibly interesting, as it's introducing me to ways of coding I didn't know existed. It definitely has some aspects that seem like they would aid in achieving agility, like ease of writing partial functions. However, I'm a bit concerned about losing Lisp macros (I assume I lose them; truth be told I may have just not learned about them yet?) and the static typing system.

Would anyone who has done a decent amount of coding in both worlds mind commenting on how the experiences differ, which you prefer, and if said preference is situational?