小编Eug*_*ako的帖子

摆脱SBT产生的*一切*的简单方法?

是否有一种简单的方法可以摆脱因执行SBT构建而生成的所有内容?事实证明它在整个地方创建了目标目录.表演

sbt clean clean-cache clean-lib clean-plugins
Run Code Online (Sandbox Code Playgroud)

......并没有摆脱一切.

scala sbt

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

emacs - Emacs Lisp模式下的自动完成

最近我发现了M-x ielm(Emacs自我REPL)并且惊喜地发现在该模式下有一个工作制表符完成.说,我可以开始打字ecb-,然后点击TAB,ielm并告诉我ECB公开了哪些功能.非常方便探索!

但是,当我开始编辑我的一个*.el文件时(在Emacs Lisp主模式下),TAB不再作为自动完成工作并执行缩进,我觉得这很不幸.

我试图弄清楚自动完成是如何工作的ielm,以便可能将其移植到Emacs Lisp模式.然而,显然,在ielm使用中自动完成comint-dynamic-complete,据我所知,它只适用于comint基于缓冲区.我想,这意味着我在这里运气不好.

那么,我如何为Emacs Lisp启用自动完成功能呢?

emacs

23
推荐指数
1
解决办法
5810
查看次数

使用Scala进行无噪声JSON处理

我来自一个dotnet的土地,但最近一直在研究替代编程语言的可能性.没有什么比这更重要的了,只是在这里和那里.最近我发现了Scala,我非常着迷它.尽管有非确定性的修补,但我已经对C#中的一些重要事项做了一些中间检查,我感到相当满意:功能概念 - tick,ad-hoc多态 - tick,注释 - tick,reflection和codegen - tick.

现在我正在考虑如何在DLR和"动态"语法糖的帮助下编写我在C#4.0中实现的JSON处理库的模拟.这是我正在寻找的功能集:

  1. 方便浏览和构建原始JSON.
  2. JSON和本机对象/集合之间的自动转换(在一般形式中,问题是无法解决的,尽管可以定义95%的时间可以工作的约定 - 这对我来说很好).

C#4.0的新功能在这里有点摇滚,因为它们让我覆盖成员访问和类型转换以执行完全自定义逻辑(如果C#4.0中的变量被输入为"动态",那么你用它做的任何事情都将被编译成调用具有合理默认行为的程序员定义的方法 - 有关详细信息,请参阅MSDN上的DynamicMetaObject.BindXXX方法.例如,我重写了类型转换以序列化/反序列化.NET对象和成员访问以管理原始JSON,以便我可以编写以下代码:

var json = Json.Get("http://some.service");
if (json.foo) Console.WriteLine((Foo)json.foo);
json.bars = ((List<Bar>)json.bars).DoSomething();
Run Code Online (Sandbox Code Playgroud)

当然,这并不理想,因为C#4.0中的动态绑定存在扩展方法和类型推断的问题,而且,代码仍然感觉相当重量级.但无论如何,这比使用所有那些((JsonObject)json ["quux"])["baz"]要好得多在c#3.5中.

一些基础研究表明,Scala没有支持后期绑定的专用语言功能.然而,有很多技巧可能它们可以一起用于创建上面显示的代码的可承受仿真(甚至更好 - 我几乎可以肯定这是可能的).拜托,请你在这里告诉我什么?

dsl json scala

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

"动态"使用宏创建案例类

我想创建一个密封的抽象和案例类的宏生成层次结构.有一个与http://docs.scala-lang.org/overviews/macros/typemacros.html类似的例子,但现在已经过时了.这还有可能吗?

我认为为某些指定的语法生成类型安全的AST会非常强大.理想情况下,IDE可以解析所有类.

scala case-class scala-macros

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

在Maven项目中启用宏天堂Scala编译器插件

我只是通过将scala-reflect.jar库作为pom中的依赖项包含普通scala-2.10宏在maven项目中工作,但是我需要打开宏天堂呢?我使用的是scala-2.10和scala-maven-plugin-3.1.5.

scala maven scala-2.10 scala-maven-plugin scala-macros

12
推荐指数
1
解决办法
3395
查看次数

在scala内搜索2.10 AST

在scala 2.10 AST中递归搜索元素的最佳方法是什么?

