小编F. *_*Zer的帖子

如何计算 (> 0) 的类型?

每当我有一个运算符部分,其左参数部分应用时,即:

(0 >)
Run Code Online (Sandbox Code Playgroud)

我只是简单地将运算符重写为前缀形式并继续计算:

(>) 0
Run Code Online (Sandbox Code Playgroud)

如何计算部分应用了正确参数的运算符部分的类型?

haskell types

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

为 Maybe 数据类型定义 Ord 实例

Ord这是数据类型实例的最小完整定义吗Maybe?这是对的吗 ?

instance Ord (Maybe a) where
  compare (Just x) (Just y) | x < y     = LT
                            | x > y     = GT
                            | otherwise = EQ
  compare _        _                    = LT
Run Code Online (Sandbox Code Playgroud)
instance Ord (Maybe a) where
  (Just x) <= (Just y) = x <= y
  _            _       = False
Run Code Online (Sandbox Code Playgroud)

haskell functional-programming

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

如何手动推断实例 const :: a -&gt; a -&gt; a

Haskell 类型变量是隐式量化的。关键字forall出现在 后::

例如,const输入签名

const :: a -> b -> a
Run Code Online (Sandbox Code Playgroud)

写为:

const :: forall a b. a -> b -> a
Run Code Online (Sandbox Code Playgroud)

我的问题是:我如何有效地推断签名

const :: forall a. a -> a -> a
Run Code Online (Sandbox Code Playgroud)

从这个定义来看。我尝试使用从一阶逻辑(例如普遍消除)中学到的概念,但无法从理论角度证明其合理性。

当然,这是有道理的,因为没有什么可以排除b与 相同a

为什么我不能证明使用该推理规则是合理的?因为我不能对第二个量词使用消除,因为变量会发生冲突。我无法实例ba.

haskell types quantifiers

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

是否存在 1 &lt;= x &lt;= 255 范围内的 Int 类型?

我想创建以下声明:

data Color = B | W deriving Read

type Cell = (Color, Int) where 1 <= Int <= 255
Run Code Online (Sandbox Code Playgroud)

这个问题有什么解决办法吗?该类型实际上接受任何类型,Int但超出该范围的类型不应编译。

haskell

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