在许多文章中我都读过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)
请澄清.
我在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 并且对类型参数的一般理解有一些问题。以前我学习了 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)
那么这是为什么呢?只是在我想要通用的情况下?所以我不清楚我应该在什么时候以及在哪个位置(类或函数)放置类型参数。