我正在做一些关于函数式语言的自学(目前正在使用Haskell).我遇到了一个基于Haskell的任务,需要根据foldr定义地图和过滤器.对于我的生活,我不完全理解如何去做.
例如,当我定义一个地图函数时:
map' :: (a -> b) -> [a] -> [b]
map' f [] = []
map' f (x:xs) = foldr (\x xs -> (f x):xs) [] xs
Run Code Online (Sandbox Code Playgroud)
我不知道为什么列表的第一个元素总是被忽略.意思是:
map' (*2) [1,2,3,4]
Run Code Online (Sandbox Code Playgroud)
得出[4,6,8]而不是[2,4,6,8]
同样,我的过滤器功能:
filter' :: (a -> Bool) -> [a] -> [a]
filter' p [] = []
filter' p (x:xs) = foldr (\x xs -> if p x then x:xs else xs ) [] xs
Run Code Online (Sandbox Code Playgroud)
当运行时:
filter' even [2,3,4,5,6]
Run Code Online (Sandbox Code Playgroud)
结果为[4,6]而不是[2,4,6]
为什么会这样呢?我应该如何定义这些函数以获得预期的结果?我假设我的lambda表达式有问题......
我正在尝试合并两个地图,但没有用于加入集合的内置方法.你是怎么做到的?
我一直在搜索,但找不到任何演示模式匹配案例类的@ _*的示例.
下面是我所指的那种应用程序的示例.
def findPerimeter(o: SomeObject): Perimeter = o match {
case Type1(length, width) =>
new Perimeter(0, 0, length, width)
case Type2(radius) =>
new Perimeter(0, 0, 2*radius, 2*radius)
...
case MixedTypes(group @_*) => {
\\How could @_* be used to check subpatterns of group?
}
Run Code Online (Sandbox Code Playgroud)
}
如果有人可以向我展示一些示例,或者将我指向一个网页,其中包含一些很棒的示例.
谢谢
我有一个嵌入式jetty(版本8.1.8)Web应用程序,我打包为jar,并使用JSP作为其前端.它使用maven 3.0.3版本构建.问题在于,当我这样做时:mvn package除了我的*.jsp文件之外,它包含了所有内容.我试图将它们重新安置在许多不同的地方,但没有运气.
我试图添加<include>src/main/java/**/*.jsp</include>到maven-compiler-plugin我的pom部分.但那也没有效果.
有没有办法确定jsp文件包含在内?
我一直在使用scala进行项目,但是我收到一些我不太了解的错误消息.我正在使用的课程相对简单.例如:
abstract class Shape
case class Point(x: Int, y: Int) extends Shape
case class Polygon(points: Point*) extends Shape
Run Code Online (Sandbox Code Playgroud)
现在假设我创建了一个Polygon:
val poly = new Polygon(new Point(2,5), new Point(7,0), new Point(3,1))
Run Code Online (Sandbox Code Playgroud)
然后,如果我试图确定可能包含多边形的最小可能矩形的位置和大小,我会得到各种我不太了解的错误.
下面是不同尝试的片段以及它们产生的相应错误消息.
val upperLeftX = poly.points.reduceLeft(Math.min(_.x, _.x))
Run Code Online (Sandbox Code Playgroud)
给出错误:
" 扩展函数缺少参数类型((x $ 1)=> x $ 1.x) "
val upperLeftX =
poly.points.reduceLeft((a: Point, b: Point) => (Math.min(a.x, b.x)))
Run Code Online (Sandbox Code Playgroud)
给出这个错误:
" 类型不匹配;
找到:( Point,Point)=> Int
required :( Any,Point)=> Any "
我对这两个错误消息都非常困惑.如果有人能够更清楚地解释我做错了什么,我会非常感激.是的,我看到第二个错误说我需要输入"Any"但我不明白如何实现一个可以根据需要进行更改的更改.显然,简单地将"a:Point"改为"a:Any"并不是一个可行的解决方案,所以我错过了什么?
我是protobufs的新手,并试图了解更多关于使用它们的信息.我已经下载了从这里打包的protobuf .存档的examples文件夹中有一个README.txt文件,它提供了有关如何构建2个示例应用程序的说明.但是当我按照这些说明构建java应用程序时:
make java
Run Code Online (Sandbox Code Playgroud)
我得到了很多错误,然后是:
100个错误
:* [javac_middleman]错误1
所有100个错误似乎都与类路径相关,因为这是一个典型的例子:
com/example/tutorial/AddressBookProtos.java:37:错误:包com.google.protobuf不存在
关于如何通过这个的任何想法?
我正在用F#写一个lambda演算,但是我坚持实现beta-reduction(用形式参数代替实际参数).
(lambda x.e)f
--> e[f/x]
Run Code Online (Sandbox Code Playgroud)
用法示例:
(lambda n. n*2+3) 7
--> (n*2+3)[7/n]
--> 7*2+3
Run Code Online (Sandbox Code Playgroud)
因此,我希望听到一些关于其他人如何做到这一点的建议.任何想法将不胜感激.
谢谢!
我对Wicket很新,所以请原谅我这是一个简单的任务.我试图寻找例子但是空洞的.
这是场景.假设我有一个客户信息面板,包含25个数据点(名称,dob,地址,电话等).我想在网站的许多不同页面中重用此面板.现在假设我在面板上显示的3个不同页面上有以下条件:
有没有办法使用相同的面板(减少代码重复),但根据面板加载到的当前页面控制其组件?
谢谢你的帮助!
我知道在Cassandra上线时可以拍摄快照.这样做是在每个列族目录中创建一个快照子目录,并在其中放置列族的副本.但我不知道这是否可行,因为根本没有文件锁定,或者如果快照指令只是在复制之前等待文件解锁.
有谁知道Cassandra如何与数据目录中的文件进行交互?行为操作系统是否依赖?