相关疑难解决方法(0)

GHCi如何打印由"纯"创建的部分应用值?

我一直在玩Applicative实例,以弄清楚它们是如何工作的.但是,老实说,我不明白这种行为.

如果我定义自己的数据类型,然后pure在没有其他参数的情况下应用它,则不打印任何内容,但如果我尝试将某些内容应用于结果,则会出错.

ghci> data T = A
ghci> pure A
ghci> pure A 0

<interactive>:21:1:
    No instance for (Show T) arising from a use of ‘print’
    In a stmt of an interactive GHCi command: print it
Run Code Online (Sandbox Code Playgroud)

但是,如果我创建T一个实例Show,则A在两种情况下都打印出来.

ghci> data T = A deriving (Show)
ghci> pure A
A
ghci> pure A 0
A
Run Code Online (Sandbox Code Playgroud)

我真正不明白的是,如何pure A在两种情况下以不同的方式打印一个值.是不是pure A部分应用?

我理解为什么pure A 0在第一个例子中调用错误而在第二个例子中调用错误 - 这对我来说是有意义的.那是使用的((->) r)实例 …

haskell typeclass applicative

5
推荐指数
2
解决办法
132
查看次数

标签 统计

applicative ×1

haskell ×1

typeclass ×1