haskell相关内容

《哈斯克尔与普里蒂》中的单曲

我的问题是,Haskell中的单体是否真的保持了Haskell的纯净,如果是的话,又是如何保持的。我经常读到关于副作用是如何不纯的,但有用的程序(例如I/O)需要副作用。在接下来的一句话中,哈斯克尔对此的解决方案是单体。然后,人们在某种程度上解释了单药,但并没有真正说明它们如何解决副作用问题。 我见过this和this,我对答案的解释实际上是我自己读到的--IO单元格的操作和操作不是I/O本 ..
发布时间:2022-04-20 13:58:50 其他开发

&>&>操作员做什么?

我正在学习哈斯克尔的Monad。 我读了here关于Monad的很好的解释,我觉得对>>=绑定运算符和Monad有了解(不是全部,但我是刚刚开始的)。 在我老师的幻灯片上,我发现了这个: class Monad m where (>>=) :: m a -> (a -> m b) -> m b -- "bind" (>>) ..
发布时间:2022-04-20 13:51:47 其他开发

阅读器单体可以做什么是应用程序功能不能做的?

阅读http://learnyouahaskell.com/functors-applicative-functors-and-monoids#applicative-functors后,我可以提供一个将函数用作应用函数器的示例: 假设res是一个有4个参数的函数,而fa、fb、fc、fd都是只接受一个参数的函数。那么,如果我没有记错的话,这个实用的表达是: f fa fb ..
发布时间:2022-04-20 13:45:47 其他开发

Monad定义中的样板代码

由于Functor-Applicative-Monad Proposal,Monad是应用类的子类,而应用类又是函数子类。从数学上讲,这似乎是一个明智的选择,我对此没有任何问题。 然而,令我恼火的是,即使fmap和pure和的相应定律无论如何都是由单子定律固定的,也需要写下函数式和应用实例。事实上,在上面的链接提案中,它们自己写道:&您只需添加以下代码即可从Monad派生这些实例: ..
发布时间:2022-04-20 13:41:58 其他开发

Haskell程序崩溃-无限递归?错误的Where语句?

我需要计算从1..n开始的所有阶乘的乘积。 当我调用此函数Double_Factors(至少有2个或3个作为参数)时, 它似乎被调用了一会儿,但什么也没有发生,几秒钟后GHCI就关闭了。怎么啦?有没有什么我看不见的无限递归? 以下是我的代码: double_factorial :: Integer->Integer double_factorial n | n ..
发布时间:2022-04-03 19:29:02 其他开发

利用Haskell中的递归方案解决变化制造问题

我正试图从blog on recursion schemes中理解组织同构。我在运行博客中提到的解决change making problem的例子时遇到了一个问题。 找零问题取一种货币的面额,并试图找到创造一笔给定货币所需的最小硬币数量。下面的代码摘自博客,应该可以计算出答案。 {-# LANGUAGE DeriveFunctor #-} module Main where impo ..

修复OCaml中的数据类型

如何使用OCaml或SML表示来自Haskell的以下数据类型? newtype Fix f = In (f (Fix f)) 推荐答案 我已经answered this question on the mailing-list了(我必须说,您在两个不同的地方问这个问题没有几天的好时间,我有点不高兴,因为这可能会引起重复的努力),但是让我们在这里重复一下。 这里有一个困难,因为O ..
发布时间:2022-03-04 15:12:08 其他开发

如何从作用域中的约束族派生类型类实例?

编辑:我已经跟进了更多specific question。感谢这里的答题者,我认为接下来的问题更好地解释了我在这里介绍的一些念力。 tl;dr在构造函数上使用带有存在约束的GADT时,我很难在表达式中获得约束的证明。(很严重,对不起!) 我已将一个问题归纳为以下几点。我有一个简单的GADT,它表示称为X的点和称为F的函数应用程序。点X被约束为Objects。 data GADT ..

非穷举模式匹配仅仅是因为我省略了`否则=`?

我用Haskell编写了一个简单的程序,播放the guessing game described in The Rust Programming Language book: 它的工作原理是这样的:程序将生成一个介于1和100之间的随机整数。然后,它会提示玩家输入一个猜测。输入猜测后,它将指示猜测是过低还是过高。如果猜测正确,游戏将打印祝贺并退出。 这是我写的: import ..
发布时间:2022-02-26 15:47:37 其他开发

在运行时检查类型是否为Show in Haskell的实例?

假设我在Haskell中有一个用于存储值的简单数据类型: data V a = V a 我想使V成为Show的实例,而不考虑a的类型。如果a是Show的实例,则show (V a)应返回show a,否则应返回错误消息。或在伪哈斯克尔中: instance Show (V a) where show (V a) = if a instanceof Show ..
发布时间:2022-02-21 10:45:17 其他开发

如何在 Linux Debian Wheezy 上安装 Haskell 平台?

最初我以为我会使用 apt-get 使用几个命令来安装 Haskell,但它似乎有点复杂. 当我查看 haskell org 下载页面时,我下载了 haskell-platform-2013.2.0.0.tar.gz.然后下一步有点令人困惑.它要求在安装平台之前安装 GHC 但同时如果打开 GHC 下载页面,它会显示一些警告,例如 Stop !.....我们建议安装 Haskell 平台而不 ..
发布时间:2022-01-24 23:00:00 服务器开发

Haskell 构建生态系统中的类似 SBT 的功能

我最近一直在使用带有 SBT 的 Scala.REPL 循环有一个方便的功能:~COMMAND,意思是对项目中的每个源文件更改执行 COMMAND.例如: ~测试 和 ~编译 非常对快速开发很有用.我想知道,有没有人知道 Haskell 类似的东西,一个阴谋集团的外壳,也许? 解决方案 你可以很容易地使用 inotifywait. 只需在您的项目目录中启动一个终端并运行以下内 ..
发布时间:2022-01-24 22:32:00 其他开发

你在 Haskell 中发现了更高级别的类型有什么用途?

更高等级的类型看起来很有趣.这个例子来自 Haskell wikibook: foo :: (forall a.a -> a) -> (Char,Bool)foo f = (f 'c', f True) 现在我们可以评估 foo id 而不会导致编译器爆炸.这个例子在本书后面很快出现了我在其他几个地方看到的真实例子:ST monad 和 runST.这很酷. 但是我还没有遇到过这样的情况 ..

Milner 是否让多态性成为 2 级特征?

let a = b in c 可以被认为是 (\a -> c) b 的语法糖,但在一般的类型化设置中它不是案子.例如,在 Milner 演算中 let a = \x ->;x in (a True, a 1) 是可键入的,但看似等效的 (\a -> (a True, a 1)) (\x -> x) 不是. 但是,后者在系统 F 中是可键入的,第一个 lambda 为 2 级类型. 我的 ..
发布时间:2022-01-24 16:56:48 其他开发