小编cou*_*ech的帖子

未定义参考

我有这些类(和函数):

template <class A>
class Factory{
  public:
    A (*binOp(void))(A,A);
};
int sum(int a, int b){
  return a + b;
}
class IntFactory : public Factory<int>{
  public:
    int (*binOp(void))(int,int){
      return &sum;
    }
};
template <class A>
class SpecializedList{
  protected:
    List<A>* list;
    Factory<A>* factory;
  public:
    SpecializedList(List<A>* list,Factory<A>* factory){
      this -> list = list;
      this -> factory = factory;
    }
    A sum(){
      return (list -> foldLeft(factory -> zero(), factory -> binOp()));
    }
};

// in main
SpecializedList<int>* …
Run Code Online (Sandbox Code Playgroud)

c++

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

隐式强制?

我不明白为什么这个代码类型检查:

error1 :: ErrorT String (ReaderT Int IO) Int
error1 = asks id
Run Code Online (Sandbox Code Playgroud)

fyi,asks有这种类型:

asks :: Monad m => (r -> a) -> ReaderT r m a
Run Code Online (Sandbox Code Playgroud)

另一方面,我能够理解,这个代码类似于:

reader1 :: ReaderT Int IO Int
reader1 = asks id
Run Code Online (Sandbox Code Playgroud)

id有类型,a -> a并且有一个Monadfor 的实例IO,因此编译器可以推断出类型.这对我来说很清楚.

ErrorT是NEWTYPE和Haskell的规范状态,(约newtypes部分):

...它创建了一个必须明确强制转换为原始类型的独特类型......

根据我的理解,我应该能够得到相同的类型中error1 唯一明确,具有一定的胁迫与此类似:

reader2 :: ReaderT Int IO (Either String Int)
reader2 = fmap (\i -> Right i) reader1

error2 :: ErrorT …
Run Code Online (Sandbox Code Playgroud)

haskell monad-transformers newtype

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

Rebind用无类型类monad表示

可以重新绑定(>> =)并使用显式字典传递返回monad,如下所示:

{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE RebindableSyntax #-}

module Lib where

import Prelude hiding ((>>=), return)

data MonadDict m = MonadDict {
  bind :: forall a b. m a -> (a -> m b) -> m b ,
  ret :: forall a. a -> m a }

(>>=) :: (MonadDict m -> m a) -> (a -> (MonadDict m -> m b)) -> (MonadDict m -> m b)
return :: a -> (MonadDict m -> m a)

monadDictIO …
Run Code Online (Sandbox Code Playgroud)

monads haskell typeclass do-notation

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

haskell传递参数中的映射

如何在haskell中将Data.Map映射Int传递给[Char]?函数头如何?我们假设函数将返回一个int

import qualified Data.Map as M
someFunction :: <insert your answer here> -> Int
Run Code Online (Sandbox Code Playgroud)

haskell

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

maven附加依赖项

我创建了一个简单的maven 109项目 - maven-archetype-quickstart.
然后,添加pom.xml到derby的依赖项.
当我运行时mvn dependency:tree,我看到,正确解析了依赖:
[INFO] \- org.apache.derby:derby:jar:10.8.1.2:compile.
但是当我看到生成的包时mvn package,它只有3.2kB而且依赖性不存在.为什么?这个怎么运作?

maven

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