树可能是power.trees(code)mirror.mkToolBox().parseExpr(code) 编辑的结果.在2.10.0-RC1 parseExpr中已重命名为parse.

我具体的用例是通过方法名称从给定的类/对象代码中提取方法的代码,但我认为如果以更通用的方式表达,问题将更加相关.

scala abstract-syntax-tree parse-tree scala-2.10

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

emacs - 如何在子目录中进行查找文件搜索

我想为Emacs实现Resharper的"Go To File"功能.当按下提到的快捷方式时,Resharper弹出一个接受通配符字符串的文本框,并显示一个自动完成菜单,列出项目中与该通配符匹配的所有文件:

"转到文件"对话框http://www.jetbrains.com/resharper/features/screenshots/50/navigation_gotofile.png

就目前而言,我知道一种粗略的方式来实现或多或少等同的东西.它涉及运行diredwith -lR然后调用dired-isearch-filenames- 这将开始对某些根目录中的整个文件层次结构进行增量搜索.

UPD.我也知道打开缓冲区的选项,将它们全部保存在内存中并使用switch-to-buffer.这个解决方案可以很好地使用ido,但它不是100%防弹(如果添加或删除某些文件会怎么样?).它也不能很好地使用tabbar,因为选项卡将显示项目中包含的所有文件,但不会显示代表我当前上下文的项目的子集.

但是,这显示了许多不必要的信息,缺乏自动完成功能.我已经采取一看idoicicles,但他们似乎只在当前目录下浅的工作.是否有Emacs插件可以帮助我实现目标?

emacs icicles

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

如何在Scala 2.10中反映注释?

我试图发现特征的值是否有与之关联的注释.回顾斯卡拉2.10-M7反射API后,我认为getAnnotations方法(位于符号)可能是一个伟大的候选人,但它返回一个空的列表,如下面的REPL会话:

scala> class W extends scala.annotation.Annotation
defined class W

scala> trait A { @W val a: Int }
defined trait A

scala> typeOf[A].members.last
res0: $r.intp.global.Symbol = value a

scala> res0.getAnnotations
res1: List[$r.intp.global.AnnotationInfo] = List()
Run Code Online (Sandbox Code Playgroud)

这些"注释"是否与我试图处理的注释相同?我怎么知道a是否用W注释?

reflection annotations scala scala-2.10

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

Scala API 2.10.*:Function2.andThen发生了什么?

我正在阅读Joshua Suereth写的"Scala in Depth",这本书是我为作者明确建立的能力而购买的.我在第3页,经过一堆拼写错误和不连贯的格式化(好吧,我已经容忍了这些错误)我偶然发现了以下关于解决一个非常简单的场景的功能方法的例子.

trait Cat
trait Bird
trait Catch
trait FullTummy

def catch(hunter: Cat, prey: Bird): Cat with Catch
def eat(consumer: Cat with Catch): Cat with FullTummy

val story = (catch _) andThen (eat _)
story(new Cat, new Bird)
Run Code Online (Sandbox Code Playgroud)

我谨慎地举了这个例子,前提是它显然是一个蓝图(没有具体的方法被定义......)......«catch»显然是另一个错字,前提是它是一个保留字...... Cat并且Bird不可实例化......

......但是,尽管这个例子的质量很差,但我不能认为根据功能构成定义的«故事»val(andThen是"反向关联" compose)是另一个意外的错误,前提是它是这个例子的核心.

实际上,该示例不会在我的本地版本的Scala(2.10.1)上编译,并且在最新版本(2.10.2)上也没有记录.

毫无疑问它的用处和实现很容易实现(如下):

trait Function2ex[-T1, -T2, +R] extends Function2[T1, T2, R] {
  def andThen[A](g: R => A): (T1, T2) => A = { (x, y) => g(apply(x, y)) } …
Run Code Online (Sandbox Code Playgroud)

api scala function-composition

7
推荐指数
1
解决办法
613
查看次数

在没有灵性的情况下确保卫生

使用reify和编写Scala中的卫生宏很容易eval.但是并不总是可以使用reifyeval.

那么,如果一个人不能使用它们,那么确保宏是卫生的规则是什么?有没有办法测试一个宏,以确保没有不良卫生已经滑过裂缝?

UPD.在后来的里程碑2.10.0中,Expr.eval重命名为Expr.splice.

scala

6
推荐指数
1
解决办法
437
查看次数