小编Ser*_*bei的帖子

monad绑定(>> =)运算符更接近函数组合(链接)或函数应用程序吗?

在许多文章中我都读过monad >>=运算符是一种表示函数组合的方法.但对我来说,它更接近某种高级功能应用程序

($)   :: (a -> b) -> a -> b
(>>=) :: Monad m => m a -> (a -> m b) -> m b
Run Code Online (Sandbox Code Playgroud)

对于我们的构图

(.)   :: (b -> c) -> (a -> b) -> a -> c
(>=>) :: Monad m => (a -> m b) -> (b -> m c) -> a -> m c
Run Code Online (Sandbox Code Playgroud)

请澄清.

monads haskell functional-programming bind category-theory

18
推荐指数
2
解决办法
2797
查看次数

Scala匿名函数语法和返回类型

我在scala中发现了几种匿名函数语法:

val m5_1 = { (n: Int) => n * 5 }

val m5_2 = (n: Int) => { n * 5 } : Int

val m5_3: Int => Int = n => { n * 5 }
Run Code Online (Sandbox Code Playgroud)

是否存在所有类型或更多语法类型?

它们都相同吗?

哪一个更受/更不受欢迎?

如何指定返回类型m5_1

scala anonymous-function

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

Scala 各个地方的类型参数

我刚刚开始学习 Scala 并且对类型参数的一般理解有一些问题。以前我学习了 Haskell,但在 Scala 中它对我来说似乎很混乱。我不清楚应该把类型参数放在哪里(靠近类定义或函数定义)。

考虑这个例子:

class Person[A] {
  def sayName (name: A) = println(name)
}
Run Code Online (Sandbox Code Playgroud)

将类型参数从类移动到函数是否有意义?

class Person {
  def sayName[A] (name: A) = println(name)
}
Run Code Online (Sandbox Code Playgroud)

或者我什至可以在类和函数中保留类型参数,它会起作用。它有什么大的不同吗?函数中的 [A] 参数会覆盖类定义中的相同参数吗?

而且我可以创建 Person 的实例或调用函数而无需指向确切的类型。

val p = new Person();
Run Code Online (Sandbox Code Playgroud)

那么这是为什么呢?只是在我想要通用的情况下?所以我不清楚我应该在什么时候以及在哪个位置(类或函数)放置类型参数。

oop types functional-programming scala

2
推荐指数
1
解决办法
2737
查看次数