Смысл термина эмбиент в эмбиентной монаде - PullRequest
7 голосов
/ 20 июня 2020

Id в документации указано

Идентификационная монада ... ambient в том смысле, что простые чистые значения являются значениями Id .

Что такое эмбиент? Как термин окружающий связан со значением чистых значений ? Почему мы можем сказать чистое значение из Id, когда Id является конструктором типа? Опять же, это Id на самом деле конструктор типа или правильный тип, потому что команды :kind не выводят

scala> type Id[A] = A
type Id

scala> :kind -v Id


scala>

1 Ответ

3 голосов
/ 20 июня 2020

ambient - это не термин, связанный с FP или системой типов, а скорее метафора. Метафоры никогда не объясняют что-либо с идеальной точностью, поэтому вы можете только догадываться и «чувствовать». *

Говоря plain pure values are values of Id, они означают, что значение любого типа также является значением Id[_].

val i:Id[Int] = 3:Int
val s:Id[String] = "3":String

Вы можете думать о type Id[A] = A как о «функции для типа», которая возвращает свой параметр A.

Примерно так, но на уровне типа:

def Id[T](i:T):T = i

Нет такого термина, как «функция для типов», но каждый конструктор типа является своего рода «функцией для тип". Они являются аналогом функций на системном уровне типов.

...