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

haskell - Haskell Typeclass 速记

因此,我有一对类型类,我将经常一起使用它们,并且我想避免每次都指定它们。基本上,而不是把

在我所有类型规范的开头,我宁愿把

所以,我最初的想法是声明一个新的类型类

但这并没有像我希望的那样自动工作:

手动创建实例似乎很麻烦,所以接下来,我想我可能会尝试自动创建实例:

但是编译器不喜欢这样:

那么有没有办法我可以做到这一点?

0 投票
3 回答
1156 浏览

haskell - Haskell 函数定义和缓存数组

我有一个关于在 Haskell 中使用数组实现缓存(记忆)的问题。以下模式有效:

但这不是(程序的速度表明每次调用或其他东西都会重新创建数组):

在 where 子句之外(在“全局范围”中)定义 fA 也适用于任一模式。

我希望有人能指出我对上述两种模式之间区别的技术解释。

请注意,我使用的是最新的 GHC,我不确定这只是编译器的特性还是语言本身的一部分。

编辑: !用于数组访问,所以 fA !5 表示 C++ 语法中的 fA[5]。我对 Haskell 的理解是 (fA !) n 将与 (fA ! n) 相同......而且对我来说写“fn = fA ! n”(不带括号)会更传统。无论如何,无论我如何括号,我都会得到相同的行为。

0 投票
3 回答
3635 浏览

haskell - haskell 类型类中的多个类型参数

我正在尝试在 Haskell98 中进行一些抽象,但不知道该怎么做。

我想做的是为可以转换为列表的类型定义一个类。

但我不知道如何为这个方法定义一个类。我提出了以下三个想法:

第一个不起作用,因为 Haskell98 不允许多个参数类。

第二个不起作用,因为 b 依赖于 a 并且不能为每个 b 实现。

第三个也不起作用,因为我不知道如何用“b”不是最后一个类型参数的类型来实例化类。

或者

我该怎么做这样的事情?

0 投票
4 回答
3363 浏览

math - 如何简化基本算术表达式?

如何简化基本算术表达式?

例如

我需要做什么?


我想到的简化是:

并简化常量子表达式,例如 Plus (Const 1) (Const 2) 将变为 Const 3。我不希望变量(或变量和常量)被连接:Var "st" 与 Var "s" 不同。

我想要实现的是创建一个像上面那样的模块,它使用一个名为simplify :: Expr->Expr

0 投票
3 回答
518 浏览

haskell - haskell中的代数类型

如何使用基本算术简化表达式?

0 投票
3 回答
1518 浏览

haskell - 将表达式转换为字符串表示?

考虑以下 Haskell 代码:

如何将表达式转换为字符串表示?

例如

0 投票
0 回答
488 浏览

haskell - 原始递归

我将如何使用原始递归定义函数“简化”?

简化 :: Expr -> Expr
...

简化 使用基本算术简化表达式,例如简化 (Plus (Var "x") (Const 0)) = Var "x"

0 投票
2 回答
2463 浏览

haskell - Haskell 中的符号简化(使用递归?)

我怎样才能给出一个包含以下所有表达式的一般规则?例如,一个表达式,另一个用于 sub 和一个用于 mult。我需要使用递归,但我很困惑......

0 投票
2 回答
560 浏览

haskell - How do I simplify the below expressions using primitive recursion?

Possible Duplicate:
Symbolic simplification in Haskell (using recursion?)

The simplifications I have in mind are

and simplifying constant subexpressions, e.g. Plus (Const 1) (Const 2) would become Const 3. I would not expect variables (or variables and constants) to be concatenated: Var "st" is a distinct variable from Var "s".

For example simplify(Plus (Var "x") (Const 0))= Var "x"

0 投票
3 回答
1783 浏览

haskell - 理解类型错误:“预期签名 Int*Int->Int 但得到 Int*Int->Int”

Steve Yegge关于服务器端 Javascript帖子的评论开始讨论语言中类型系统的优点,该评论描述了:

...来自HM风格系统的示例,您可以在其中获得以下内容:

你能举一个函数定义的例子(或两个?)和一个会产生该错误的函数调用吗?看起来在大型程序中调试可能非常困难。

另外,我可能在Miranda看到过类似的错误吗?(我已经 15 年没用过了,所以我对它的记忆很模糊)