小编mis*_*tor的帖子

Python和Smalltalk - 元编程功能比较

我最近一直在学习Python,并且对其出色的运行时元编程功能感到惊讶.以前我遇到过"运行时元编程"这个术语,当时我正在阅读关于Smalltalk的内容,据我所知,Smalltalk拥有最佳的运行时元编程功能.Python与Smalltalk和元编程相比有多好?两种语言采用的方法之间有什么显着差异?

python oop programming-languages smalltalk metaprogramming

10
推荐指数
2
解决办法
1303
查看次数

10
推荐指数
3
解决办法
1576
查看次数

为什么PartialFunction上没有orElse方法接受一个总函数?

为什么课堂上没有跟随签名的方法PartialFunction[A, B]

def orElse[A1 <: A, B1 >: B](that: A1 => B1): A1 => B1
Run Code Online (Sandbox Code Playgroud)

缺少这种方法背后有一些合乎逻辑的原因,还是仅仅是疏忽?

functional-programming scala

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

选项上的折叠关系是什么,是等等还是折叠在Traversable上?

Scalaz提供了一个名为方法fold关于各种ADT的如Boolean,Option[_],Validation[_, _],Either[_, _]等.该方法基本上发生在对应于所有可能的情况该给定ADT的功能.换句话说,模式匹配如下所示:

x match {
  case Case1(a, b, c) => f(a, b, c)
  case Case2(a, b) => g(a, b)
  .
  .
  case CaseN => z
}
Run Code Online (Sandbox Code Playgroud)

相当于:

x.fold(f, g, ..., z)
Run Code Online (Sandbox Code Playgroud)

一些例子:

scala> (9 == 8).fold("foo", "bar")
res0: java.lang.String = bar

scala> 5.some.fold(2 *, 2)
res1: Int = 10

scala> 5.left[String].fold(2 +, "[" +)
res2: Any = 7

scala> 5.fail[String].fold(2 +, "[" +)
res6: Any = 7
Run Code Online (Sandbox Code Playgroud)

同时,对于Traversable[_] …

functional-programming scala category-theory scalaz catamorphism

10
推荐指数
2
解决办法
2031
查看次数

如何提交和推送所有更改,包括删除?

如何在一个命令中提交和推送所有更改,包括添加,版本和文件删除等?

git

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

GO-斯卡拉 - 走!有哪些主要区别?

我刚刚发现这个网页比较了一些用Scala,C#和Go编写的代码.我很惊讶看到Scala和Go代码看起来有多接近,比Scala代码与C#代码相比要多得多.

所以我的问题是:Scala和Go之间最重要的区别是什么?

c# programming-languages scala go

9
推荐指数
3
解决办法
4377
查看次数

Lazily评估了索引序列类型

我需要构建一个从外部资源加载的对象序列.这种负载是昂贵的操作需要延迟到需要对象的时间.构建集合后,我需要对包含的对象进行索引访问.Scala标准库是否提供适合此用例的集合?如果没有,实施它的最佳方式是什么?

编辑:
索引查找最好是O(1)操作.

collections scala lazy-evaluation scala-collections

9
推荐指数
2
解决办法
487
查看次数

如何在Clojure中编写monoid协议?

由于显而易见的原因,以下内容不起作用.

(defprotocol Monoid
  (mappend [a b])
  (mzero []))
Run Code Online (Sandbox Code Playgroud)

mzero零参数,协议中不允许(或没有意义)零参数方法.在Haskell或Scala中,调度是基于类型而不是基于值的,这不是问题.

Monoid在Clojure中概念化和编写协议的正确方法是什么?

functional-programming clojure monoids

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

抓住错误抛出"错误"?

有一些stdlib函数会在无效输入上抛出错误.例如:

Prelude> read "1o2" :: Int
*** Exception: Prelude.read: no parse
Run Code Online (Sandbox Code Playgroud)

我想把它包起来Either e a代替.我怎样才能做到这一点?

haskell exception-handling either

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

进入运行Play应用程序的交互式控制台

在Play中,我可以启动交互式控制台,然后在其中启动应用程序,如下所示:

[app] $ console

scala> new play.core.StaticApplication(new java.io.File("."))
Run Code Online (Sandbox Code Playgroud)

同样可以放入已经运行的Play应用程序的交互式控制台吗?在野外是否有SBT任务可以做到这一点?

scala playframework

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