小编mis*_*tor的帖子

"编程代码"在编程环境中意味着什么?

我在函数式编程和PLT圈子中多次听到过"enggebras"这个术语,特别是在讨论对象,comonads,镜头等时.谷歌搜索这个术语给出了对这些结构进行数学描述的页面,这对我来说几乎是不可理解的.任何人都可以解释一下代数在编程环境中的意义,它们的意义是什么,以及它们与对象和共同体的关系?

haskell functional-programming scala category-theory recursion-schemes

334
推荐指数
4
解决办法
3万
查看次数

std :: for_each优于for循环的优点

std::for_eachfor循环有什么优点吗?对我来说,std::for_each似乎只是阻碍了代码的可读性.为什么有些编码标准推荐使用?

c++ foreach stl coding-style

158
推荐指数
9
解决办法
11万
查看次数

为什么Java不允许从静态初始化块中抛出已检查的异常?

为什么Java不允许从静态初始化块中抛出已检查的异常?这个设计决定背后的原因是什么?

java exception static-initializer

128
推荐指数
4
解决办法
8万
查看次数

依赖方法类型有哪些引人注目的用例?

依赖方法类型以前曾是一个实验性功能,现在默认情况下已在中继中启用,显然这似乎在Scala社区中引起了一些兴奋.

初看起来,这并不是显而易见的.Heiko Seeberger在这里发布了一个简单的依赖方法类型示例,从评论中可以看出,可以很容易地在方法上使用类型参数进行复制.所以这不是一个非常引人注目的例子.(我可能会遗漏一些明显的东西.如果是这样,请纠正我.)

对于依赖方法类型的用例有哪些实用且有用的例子,它们明显优于替代方法?

我们可以用以前不可能/容易的事情做些什么有趣的事情?

他们通过现有的类型系统功能为我们买了什么?

此外,依赖方法类型是否类似于或从其他高级类型语言(如Haskell,OCaml)的类型系统中找到的任何功能中汲取灵感?

haskell type-systems programming-languages scala dependent-method-type

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

更新嵌套结构的更清洁方法

说我有以下两个case classes:

case class Address(street: String, city: String, state: String, zipCode: Int)
case class Person(firstName: String, lastName: String, address: Address)
Run Code Online (Sandbox Code Playgroud)

和以下Person类的实例:

val raj = Person("Raj", "Shekhar", Address("M Gandhi Marg", 
                                           "Mumbai", 
                                           "Maharashtra", 
                                           411342))
Run Code Online (Sandbox Code Playgroud)

现在,如果我想更新zipCode,raj那么我将不得不做:

val updatedRaj = raj.copy(address = raj.address.copy(zipCode = raj.address.zipCode + 1))
Run Code Online (Sandbox Code Playgroud)

随着嵌套水平的提高,这将变得更加丑陋.是否有更清洁的方式(像Clojure的东西update-in)来更新这样的嵌套结构?

scala zipper case-class

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

申请人撰写,monad没有

申请人撰写,monad没有.

上述陈述是什么意思?什么时候比其他人更好?

monads haskell functional-programming monad-transformers applicative

104
推荐指数
5
解决办法
1万
查看次数

选项[T]类有什么意义?

我无法理解Option[T]Scala中的课程要点.我的意思是,我不能看到任何advanages Nonenull.

例如,考虑代码:

object Main{
  class Person(name: String, var age: int){
    def display = println(name+" "+age)
  }

  def getPerson1: Person = {
    // returns a Person instance or null
  }

  def getPerson2: Option[Person] = {
    // returns either Some[Person] or None
  }

  def main(argv: Array[String]): Unit = {
    val p = getPerson1
    if (p!=null) p.display

    getPerson2 match{
      case Some(person) => person.display
      case None => /* Do nothing */
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

现在假设,该方法getPerson1返回null …

java monads null functional-programming scala

82
推荐指数
9
解决办法
9123
查看次数


应用风格的实际用途是什么?

我是Scala程序员,现在正在学习Haskell.很容易找到OO概念的实际用例和现实世界的例子,例如装饰器,策略模式等.书籍和互联网都充满了它.

我开始意识到这在某种程度上不是功能概念的情况.例证:申请人.

我正在努力寻找应用程序的实际用例.到目前为止,我遇到的几乎所有教程和书籍都提供了[]和的示例Maybe.我希望应用程序比这更适用,看到他们在FP社区中得到的所有关注.

我认为我理解申请人的概念基础(也许我错了),而且我已经等待了很长一段时间的启蒙.但它似乎并没有发生.从来没有在编程的时候,我有一个时刻,我会高兴地喊,"尤里卡!我可以在这里使用应用程序!" (再次,除了[]Maybe).

有人可以指导我如何在日常编程中使用应用程序吗?如何开始发现模式?谢谢!

f# haskell functional-programming scala applicative

68
推荐指数
8
解决办法
6557
查看次数

将类型与数据构造函数关联的ADT编码有什么问题?(比如Scala.)

在Scala中,代数数据类型被编码为sealed一级类型层次结构.例:

-- Haskell
data Positioning a = Append
                   | AppendIf (a -> Bool)
                   | Explicit ([a] -> [a]) 
Run Code Online (Sandbox Code Playgroud)
// Scala
sealed trait Positioning[A]
case object Append extends Positioning[Nothing]
case class AppendIf[A](condition: A => Boolean) extends Positioning[A]
case class Explicit[A](f: Seq[A] => Seq[A]) extends Positioning[A]
Run Code Online (Sandbox Code Playgroud)

随着case classES和case objectS,斯卡拉产生了一堆东西一样equals,hashCode,unapply(通过模式匹配使用)等这使我们的许多关键特性和传统的ADT功能.

但是有一个关键的区别 - 在Scala中,"数据构造函数"有自己的类型.比较以下两个例子(从相应的REPL复制).

// Scala

scala> :t Append
Append.type

scala> :t AppendIf[Int](Function const true)
AppendIf[Int]

-- Haskell

haskell> :t Append …
Run Code Online (Sandbox Code Playgroud)

haskell functional-programming scala playframework argonaut

68
推荐指数
1
解决办法
2311
查看次数