learnyouahaskell 提到以下内容:
Enum类中的类型是
(), Bool, Char, Ordering, Int, Integer, Float and Double
Run Code Online (Sandbox Code Playgroud)
有没有办法在GHCi中找到哪种类型是哪种类型类型的实例,反之亦然?
我希望像:t我们在GHCi中使用的那样找到表达式的类型.
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平台上获得的所有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)法律的严格证明,一般涉及与外界交谈,可能非常复杂.
谢谢.
我正在尝试本教程中给出的以下示例.
我无法理解的是案件是如何保护案件'c'而_根本不使用的on?
我修改了这里给出的代码,但是当我运行它时,我得到错误"非详尽的模式以防万一":
*StateGame> main "accaaaa"
*** Exception: state1.hs:(27,5)-(31,36): Non-exhaustive patterns in case
Run Code Online (Sandbox Code Playgroud)
为什么会这样?