如何在 scala/cats-effect 中表达术语 F[_]

Whi*_*eyJ 5 scala http4s cats-effect

我正在学习 F[_] 作为其他类型的构造函数的概念,但是你如何向另一个人发音或在你的脑海中说出它(对于我们内部独白思考者)。

类似于“xx => x + 1x 加一”的官方语言,我的内心独白是如何解析的?def stream[F[_]: Async]: Stream[F, Nothing] = ...

编辑:我已经开始将其称为“Flunderscore”,但我非常担心,如果我继续这样做,我会搞砸并在专业环境中说出这样的话。请帮忙。

小智 1

一般来说,这是一个效果或程序,但我发现程序在脱离 FP 上下文进行解释时更容易理解;以函数式的思维方式,我们可以将每个值视为一个程序,并且将每个程序视为值,因此我们可以将其视为创建程序的程序。

例如:

  1. 以下是一个程序,对于任何程序类型 F,接受一个整数并创建一个输出整数的 F 程序
def foo[F[_]](i: Int): F[Int] = ???
Run Code Online (Sandbox Code Playgroud)

这是一个荒谬的程序(无法实现)

  1. 下面是另一个程序,对于任何可以顺序组成的程序类型 F,接受一个整数并返回一个输出整数的 F 程序
def bar[F[_]: Monad](i: Int): F[Int] = ???
Run Code Online (Sandbox Code Playgroud)

请注意,类似容器List[T]和其他容器的类型也是程序,它们输出一系列值。