在Haskell中,我可以定义一个Tree:
data Tree a = Empty | Node a (Tree a) (Tree a)
我怎么能在Scala中写这个?
我不确定如何将[A]Scala中的type参数保持Node匹配Tree的类型a.
可能重复:
c malloc和calloc之间的区别
请解释一下这句话的意义,
malloc()和calloc()函数之间的另一个区别是malloc()函数分配的内存包含垃圾值,而calloc()函数分配的内存包含全零.
来源('C'编程,Salim Y. Amdani)
谢谢
自定义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()的明确指南?
该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那样好."
我看了这个答案,但你能举个例子来帮我理解吗?
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) 我的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)
谢谢,凯文
听听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) 了解一下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演示了这个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功能.
我正在寻找以下功能:
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)
有没有符合我想要的签名的功能?