问题标签 [haskell-prelude]

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 投票
3 回答
564 浏览

haskell - 如何定义一个基于 sum 类型的子类型过滤列表的 lambda 函数?

该示例取自“Haskell programming from first principle”过滤器功能的目标是摆脱除“DbDate”类型之外的所有对象。

在 somone 的 github 上,我找到了一种使用列表理解和模式匹配 (1) 过滤总和类型的方法。现在我正在尝试找到一种方法来使用 lambda 函数(2)或“if then”函数的正常“case of”重新定义此过滤器。当我处理自定义数据类型时,我不知道如何正确检查函数的参数类型。

本书没有向读者介绍任何超级特定的库函数,只是标准的地图、折叠、过滤器和其他你会在序曲中找到的东西。

0 投票
2 回答
869 浏览

haskell - 在 haskell 中使用替代前奏

我对替代前奏很感兴趣。我知道有很多选择:

  1. https://hackage.haskell.org/packages/#cat:Prelude
  2. https://guide.aelve.com/haskell/alternative-preludes-zr69k1hc

我知道他们中的很多人修复的一件简单的事情是文本,另一件是在类似head错误的函数中,当你可能更喜欢它们更安全时。

但是,当我尝试使用这些替代方法时head,hmm 中的行为似乎完全破坏了该功能,并且对我来说看起来不像是一种改进。这里有些例子:

序幕

基础

安全的

优雅的前奏曲

回避

里约

序曲

这看起来不错——它也适用于尾巴,对吧?

好吧,这不完全是一个替代品。

我错过了什么,为什么这会更好,为什么这些函数会在它们失败的情况下被定义?

0 投票
1 回答
315 浏览

haskell - 简明扼要地优先考虑 ghci 中的非 Prelude 函数

我有以下进口:

我尝试使用该函数lines换行符,并且该函数同时存在于PreludeandData.Text中,我得到以下信息:

从错误消息中可以清楚地看出,这是失败的,因为和lines都存在。PreludeData.Text.lines

我想告诉 ghci 采用除 Prelude 之外导入的 /any/ 函数,而不是 Prelude 中定义的任何函数,尤其是文本。

我认为这样做的一种方法是明确地、有选择地隐藏Prelude.lines

但这似乎不可行:如果我试图隐藏一个前奏功能,我将失去所有我真正想要的其他功能。

什么是保持Data.Text函数并隐藏它们与冲突的正确方法Prelude.*?我是否卡住了所有内容的名称间距

并使用,例如:

?

如果是这样,那似乎有点麻烦,并且建议制作一个 Prelude 包,该包本质上是 PreludeWithoutPreludeText 加载除此之外的所有其余部分 - 考虑到OverloadedStrings.

0 投票
1 回答
47 浏览

haskell - 这个错误中的 IHaskellPrelude 来自哪里?

我正在使用 ihaskell jupyter 笔记本,所以我知道这个问题的明显答案。

但我也在使用从 Data.List 显式导入,它显示了这个错误

所以我实际上对引用 IHaskellPrelude 的行感到困惑,而不是我从 Data.List 显式导入,这不是前奏。(这是这个问题之后的一个更具体的问题)

我的错误信息:

看到关于 fieldLabelModifier 的行了吗?它调用 IHaskellPrelude.drop。但如果你看下面,我的代码调用 L.drop:

完整代码:

我正在一个新的会话中工作,新的终端,只运行了这个。我不明白为什么引用给我的错误消息使用来自 IHaskellPrelude.drop 的函数,而不是我明确调用的 L.drop。

更新

根据回答的建议,当我尝试时:

我得到:

这些的哪种组合与 Prelude 的要求兼容?

0 投票
1 回答
318 浏览

haskell - “Prelude.read: no parse”,自己的数据类型

我正在尝试从文件中读取两个自己的数据类型“BoardEdge”的列表。当我尝试运行代码时,出现异常:

“Main.hs:Prelude.read:没有解析”

正如我怀疑我在负责验证输入(validateInput)的函数上得到这个。当我在 ghci 中尝试插入两个 BoardEdge“对象”时,它运行良好并给出了 True。

谁能给我建议我做错了什么以及如何解决问题?

数据类型:

主文件

Board.hs 中的验证函数导入合格为 B:

我的输入文件是这样的:

0 投票
1 回答
48 浏览

haskell - 'show' 返回我想要的东西和一个奇怪的字符串

我有一个函数需要获取列表中的所有整数并将它们显示为字符串,IE“Beans 1.29”应该返回 129。我的函数如下

它似乎用其他奇怪的东西返回整数。有没有办法可以将 int 作为字符串返回?

0 投票
3 回答
408 浏览

function - 我在使用 Haskell 时遇到了我找不到的错误

所以我试图创建这个函数 AgregarMon,它基本上向“Polinomio”添加了一个“Monomio”,Monomio 最终会成为 Polinomio 中的一个元素,它是一个列表。你会更好地理解一点点

我一直在看我的代码一个小时,但我找不到问题。错误说:

第 45 行是上面代码的第四行。对不起,如果我缺少信息,请让我现在。以防万一,有人不知道,fst 和 snd 在 Prelude 上。fst 从“Monomio”中获取第一个元素,然后获取第二个元素。fst = (a,b)->a snd (a,b) -> b

0 投票
1 回答
189 浏览

haskell - haskell 中的 const 函数声明

我对该函数的一个特定示例感到困惑const。所以类型声明声明const :: a -> b->a该函数接受两个类型参数ab返回一个类型a。例如:

根据声明,这是有道理的。但是,我遇到了这个具体的例子:

这让我质疑我对函数声明的理解。我知道这个函数只需要两个参数,因为我试过:

现在这让我放心,它只需要 2 个参数。那么这是如何工作的呢?不是(1+)参数吗?如果不是,那是什么?

0 投票
1 回答
555 浏览

haskell - 是什么导致“Prelude.chr:不好的论点”?

我编写了以下 Haskell 程序,其目的是像凯撒密码一样运行:

我的ghc版本如下:

我在macos(Catalina)上编译Haskell:

然后我运行我的代码:

为什么我会得到Prelude.chr: bad argument?是什么原因造成的,我能做些什么来解决这个问题?

我读过其他人遇到此错误,但在他们的情况下,删除*.hi文件解决了问题。我已删除Prog1d.hi(以及Prog1d.oand Prog1d),但没有效果。我觉得这可能是由我的代码中的某些内容引起的,可能是第 41 行:

但是这条线就像第 38 行一样,它适用于-encode用例。我一定遗漏了一些明显的东西。

我是Haskell的新手,所以请帮助我。我主要习惯于用 C++、python、Java 等命令式语言编写代码,还不熟悉 Haskell 和其他函数式语言的思想和语法。

感谢您阅读本文!

0 投票
2 回答
116 浏览

haskell - 如何修改这个 Haskell 函数,这样我就不必导入 Data.Bool 并且只使用前奏函数?

我想在不导入 Data.Bool 的情况下仅使用 prelude 内置函数来构建下面的函数。我想将 bool 函数替换为其他函数,因此我不必导入 Data.Bool 并且函数打印与以下函数相同的输出。我该怎么做才能返回相同的输出?