我知道在IO运算符的Scalaz中有一些几乎相同的实现putStrLn :: String -> IO (,getLine :: IO String但是我的意思是Scala标准API为什么没有这样的等价物?我知道Scala不是Haskell的纯语言,并且有副作用,但我认为这种数据类型是如此描述性和有用.我不知道Try,Option还是Either会做的工作.
我想知道如果有一个typeclass在猫或Scalaz它提供了一个操作是这样的:
def scan[G[_],A,B](zero: B)(g: G[A],f: (A,B) => B):G[B]
Run Code Online (Sandbox Code Playgroud)
或者,如果存在这样的运算符的某种数学定义(类似于Monadfor bind/flatMap).
这样做的想法是typeclass将二进制函数应用于类型构造函数并获取相同类型的构造函数,但使用不同的类型参数(二进制函数返回的相同类型).
我认为与scanLeftScala标准库集合类似.
我正在学习javascript.我遇到了这个问题并尝试使用javacript中的currying来解决它但是无法正确解决它.
给定一个函数pipe(),它将几个函数作为参数并返回一个将其参数传递给第一个函数的新函数,然后将结果传递给第二个函数,然后传递给第三个函数,依此类推,返回最后一个函数的输出.所以给出:pipe(foo, bar, baz)(1, 2, 3)例如,相当于baz(bar(foo(1,2,3))).
我将如何在javascript中解决这个问题?