小编use*_*560的帖子

查找作为类型类实例的所有类型

learnyouahaskell 提到以下内容:

Enum类中的类型是

(), Bool, Char, Ordering, Int, Integer, Float and Double
Run Code Online (Sandbox Code Playgroud)

有没有办法在GHCi中找到哪种类型是哪种类型类型的实例,反之亦然?

我希望像:t我们在GHCi中使用的那样找到表达式的类型.

haskell types typeclass ghci

18
推荐指数
1
解决办法
381
查看次数

Haskell应用变形金刚的例子

www.haskell.org上的wiki告诉我们以下关于Applicative Transformers的内容:

那么应用变形金刚在哪里?答案是,我们不需要特殊的变换器用于应用仿函数,因为它们可以通用方式组合. http://www.haskell.org/haskellwiki/Applicative_functor#Applicative_transfomers

我尝试了以下尝试结合一堆应用函子.但我得到的只是一堆错误.这是代码:

import Control.Applicative
import System.IO

ex x y = (:) <$> x <*> y 
test1 = ex "abc" ["pqr", "xyz"]  -- only this works correctly as expected
test2 = ex "abc" [Just "pqr", Just "xyz"]
test3 = ex "abc" (Just "pqr")
test4 = ex (Just 'a') ["pqr", "xyz"]
test5 = ex (return ("abc"):: IO ()) [Just "pqr", Just "xyz"]
Run Code Online (Sandbox Code Playgroud)

这会产生很多类型错误,虽然我可以部分理解,但我根本无法解决它们.

错误在最后给出.

那么,我如何将Maybe Applicative和List Applicative结合起来呢?

例如,如何组合State Applicative和List Applicative?还有其他的例子吗,比方说,结合了Maybe和List,Maybe和State,最后是所有IO和State应用程序的可怕组合?

谢谢.

GHCi错误消息如下.

example.hs:6:19:
    Couldn't match expected type `[Char]' with …
Run Code Online (Sandbox Code Playgroud)

haskell monad-transformers applicative

11
推荐指数
4
解决办法
1756
查看次数

haskell实例的适用法律证明

我们在Haskell平台上获得的所有Haskell应用类型类的实例是否都被证明满足所有的适用法律?如果是,我们在哪里找到这些证明?

Control.Applicative的源代码似乎不包含任何证据证明各种实例的适用法律确实存在.它只是提到了

-- | A functor with application.
--
--Instances should satisfy the following laws:
Run Code Online (Sandbox Code Playgroud)

然后它只是在评论中陈述法律.

我发现了其他类型类(Alternative和Monad)实例的类似案例.

这些图书馆的用户是否应该自己验证这些法律?

但我想知道这些法律的严格证明是否已由开发商在其他地方提供过?

同样,我知道IO Monad的Applicate(或Monad)法律的严格证明,一般涉及与外界交谈,可能非常复杂.

谢谢.

haskell proof applicative

9
推荐指数
1
解决办法
469
查看次数

为什么此代码会产生"非详尽的模式以防万一"错误?

我正在尝试本教程中给出的以下示例.

我无法理解的是案件是如何保护案件'c'_根本不使用的on

我修改了这里给出的代码,但是当我运行它时,我得到错误"非详尽的模式以防万一":

*StateGame> main "accaaaa"
*** Exception: state1.hs:(27,5)-(31,36): Non-exhaustive patterns in case
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

haskell case guard

1
推荐指数
1
解决办法
191
查看次数