小编Abh*_*kar的帖子

如何在Haskell中得到工作?

Haskell中的代数数据类型(ADT)可以通过从它们派生而自动成为某些类型(例如Show,Eq)的实例.

data  Maybe a  =  Nothing | Just a
  deriving (Eq, Ord)
Run Code Online (Sandbox Code Playgroud)

我的问题是,这是如何deriving工作的,即Haskell如何知道如何为派生的ADT实现派生类型类的功能?

另外,为什么deriving仅限于某些类型类?为什么我不能编写自己可以派生的类型类?

haskell typeclass derived-types derived-instances deriving

96
推荐指数
3
解决办法
4万
查看次数

JUnit测试在Eclipse中传递但在Maven Surefire中失败

我已经使用JUnit 4和spring-test库编写了一些JUnit测试.当我在Eclipse中运行测试然后运行正常并通过.但是当我使用Maven运行它们时(在构建过程中),它们无法给出与弹簧相关的错误.我不确定导致问题的是什么,JUnit,Surefire或Spring.这是我的测试代码,弹簧配置和我从Maven获得的异常:

PersonServiceTest.java

package com.xyz.person.test;

import static com.xyz.person.util.FjUtil.toFjList;
import static junit.framework.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;

import java.util.List;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.transaction.TransactionConfiguration;
import org.springframework.transaction.annotation.Transactional;

import com.xyz.person.bo.Person;
import com.xyz.person.bs.PersonService;

import fj.Effect;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath*:personservice-test.xml" })
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = false)
public class PersonServiceTest {

    @Autowired
    private PersonService service;

    @Test
    @Transactional
    public void testCreatePerson() {
        Person person = new Person();
        person.setName("abhinav");
        service.createPerson(person);

        assertNotNull(person.getId());
    }

    @Test
    @Transactional
    public void testFindPersons() {
        Person …
Run Code Online (Sandbox Code Playgroud)

java spring maven-2 spring-test surefire

86
推荐指数
7
解决办法
9万
查看次数

Clojure的代理人如何与Scala的演员比较?

我在Scala(源代码)(Scala 2.8 RC7)和Clojure(源代码)(Clojure 1.1)中编写了一个环网络拓扑模拟,用于比较Actors和Agents.

虽然Scala版本显示几乎恒定的消息交换率,因为我将网络中的节点数从100增加到1000000,但Clojure版本显示的消息速率随着节点数量的增加而减少.同样在单次运行期间,Clojure版本中的消息速率随着时间的推移而降低.

所以我很好奇Scala的演员如何与Clojure的特工比较?Agent本身是否比Actors更少并发或代码编写效率低(autoboxing?)?

PS:我注意到Scala版本中的内存使用量随着节点数量的增加(100万个节点> 500 MB)而增加很多,而Clojure版本使用的内存要少得多(100万个节点约100 MB).

编辑:

这两个版本都在相同的JVM上运行,并且所有JVM参数和Actor和Agent配置参数都设置为默认值.在我的机器上,Scala版本为100到100万个节点提供了大约5000个消息/秒的消息速率,而Clojure版本以100个节点的60000消息/秒开始,对于100万个节点减少到200个消息/秒.

编辑2

事实证明我的Clojure版本编写效率低下.我将nodes集合的类型更改listvector,现在它显示了一致的行为:100个节点100000消息/秒,100000个节点80000消息/秒.所以Clojure Agent似乎比Scala Actors更快.我也更新了链接的来源.

concurrency scala clojure agents actor

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

Scala中的持久数据结构

Scala中的所有不可变数据结构都是持久的吗?如果不是,哪一个是哪个,哪个不是?那些持久的行为特征是什么?另外,它们如何与Clojure中的持久数据结构进行比较?

scala clojure persistent data-structures

25
推荐指数
3
解决办法
9532
查看次数

是否可以在Clojure中创建循环引用?

忽略本机互操作和瞬态,是否可以在Clojure中创建包含直接循环引用的任何数据结构?

似乎不可变数据结构只能包含对其自身先前版本的引用.是否有任何Clojure API可以创建一个引用自身的新数据结构?

Scheme具有letrec形式,允许创建相互递归的结构 - 但据我所知,Clojure没有任何类似的东西.

这个问题与将Clojure移植到iOS有关 - 它没有垃圾收集,但确实有引用计数.

clojure circular-reference

22
推荐指数
2
解决办法
1664
查看次数

如何在Scala中进行简单的类型转换?

这应该是一个愚蠢的问题.

scala> val aFloat = 1.5f
aFloat: Float = 1.5
Run Code Online (Sandbox Code Playgroud)

如何以简单的方式将aFloat强制转换为Int?

我已经知道要使用了a.asInstanceOf[Int].但它需要太多的击键.

types casting scala

22
推荐指数
2
解决办法
2万
查看次数

功能编程和类型系统

我一直在学习各种函数式语言,包括Haskell,Scala和Clojure.Haskell有一个非常严格且定义良好的静态类型系统.Scala也是静态类型的.另一方面,Clojure是动态类型的.

所以我的问题是

  1. 类型系统在函数式语言中扮演什么角色?
  2. 语言是否有必要使用类型系统才能使其正常运行?
  3. 语言的"功能"级别与语言类型系统的类型有何关联?

type-systems programming-languages functional-programming clojure

15
推荐指数
2
解决办法
3116
查看次数

如何在Maven和Tycho中保持插件清单版本和pom版本同步

我正在使用Maven和Tycho构建一个eclipse插件.Tycho通过检查插件的清单文件为Maven生成pom.xml文件.现在清单文件和pom文件都有插件的版本,需要手动保持同步.这是因为我在生成的pom文件中进行了一些自定义,并且每次更改清单中的版本时都无法覆盖它.

我的问题是,有没有办法使用Tycho自动保持这些版本同步?

eclipse-plugin tycho maven

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

基于Scala的框架如何为完整的Scala新手堆叠 - Lift,Play,Circumflex等

最近基于Scala的Web框架社区已经有了很多变化.来自Rails,Rake,ActiveRecord和迁移 - 这是一个很好的Scala框架来构建生产站点?

如果它提供了更好的可维护代码,那么性能的一小部分是可以接受的.如果内置协作功能也会很好 - 例如数据库迁移等.

java migration scala web-frameworks lift

14
推荐指数
3
解决办法
3194
查看次数

在Java中扩展数组的最有效方法?

(如果之前有人问过道歉 - 我不敢相信它没有,但我找不到一个.也许我的搜索功能很弱.)

多年来,我已经"知道"Java没有缩放数组的本机函数(即将每个元素乘以常量).所以我一直这样做:

for (int i=0; i<array.length; i++) {
  array[i] = array[i] * scaleFactor;
}
Run Code Online (Sandbox Code Playgroud)

这实际上是最有效的方式(例如,在这个应用程序中,它是一个大约10000个双倍的数组)?或者,还有更好的方法?

java arrays performance vector multiplication

13
推荐指数
3
解决办法
1万
查看次数