小编Kev*_*ith的帖子

在Scala中编写代数数据类型

在Haskell中,我可以定义一个Tree:

data Tree a = Empty | Node a (Tree a) (Tree a)

我怎么能在Scala中写这个?

我不确定如何将[A]Scala中的type参数保持Node匹配Tree的类型a.

haskell scala abstract-data-type type-parameter

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

C - calloc()v.malloc()

可能重复:
c malloc和calloc之间的区别

请解释一下这句话的意义,

malloc()和calloc()函数之间的另一个区别是malloc()函数分配的内存包含垃圾值,而calloc()函数分配的内存包含全零.

来源('C'编程,Salim Y. Amdani)

谢谢

c malloc calloc

32
推荐指数
3
解决办法
7万
查看次数

何时使用EntityManager.clear()?

自定义JPA映射器类有一个方法:

removeUser()

1. execute 'DELETE' HQL query to remove user
2. call getEntityManager().flush();
3. call getEntityManager().clear();
Run Code Online (Sandbox Code Playgroud)

如果我正确理解clear(),它将从上下文中删除所有持久性实体.-资源

不过,我也在这里读到,

you should define clear architecture- and design guidelines about where a 
clear() can be called. 
Run Code Online (Sandbox Code Playgroud)

什么是何时调用clear()的明确指南?

orm hibernate

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

撰写Monads v.Applicative Functors

Typeclassopedia单子变形金刚节介绍:

不幸的是,monad并不像applicative functor那样组合(如果你不需要Monad提供的全部功能,那么使用Applicative的另一个原因)

纵观类型的>>=<*>,上面的语句,我不清楚.

(<*>) :: Applicative f => f (a -> b) -> f a -> f b
(>>=) :: Monad m => m a -> (a -> m b) -> m b
Run Code Online (Sandbox Code Playgroud)

请解释一下"monad不像compative functors那样好."

我看了这个答案,但你能举个例子来帮我理解吗?

haskell

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

Scala Some v.选项

Some和之间有什么区别Option

scala> Some(true)
res2: Some[Boolean] = Some(true)

scala> val x: Option[Boolean] = Some(true)
x: Option[Boolean] = Some(true)

scala> res2 == x
res3: Boolean = true
Run Code Online (Sandbox Code Playgroud)

我看到Option(null)返回,而Some(null)不会编译:

scala> val x = Option(null)
x: Option[Null] = None

scala> val x: Option[Boolean] = Some(null)
<console>:7: error: an expression of type Null is ineligible for implicit conversion
       val x: Option[Boolean] = Some(null)
                                     ^
Run Code Online (Sandbox Code Playgroud)

scala

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

使用不同的Java版本编译Maven模块

我的maven项目有几个模块:服务器,网络等.

我想在Java 6上构建除了我的服务器模块之外的所有模块.对于服务器模块,我想用Java 7编译它.

这是我下面的pom.xml,但我想如果我将它修改为1.7,那么我的所有模块都将用Java 7编译.另外,maven是否使用JAVA_HOME环境变量来确定要使用哪个Java版本?

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
                        <version>2.3.2</version>
        <configuration>
            <source>1.6</source>
            <target>1.6</target>
            <memmax>2048m</memmax>
        </configuration>
    </plugin>
Run Code Online (Sandbox Code Playgroud)

编辑另外,下面的输出是

maven --version

表明maven正在用1.7编译我的java代码?

vagrant@dev:~/bin/apache-tomcat-7.0.29/bin$ mvn --version
Apache Maven 3.0.4 (r1232337; 2012-01-17 08:44:56+0000)
Maven home: /home/vagrant/bin/apache-maven-3.0.4
Java version: 1.7.0_07, vendor: Oracle Corporation
Java home: /home/vagrant/bin/jdk1.7.0_07/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.2.0-23-generic", arch: "amd64", family: "unix"
Run Code Online (Sandbox Code Playgroud)

谢谢,凯文

maven

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

字符串上的地图与FlatMap

听听Scala中的函数式编程原理的集合讲座,我看到了这个例子:

scala> val s = "Hello World"

scala> s.flatMap(c => ("." + c)) // prepend each element with a period
res5: String = .H.e.l.l.o. .W.o.r.l.d
Run Code Online (Sandbox Code Playgroud)

然后,我很好奇为什么奥德斯基先生没有在map这里使用.但是,当我尝试地图时,我得到的结果与我预期的不同.

scala> s.map(c => ("." + c))
res8: scala.collection.immutable.IndexedSeq[String] = Vector(.H, .e, .l, .l, .o, 
                                                          ". ", .W, .o, .r, .l, 
Run Code Online (Sandbox Code Playgroud)

我期望上面的调用返回一个String,因为我正在处理map,即将函数应用于"序列"中的每个项目,然后返回一个新的"序列".

但是,我可以执行map而不是flatmap一个List[String]:

scala> val sList = s.toList
sList: List[Char] = List(H, e, l, l, o,  , W, o, r, l, d)

scala> …
Run Code Online (Sandbox Code Playgroud)

scala map

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

理解Haskell的Bool派生Ord

了解一下Haskell提供的Bool类型:

data Bool = False | True deriving (Ord)

我不明白比较的原因Bool.

> False `compare` True
LT
> True `compare` False
GT
Run Code Online (Sandbox Code Playgroud)

如果Bool不是从中衍生出来会丢失什么Ord

haskell boolean

25
推荐指数
2
解决办法
1532
查看次数

Powerset功能1-Liner

了解一下Haskell演示了这个powerset功能:

powerset某组是一组一组的所有子集.

powerset :: [a] -> [[a]]  
powerset xs = filterM (\x -> [True, False]) xs
Run Code Online (Sandbox Code Playgroud)

运行它:

ghci> powerset [1,2,3]                    
[[1,2,3],[1,2],[1,3],[1],[2,3],[2],[3],[]]
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?我看到了filterM签名(如下所示),但我不明白它是如何执行的.

filterM :: Monad m => (a -> m Bool) -> [a] -> m [a]

请告诉我这个powerset功能.

haskell

25
推荐指数
2
解决办法
2324
查看次数

申请人'加入'?

我正在寻找以下功能:

Applicative f => f (f a) -> f a

Hoogle告诉我join:

>:t join
join :: Monad m => m (m a) -> m a
Run Code Online (Sandbox Code Playgroud)

有没有符合我想要的签名的功能?

haskell

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