小编fro*_*h03的帖子

Haskell Arrows里面的元组

我想要创建一个元组,它包含一个箭头和一个描述箭头的字符串.如果我用函数(而不是箭头)这样做,下面的工作就像预期的那样:

funTimes10 = (*10)
describe10 = "times 10"

tuple10 :: (Num b) => ((b -> b), String)
tuple10 = (,) funTimes10 describe10
Run Code Online (Sandbox Code Playgroud)

我可以使用fst和访问函数,并snd获取函数的描述字符串.

但是,如果我用箭头交换功能,如下所示:

aTuple10 :: (Arrow a, Num b) => (a b b, String)
aTuple10 = (,) (arr funTimes10) describe10
Run Code Online (Sandbox Code Playgroud)
  • fst 仍然有效并返回我的箭头,但是
  • 我没有得到任何描述字符串snd.

我只收到此错误消息:

Ambiguous type variable `a0' in the constraint:
  (Arrow a0) arising from a use of `aTuple10'
Probable fix: add a type signature that fixes these type variable(s)
In the first …
Run Code Online (Sandbox Code Playgroud)

haskell functional-programming tuples arrows

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

如何在Typeclass Show中用"a"定义Monad实例"m a"?

我想定义一个monad实例,其中容器M为monad,并且包含的​​类型a应该是类的成员Show.应该通过类型系统来确保该约束(其a成员Show).

我尝试过这样的尝试,但M遗憾的是不合适:

data M = forall a. Show a => M a 

instance Monad M where
 return x = M x
Run Code Online (Sandbox Code Playgroud)

所有其他尝试实现这一点,遇到以下问题:由于Monad是一个构造函数类,我没有显式访问a所包含元素的类型,所以我不能限制它.

没有定义新Monad类,有没有人知道这个解决方案?

monads haskell

6
推荐指数
2
解决办法
816
查看次数

添加类型级别自然数

我假设,不可能在haskell中添加两个类型级自然数.这是真的?

假设自然数的定义如下:

class HNat a

data HZero
instance HNat HZero

data HSucc n
instance (HNat n) => HNat (HSucc n)
Run Code Online (Sandbox Code Playgroud)

以类似于以下的方式定义HAdd是否合适:

class (HNat n1, HNat n2, HNat ne) => HAdd n1 n2 ne | n1 n2 -> ne
instance             HAdd HZero HZero HZero
instance (HNat x) => HAdd HZero x     x
instance (HNat n1 
         ,HNat x) => HAdd (HSucc n1)  x (HAdd n1 (HSucc x) (???))
Run Code Online (Sandbox Code Playgroud)

haskell dependent-type

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

GHC语言扩展的源代码在哪里:"箭头"?

我在哪里可以找到源代码,隐藏在语言编译指示之后

{-# LANGUAGE Arrows #-}
Run Code Online (Sandbox Code Playgroud)

我已经阅读了相关论文(如帕特森,箭头的新符号),所以理论上发生的是清楚的.现在我想看看,这是如何实际翻译成源代码的.

我的所有搜索仅引用GHC的用户指南或Control.Arrow的来源.我错过了什么吗?

haskell arrows ghc

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

如何将Haskell的proc-notation重新绑定到用户定义的Arrows?

要重新绑定哈斯克尔的PRoC-符号,段落7.3.11"Rebindable语法和隐含的前奏进口"的GHC用户指南的规定,箭头符号使用arr,first...功能,这些功能在范围之内.它还指出类型"必须非常接近地匹配Prelude类型".

鼓励任何想要使用此功能的人询问.那么,这些类型与Prelude类型的匹配程度有多接近?

haskell ghc

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

如何进一步约束Haskell中的现有类型类

有没有办法进一步约束现有类型类的上下文?

例如,类型类Functor:

class Functor f where
    fmap :: (a -> b) -> f a -> f b
Run Code Online (Sandbox Code Playgroud)

此类定义不强制执行ab作为其元素Show.此类型类也是我自己包含的类,因此我无法影响类定义.它仍然是可能的,到后来只允许a的,并且b是,那是会员Show

haskell functional-programming typeclass

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

通过更新现有字典来创建新字典

我想通过更新现有字典来创建新字典。这表现得像假设:

x = {'a': 1}
x.update({'a': 2})
Run Code Online (Sandbox Code Playgroud)

但是为什么下面的结果是 NoneType?

({'a': 1}).update({'a': 2})
Run Code Online (Sandbox Code Playgroud)

python dictionary python-2.7

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