小编Ale*_*lex的帖子

我可以在Haskell中约束类型/数据构造函数的参数化多态类型吗?

我有一个参数化类型,我想约束到一个数字类型,更具体地说是一个Fractional,例如:

data Rating a = (Fractional a) => Score a | Unscored deriving (Show, Eq)
Run Code Online (Sandbox Code Playgroud)

这样API的用户可以定义他们可能使用哪种非整数类型(Float或Double?),但我写的内部API代码仍然可以对数字类型执行算术运算.我不希望它是一个整数,因为我的"内部操作"的结果可能不是整数,我的理解是使用Fractional会导致更准确的结果.

编译上面(至少在GHCI中)给出了以下错误:

    Data constructor `Score' has existential type variables, a context, or a specialised result type
  Score :: forall a. Fractional a => a -> Rating a
  (Use ExistentialQuantification or GADTs to allow this)
In the definition of data constructor `Score'
In the data declaration for `Rating'
Run Code Online (Sandbox Code Playgroud)

这告诉我,我正在做一些我可能不想继续尝试的事情; 即我的设计是垃圾.

我想我试图在这个API中说出以下内容:"当你使用Rating类型时,它的参数必须是一个子类,Fractional所以我可以对它执行准确的算术".我怎么能实现这个目标?还是我离开了标记和/或过度工程?

haskell types api-design parametric-polymorphism

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

Haskell < - 用符号表示

众所周知,<-在do块中只是语法糖>>=,但是<-在Haskell源中的任何地方定义,或者它只是语法语法的一部分的语法结构,因此解析器只是<-用适当的形式替换每一个>>=?

monads haskell functional-programming

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

这个尾递归Haskell函数的错误在哪里?

我必须以两种方式在Haskell中实现sum函数.一个函数具有尾递归,另一个函数没有尾递归.

这是没有尾递归的那个,它完美地工作

sum1 x = if x==0 then 0 else x + sum1(x-1)
Run Code Online (Sandbox Code Playgroud)

这是我的尾递归尝试,它不起作用:

sum2 x = help 0 y
help x y = if y==0 then x else help(x+y,y-1)
Run Code Online (Sandbox Code Playgroud)

有人可以指出错误吗?

recursion haskell functional-programming tail-recursion

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

Spring Boot Apache CXF JAX-RS服务上下文路径/基本URI

我在Spring Boot中配置我的JAXRS服务器,如下所示:

    JAXRSServerFactoryBean factoryBean = new JAXRSServerFactoryBean();
    factoryBean.setBus(this.bus);
    factoryBean.setFeatures(singletonList(swagger2Feature()));
    factoryBean.setServiceBeans(Arrays.asList(blah(), blah2(), blah3()));
    factoryBean.setAddress("/api/v1/"); // HERE

    List<Object> providers = new ArrayList<>();
    providers.add(new JacksonJaxbJsonProvider());
    factoryBean.setProviders(providers);

    BindingFactoryManager manager = factoryBean.getBus().getExtension(BindingFactoryManager.class);
    JAXRSBindingFactory restFactory = new JAXRSBindingFactory();
    restFactory.setBus(factoryBean.getBus());
    manager.registerBindingFactory(JAXRSBindingFactory.JAXRS_BINDING_ID, restFactory);

    return factoryBean.create();
Run Code Online (Sandbox Code Playgroud)

但是,URL总是要求/services在最前面,这很麻烦(但不是世界末日)。有什么方法可以删除/services并将其部署到根上下文中吗?

cxf jax-rs spring-boot

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

dgrid在按钮单击上添加新行

我正在尝试制作一个可编辑的网格.我想为用户提供更多行,如果需要的话.我试过去他们的文档,但这并不明显.

还有什么grid.newRow()呢?

javascript dojo dgrid

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