小编Ste*_*haw的帖子

Homebrew的多个并排版本?

是否可以与Homebrew并排安装多个版本?

我发现自己处于需要sbt-0.7.x,sbt-0.10.x和sbt-0.11.0的情况.我现在手动安装了sbt-0.7.7和sbt-0.10.1来解决这个问题(sbt-0.11.0是来自Homebrew的最新'sbt').

homebrew

40
推荐指数
3
解决办法
9043
查看次数

我应该避免使用Monad失败吗?

我对Haskell相当新,并且慢慢地认为Monad的存在有问题.真实世界Haskell 警告不要使用它("再一次,我们建议你几乎总是避免使用失败!").我今天只注意到罗斯帕特森称之为"疣,而不是设计模式" 在2008年后(并似乎得到该线程颇有些协议).

在观看RalfLämmel博士谈论函数式编程的本质时,我开始理解可能导致Monad失败的紧张局势.在讲座中,Ralf讨论了向基础monadic解析器添加各种monadic效果(日志记录,状态等).许多效果需要更改基本解析器,有时还需要更改使用的数据类型.我认为向所有monad添加'fail'可能是一种妥协,因为'fail'是如此常见,你想尽可能避免更改'base'解析器(或其他).当然,某种"失败"对于解析器来说是有意义的,但并不总是,例如,put/get of State或者ask/local of Reader.

如果我可能走错了轨道,请告诉我.

我应该避免使用Monad失败吗?Monad失败的替代方案是什么?是否有任何替代monad库不包括这个"设计疣"?我在哪里可以阅读有关此设计决策的历史更多信息?

monads haskell

34
推荐指数
3
解决办法
7169
查看次数

什么是Axiom K?

我注意到自从HoTT以来,"Axiom K"的讨论经常出现.我相信它与模式匹配有关.我很惊讶我在TAPL,ATTAPL或PFPL中找不到参考.

  • 什么是Axiom K?
  • 它是否用于ML样式的模式匹配,如SML(或只是依赖模式匹配)?
  • 什么是Axiom K的适当参考?

programming-languages pattern-matching agda dependent-type

31
推荐指数
1
解决办法
1617
查看次数

OCaml内部:例外

我很想知道如何在OCaml运行时处理异常以使它们如此轻量级.他们使用setjmp/longjmp还是在每个函数中返回一个特殊值,然后传播它?

在我看来,longjmp会给系统带来一点压力,但只有当引发异常时,检查每个函数的返回值才需要在调用函数后检查每个值和每个值,这在我看来会很多检查和跳跃,似乎表现最差.

通过查看OCaml如何与C接口(http://caml.inria.fr/pub/docs/manual-ocaml/manual032.html#toc142),并查看callback.h,似乎通过使用标记异常对象的内存对齐(#define Is_exception_result(v)(((v)&3)== 2)).这似乎表明它的实现不使用longjmp并在每次函数调用后检查每个函数结果.是吗?或者C函数已经尝试捕获任何异常,然后将其转换为这种格式?

谢谢!

compiler-construction ocaml exception internals longjmp

21
推荐指数
1
解决办法
1952
查看次数

防止关于Macports/Fink安装的警告

每当我安装东西时,如何防止Homebrew出现以下警告?

警告:您似乎安装了MacPorts或Fink.与其他软件包管理器一起安装的软件会导致Homebrew的已知问题.如果公式无法构建,请卸载MacPorts/Fink并重试.

请注意,我从未(我记得)在这台机器上安装了Fink,而我只是卸载了Macports.我试过从我的PATH中删除/ opt/local/bin无济于事.

homebrew

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

什么是"分歧隐含扩展"scalac消息意味着什么?

我创建了一个小示例程序,试图找出更大程序没有编译的原因.

val o1: Ordered[Int] = 1
val o2: Ordered[Int] = 2
println(o1 < o2)
Run Code Online (Sandbox Code Playgroud)

当我把它喂给scala我得到:

Ordered.scala:3: error: diverging implicit expansion for type scala.math.Ordering[Ordered[Int]]
starting with method ordered in trait LowPriorityOrderingImplicits
println(o1 < o2)
        ^
one error found
Run Code Online (Sandbox Code Playgroud)

使用"-explaintypes"不再提供任何帮助.但是,"-Xlog-implicits"给出以下内容:

math.this.Ordering.comparatorToOrdering is not a valid implicit value for scala.math.Ordering[Ordered[Int]] because:
could not find implicit value for parameter cmp: java.util.Comparator[Ordered[Int]]
scala.this.Predef.conforms is not a valid implicit value for Ordered[Int] => java.lang.Comparable[Ordered[Int]] because:
type mismatch;
 found   : <:<[Ordered[Int],Ordered[Int]]
 required: Ordered[Int] => java.lang.Comparable[Ordered[Int]]
/Users/steshaw/Projects/playground/scala/programming-in-scala/Ordered.scala:3: error: …
Run Code Online (Sandbox Code Playgroud)

scala

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

为什么这个Haskell代码不会终止?

为什么以下Haskell代码不会终止:

foldr (||) True $ repeat False -- never terminates
Run Code Online (Sandbox Code Playgroud)

当这样的事情:

foldr (||) False $ repeat True -- => True
Run Code Online (Sandbox Code Playgroud)

对我来说,这是第二个看起来更难以终止的表达.我对Haskell懒惰评估的看法有什么问题?

haskell

13
推荐指数
3
解决办法
663
查看次数

Agda没有K那么强大吗?

作为什么是Axiom K的后续行动,我想知道当你使用Agda --without-k选项时会发生什么.结果不那么强大吗?它是一种不同的语言还是所有以前的程序仍然打字检查?

pattern-matching agda dependent-type

11
推荐指数
1
解决办法
598
查看次数

inline-c和language-c-inline之间有什么区别?

我一直在简要地研究Haskell的准引用库.这些库允许Haskell与其他语言集成.为了与C集成,似乎有两个具有类似功能的包:

由于我正在构建自己的准引用库,我对设计选择,API差异,性能等感兴趣.

我所知道的唯一区别是language-c-quote支持C和Objective-C,而inline-c支持C.

你会如何区分这些包裹?有什么根本区别?事实上,它们是否相似?

haskell ghc template-haskell

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

Scala类型的lambda是否需要反射调用?

我正在使用类型为lambdas的许多代码,并注意到IntelliJ警告我它是"高级语言功能:反射调用".

示例代码:

implicit def monoidApplicative[M](M: Monoid[M]) =
  new Applicative[({ type f[x] = Const[M, x] })#f] {
    def unit[A](a: => A): M = M.zero
    override def apply[A,B](m1: M)(m2: M): M = M.op(m1, m2)
  }
Run Code Online (Sandbox Code Playgroud)

注意:我认为这可能是IntelliJ Scala插件的一个错误,因为在编译时解析类型lambdas是有意义的.

scala intellij-idea

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